Dan*_*iel 1 excel spreadsheetgear
我使用 SpreadSheetGear 创建了一个简单的 Excel 文件。如果我将其另存为 xls 文件
workbook.SaveAs("file.xls", SpreadsheetGear.FileFormat.Excel8);
Run Code Online (Sandbox Code Playgroud)
并将其附加到电子邮件中,我可以在手机上打开它(在 iPhone 和 Android 上进行了测试)。
如果我将其另存为 xlsx 文件
workbook.SaveAs("file.xlsx", SpreadsheetGear.FileFormat.OpenXMLWorkbook);
Run Code Online (Sandbox Code Playgroud)
并将其附加到电子邮件中,我无法在手机上打开它。
如果我在计算机上打开 xlsx 文件附件,不做任何更改地保存并将其附加到电子邮件中,那么我现在可以在手机上打开它。
显然 Excel 保存文件的方式与 SSG 不同。xlsx 文件附件的文件大小为 9 KB。当我在计算机上打开它并保存时,新文件大小为 24 KB。
我的一些用户更喜欢 xlsx 格式。我可以做些什么来使 SSG 生成的文件附件像 Excel 生成的文件附件一样打开吗?
iOS 依赖于 Open XML 文件格式的工作表数据中存在的某些属性来正确解析这些文件。SpreadsheetGear 不会写出这些属性,因为它们在 Open XML 文件格式规范中被列为可选属性,而且,正如您所指出的,省略它们会减少文件大小。无论出于何种原因,Excel 总是写出这些可选属性,而其他第三方组件通常依赖它们的存在才能正常运行。SpreadsheetGear V5 添加了一种解决方法,通过启用某个“实验”选项来写出这些属性。添加此选项是因为 OLE DB 提供程序也表现出此错误行为。您可以尝试以下操作,看看这是否有助于让 SpreadsheetGear 更好地与您的查看器配合使用:
IWorkbookSet workbookSet = Factory.GetWorkbookSet();
workbookSet.Experimental = "OleDbOpenXmlWorkaround";
IWorkbook workbook = workbookSet.Workbooks.Open(@"C:\temp\BadWorkbook.xlsx");
workbook.SaveAs(@"C:\temp\GoodWorkbook.xlsx", FileFormat.OpenXMLWorkbook);
Run Code Online (Sandbox Code Playgroud)
请参阅 SpreadsheetGear.IWorkbookSet。实验属性以获取有关此功能的更多信息。
据我所知,iOS/Andriod/等通常还依赖于 SpreadsheetGear 不支持或默认写入的文件格式中提供的其他某些可选功能。例如,iOS 依赖于存储在图表中的“数据缓存”来显示图表系列数据点,而 SpreadsheetGear 对写出此数据缓存的支持是有限的。这可能会导致图表在 iOS、Android 等设备中无法按预期显示。
| 归档时间: |
|
| 查看次数: |
2930 次 |
| 最近记录: |