打开使用SpreadSheetGear创build的xlsx文件

我使用SpreadSheetGear创build了一个简单的Excel文件。 如果我把它保存为xls文件

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

并附加到电子邮件,我可以打开它在我的手机(testing与iPhone和Android)。

如果我把它保存为一个xlsx文件

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

并附加到电子邮件,我不能打开它在我的手机上。

如果我打开我的电脑上的xlsx文件附件,并保存它没有任何更改,并将其附加到电子邮件,我现在可以在我的手机上打开它。

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

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

iOS依赖于Open XML文件格式的工作表数据中存在的某些属性来正确parsing这些文件。 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。 有关此function的更多信息的实验属性。

从我所知道的情况来看,iOS / Andriod /等也经常依赖于SpreadsheetGear默认不支持或者写出的文件格式中可用的其他某些可选function。 例如,iOS依赖于图表中存储的“数据caching”来显示图表系列数据点,而SpreadsheetGear对写出这个数据caching的支持是有限的。 这可能会导致图表无法正常显示在iOS,Android等