2014-10-29 77 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

相關問題