【问题标题】:How can I export the attributes of the cells in a selected range如何导出选定范围内单元格的属性
【发布时间】:2020-04-21 09:03:42
【问题描述】:

编辑: Excel 崩溃的原因是getCellProperties() 需要一个具有属性的对象作为参数提取。我觉得自己好傻。

上下文:我正在使用最新的 Office Javascript API 构建 Excel 插件。

基本上我想要实现的是提取所选范围的所有属性并将其转换为 JSON。这意味着,获取边框、字体、单元格值等。我已经看到有一些函数可以让我获取整个范围的某些属性,但是如果选定范围内的所有单元格,某些函数将返回 null集合属性的值不同。

到目前为止,我一直在考虑使用selectedRange.getCellProperties();,其中selectedRange 是用户在该范围内每个单元格的工作表中的当前选择,但由于某种原因,每当我尝试使用此功能时,Excel 都会崩溃。 因此,我能想到的唯一方法是通过在循环中使用循环为所选范围内的每个单元格手动提取这些属性。这当然不是最佳的性能,我相信有更好的解决方案可能。

我该怎么做呢?

感谢您抽出宝贵时间提供帮助!

【问题讨论】:

  • 您是否在 excel 崩溃时观察到错误消息?如果您可以为我们提供示例代码来重现此问题,那将非常有帮助。一个脚本实验室的要点会很棒。
  • @RaymondLu 我没有时间查看 Excel 崩溃时的错误消息,因为它会立即关闭窗口。我唯一能得到的是堆栈跟踪,这不是很有用,因为我不太了解它。不过,我会简要介绍一下我的程序。
  • 谢谢我明白了你的意思,但它似乎无法在我身边重现,看起来你需要一个非常复杂的工作簿?
  • 你的提示很有帮助,现在我可以用你的提示重现崩溃,记录了一个错误来跟踪这个问题。
  • @RaymondLu 很高兴知道我的错误可能有助于改进 Office Js。

标签: javascript excel office-js


【解决方案1】:

感谢您报告此问题。从 getCellProperties 中删除参数后,我可以重现崩溃。崩溃的 excel 是不对的,我已经记录了一个要跟踪的内部错误。

【讨论】:

    【解决方案2】:

    从性能考虑,也许你可以试试getRowProperties API?因为您可以一起检索一行中的所有属性。您可以将行属性转换为 JSON 字符串。性能可能会更好。

    文档可以在https://docs.microsoft.com/en-us/javascript/api/excel/excel.range?view=excel-js-preview#getrowproperties-rowpropertiesloadoptions-找到

    【讨论】:

    • 虽然您的建议可能会带来一些性能改进,但 getRowProperties 会为某些属性返回 null,如果它们在整行中不一致,那么这对我的需求来说是不可能的。
    【解决方案3】:

    (--我想在雷蒙德的回答下添加评论,但我没有足够的声誉,必须发布一个新的答案:()

    既然你已经知道 selectedRange.getCellProperties() 的崩溃原因,那么如何确保参数不为 null 呢? getCellProperties 是我所知道的适用于您的场景的最方便的方法。

    【讨论】:

    • @MandyMSFT 我使用了 getCellProperties,但没有必要检查 null 参数,因为我只给函数一个带有静态字段的对象,所以这里不会出错。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-27
    • 1970-01-01
    • 1970-01-01
    • 2017-05-25
    • 1970-01-01
    相关资源
    最近更新 更多