打开使用SpreadSheetGear创建的xlsx文件

时间:2014-10-29 15:44:16

标签: excel spreadsheetgear

我使用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生成的文件附件一样打开?

1 个答案:

答案 0 :(得分:3)

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等中无法按预期显示

相关问题