【问题标题】:Opening xlsx file created with SpreadSheetGear打开使用 SpreadSheetGear 创建的 xlsx 文件
【发布时间】:2014-12-25 09:59:21
【问题描述】:

我使用 SpreadSheetGear 创建了一个简单的 Excel 文件。如果我将其保存为 xls 文件

workbook.SaveAs("file.xls", SpreadsheetGear.FileFormat.Excel8);

并将其附加到电子邮件中,我可以在手机上打开它(已在 iPhone 和 Android 上测试过)。

如果我将它保存为 xlsx 文件

workbook.SaveAs("file.xlsx", SpreadsheetGear.FileFormat.OpenXMLWorkbook);

并将其附加到电子邮件中,我无法在手机上打开它。

如果我在我的计算机上打开 xlsx 文件附件并保存它而不做任何更改并将其附加到电子邮件中,我现在可以在我的手机上打开它。

显然 Excel 以不同于 SSG 的方式保存文件。 xlsx 文件附件的文件大小为 9 KB。当我在电脑上打开并保存时,新文件大小为 24 KB。

我的一些用户更喜欢 xlsx 格式。有什么办法可以让 SSG 生成的文件附件像 Excel 生成的文件附件一样打开?

【问题讨论】:

    标签: excel spreadsheetgear


    【解决方案1】:

    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);
    

    有关此功能的详细信息,请参阅 SpreadsheetGear.IWorkbookSet.Experimental 属性。

    据我所知,iOS/Andriod/etc 通常还依赖于 SpreadsheetGear 不支持或默认写入的文件格式中可用的其他某些可选功能。例如,iOS 依靠存储在图表中的“数据缓存”来显示图表系列数据点,而 SpreadsheetGear 对写出此数据缓存的支持是有限的。这可能会导致图表在 iOS、Android 等中无法按预期显示。

    【讨论】:

    • 成功了!谢谢,很好的解释。我永远也想不通这个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-19
    • 1970-01-01
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    相关资源
    最近更新 更多