2010-08-27 75 views
19

我正在編寫一個Cocoa應用程序,我試圖導出爲Excel XML格式(ISO/IEC 29500-1),它基本上是一個帶有一堆XML的zip文件其中的文件以.xlsx擴展名命名。在Cocoa中創建Excel(.xlsx)文件

我試過生成AppleScript並使用NSAppleScript創建Excel文件,該文件可以正常工作,但速度很慢,用戶必須在其計算機上安裝Excel。

我能夠創建一個簡單的.xlsx Excel文件,方法是將XML寫入Objective C中的文件,然後將其壓縮並重命名爲.xlsx。 Excel可以打開文件,但Numbers試圖打開我創建的文件時發生錯誤。看來Excel必須實現所有(或大部分)ISO/IEC規範,而Numbers只能打開Excel風格的版本。

如何使用Cocoa和Objective-c創建工作Excel文件?

+1

您可以查看[MSDN文檔的XLSX文件格式](http://msdn.microsoft.com/en-us/library/dd922181(v = office.12).aspx)。可能對你有幫助...... – froeschli 2010-08-30 06:04:39

回答

2

Wikipedia offers some links to libraries,這可能會給你一個好的開始。

如果Office Open XML格式不是必需的,並且您不需要導出過於複雜的文件,我還建議檢查將文件保存爲Excel也可以讀取的樣式表格式HTML。學習如何格式化電子表格所需的HTML的簡單方法是在Excel中創建文件,並將其保存爲HTML。

+0

它看起來像你可以在Objective-C中包裝PHP的PHPExcel組件。 – adib 2012-04-25 08:49:11

3

我使用OpenOffice API,它工作得很好。我建議你使用它來創建你的Excel文件。如果您沒有足夠的時間/耐心來解決這個問題,一個解決方法就是擁有2個導出文件的鏈接,XLSX版本針對世界的Excels,然後是Numbers應用程序單獨導出的CSV文件。

+2

你可以發佈更多關於它或一些最小的示例代碼? – 2012-07-23 12:12:46

11

如何在Excel文件中封裝HTML表格?我檢查了這個工作,我可以用Excel打開它。

NSURL * documentsDirectory = [NSFileManager.defaultManager URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask].lastObject; 
NSURL *file = [documentsDirectory URLByAppendingPathComponent:@"contacts.xls"]; 
NSString* string = @"<table><tr><td>FOO</td><td>BAR</td></tr></table>"; 
[string writeToFile:file.path atomically:YES encoding:NSUTF8StringEncoding error:nil]; 
+1

這不會創建一個xls(Excel)文件。這會創建一個HTML片段文件。 – rmaddy 2015-05-31 19:58:32

+0

這是一個html,而不是xls – 2017-01-08 02:26:19