2014-10-29 41 views
1

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

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生成的文件附件?

回答

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 property for this information on this feature。

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

+0

工作正常!谢谢,很好的解释。我永远不会想出这一个。 – Daniel 2014-10-29 19:15:02

相关问题