- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在考虑用直接使用 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 行代码来删除一行,我相信我们也没有考虑到所有的情况。
我最大的提示是缺乏关于如何完成最常见任务的文档。 MSDN Open XML SDK 上的部分非常有限,无论何时您需要做任何复杂的事情,您都需要靠自己。我必须阅读 Open XML标准很多,以确定某些元素的含义以及它们应该如何实现,因为我在网上几乎找不到。
另一个具有挑战性的部分是,如果您在一个元素不属于它的位置插入一个元素或在一个元素上放置一个无效的属性,当您尝试打开它时,您将得到一个损坏的文件。大多数情况下,您不会获得有关导致错误的原因的任何信息,您必须查看 Open XML 标准规范以了解您做错了什么。
如果您需要快速完成将 Office 自动化代码转换为 Open XML 的周转时间,并且您所做的并不是真正的基础,那么我会说通过。如果您有时间和耐心阅读 Word、Excel 和 PowerPoint XML 结构并熟悉它们之间的关系,那么我建议您继续阅读。在我看来,这确实是对这些办公文档进行非常精细控制的唯一方法,但是当您开始时,将会有一个很好的学习曲线。
哦,只是为了好玩,这里是向 Excel 添加注释需要多少代码 cell .
关于ms-office - 使用 Office "open"XML - 这有多难?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9004848/
我是一名优秀的程序员,十分优秀!