ms-office – 使用Office“开放式”XML – 它有多难?

我正在考虑直接使用Office XML格式替换(非常)大量的Office自动化代码.我刚刚开始,但我已经担心这太重要了.

我将处理Word,Excel和PowerPoint.到目前为止,我只看了Word和Excel.看起来Word文档应该相当容易操作,但Excel工作簿看起来像一场噩梦.例如…

在Word中,看起来您只需删除相应的“w:p”标记即可删除段落.但是,提供的用于删除Excel中的行的代码段大约需要150行代码(!).

Excel代码如此之大的原因是删除行意味着更新所有后续行的行索引,修复“共享字符串”表等.根据顶部的注释,代码片段甚至不完整因为它不会处理有表格的工作簿(我可以忍受).

我不清楚的是这是否是示例代码的唯一限制.例如,如果工作簿包含数据透视表,是否还会出现问题?或者引用同一张表中数据的图表?或者一些命名的范围?您是否还必须更新引用行索引已更改的行的任何单元格(等)的公式?

[更不用说“计算链”了,(谢天谢地)我认为你可以简单地删除,因为它只是一个可以重建的chache.

这就是我的问题,虽然它是毛茸茸的.你有多努力去做一些像正确删除行一样简单的事情?这是一项不可逾越的任务吗?

此外,如果还有其他类似的问题,无论是使用Excel还是使用Word或PowerPoint,我现在都喜欢听到它们,之后我浪费了太多时间去了一条死胡同.谢谢.

最佳答案
现在已经使用Open XML SDK 2.0近两年了,我可以说做一些看似琐碎的任务可能需要花费很多时间甚至几天来弄清楚如何正确地完成它.例如,删除Excel行应该相当简单易行吗?不,因为您不仅需要代码来删除您的行,而且您必须更新所有行索引,更新任何合并的单元格引用,更新超链接引用等.我们的内部删除方法接近500行代码才能删除一排,我确信我们没有把所有的案例都考虑在内.

我最大的抱怨是缺乏关于如何完成最常见任务的文档. Open XML SDK上的MSDN部分非常有限,无论何时您需要执行任何复杂的操作,您都可以独立完成.我必须经常阅读Open XML标准来弄清楚某些元素的含义以及它们应该如何实现,因为我在网上找不到什么.

另一个具有挑战性的部分是,如果您在不属于某个元素的位置插入元素或在元素上放置无效属性,则在尝试打开它时会出现损坏的文件.大多数情况下,您将无法获得有关导致错误的原因的任何信息,您将不得不查看Open XML标准规范以查看您做错了什么.

如果您需要快速周转时间将Office自动化代码转换为Open XML,而您正在做的事情并不是真正基本的,那么我会说通过.如果你有时间和耐心阅读Word,Excel和PowerPoint XML结构并熟悉它们之间的关系,那么我就说了.在我看来,这是对这些办公文档进行非常精细控制的唯一方法,但是当你开始时会有一个很好的学习曲线.

哦,只是为了好玩,这里需要多少代码才能在Excel cell中添加注释.

转载注明原文:ms-office – 使用Office“开放式”XML – 它有多难? - 代码日志