1

我以编程方式生成 SpreadsheetML,捆绑在 .xlsx 文件中。这些文件可以在 Windows、OSX 和 iOS 上的 Excel 上完美打开。但是在 OSX 或 iOS 上使用 Preview 或 Numbers 时,文件不会显示任何内容。看来 Preview 和 Numbers 仅支持 SpreadsheetML 的一个子集。有人知道 Preview 支持的 SpreadsheetML 子集的规范吗?

4

1 回答 1

1

我在这方面有一点经验,编写了我们使用 Xamarin 移植到 iOS 的 .Net SML 导出器的部分内容。我们的导出器故意使用尽可能少的完整格式的功能,因为我们对这段代码的作用是导出具有最小格式的报告,并且缺少任何真正的“多媒体”,如图表等。这种格式确实在 Excel 和 Numbers 中打开IOS。

一个 SML 工作表至少需要一个 workbook.xml,至少一个sheetNN.xml,然后将它们压缩起来。但是,我不相信这种描述实际上会起作用,即使在 Windows 上也是如此。

我们开发的最小集有一个包含[Content_Types].xml文件、_rels文件夹和文件夹的外部文件xl夹。_rels包含一个文件,.rels,它基本上只是指向worksheet.xml. xl包含另一个_rels包含单个文件workbook.xml.rels,指向工作表。最后xl还有一个worksheets包含每个 sheetNNN.xlm 的文件夹,以及根目录下的styles.xmland workbook.xml

我建议这样做:

  1. 在 Windows Excel 上制作一个非常简单的工作簿。将扩展名更改为 .zip,然后将其解压缩到一个文件夹中,然后制作一份副本。
  2. 找到一个不在上面列表中的项目,然后将其删除。在文本编辑器中编辑其他文件并删除指向已删除文件的所有链接。
  3. 重新压缩文件夹(这可能很烦人,如果您在命令行之外执行此操作,您可能最终会得到 zip 中的文件夹)并尝试在 Excel 中打开它。
  4. 如果打开,请在 Mac 上的 Numbers 表格中试用。
  5. 重复 (2) 和 (3)

这将既费时又烦人,但我不确定还有其他方法可以确定。我怀疑_rels 数据并不是真正需要的,但我还没有深入兔子洞。

于 2017-07-10T14:38:28.870 回答