【发布时间】:2012-10-02 17:48:24
【问题描述】:
我正在使用 OpenXML SDK 创建一个电子表格。电子表格有几个工作表、样式等。
- 当我在 Excel 中打开文件时,它呈现正常,没有错误,并且正确显示所有单元格格式和数据。
- 当我在移动设备上打开文件时,根据应用程序的不同,我收到错误消息,表明文件已损坏或完全丢失。
我在 Excel 中打开了 .xlsx 文件并将其保存到另一个文件中;然后我对相应 zip 文件中的目录结构进行了比较。我注意到:
- 新副本(通过 Excel 的副本)现在可以在所有经过测试的移动应用上正确呈现。
- 只有新副本包括:
- /docProps
- /xl/主题
- docProps/app.xml
- docProps.core.xml
- docProps/theme1.xml
- 只有旧版本包括:
- /xl/worksheets/_rels/
- sheet#.xml.rels
- 修改后的文件:
- sheet#.xml
- sharedStrings.xml
- styles.xml
- workbook.xml
- [Content_Types].xml
在保存之前我需要对这个文件做些什么来解决这些冲突?
【问题讨论】:
-
也许您没有保存您创建的 xlsx 文件的某些部分。 Excel 可以处理它并显示文件,但其他一些编辑器没有它们就无法读取文件。不过这只是猜测。
-
我正在创建两个字体、一个边框、一个 CellStyleFormat、几个填充和几个 CellFormat 以将它们与单元格相关联,所有这些都包括所需的默认值。除了明显的工作表和零件等,还需要什么?这些 _rels 项目去哪里了?
-
通过调用
spreadsheet.WorkbookPart.WorkbookStylesPart.Stylesheet.Save();,确保单独保存样式表(如果添加了任何样式表)。 -
是的,我在样式文件中看到了我的样式信息 - 它在 Excel 本身中打开并正确显示。
-
很高兴您找到了解决方案。但是,我认为使用模板文件作为基础也可以解决此问题(并且不需要使用互操作)。
标签: c# openxml openxml-sdk