我正在尝试以Excel格式创建报告,准备通过电子邮件发送。到目前为止,我发现最好和最简单的方法是创建一个xml文档,如下所示,并将其保存为xls。
<?xml version="1.0"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40">
<Worksheet ss:Name="Sheet1">
<Table ss:ExpandedColumnCount="2" ss:ExpandedRowCount="2" x:FullColumns="1" x:FullRows="1">
<Row>
<Cell><Data ss:Type="String">Name</Data></Cell>
<Cell><Data ss:Type="String">Example</Data></Cell>
</Row>
<Row>
<Cell><Data ss:Type="String">Value</Data></Cell>
<Cell><Data ss:Type="Number">123</Data></Cell>
</Row>
</Table>
</Worksheet>
</Workbook>
然后我可以使用
保存此文档NSArray *documentDirectoryPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDir = [NSString stringWithFormat:@"%@/Report.xls", [documentDirectoryPath objectAtIndex:0]];
[xmlString writeToFile:docDir atomically:YES encoding:NSUTF8StringEncoding error:NULL];
[serializedData writeToFile:docDir atomically:YES];
但是,在我发送电子邮件并尝试打开xls文件后,xml会显示在电子表格中。有谁能请我找到正确的方向来创建这个xls文件?
答案 0 :(得分:1)
我尝试了与OP相同的东西,然后放弃了。我最终使用libxls打开并读取xls文件,并使用csv写出文件。 (libxls不能写xls,只读它)。
我还没有尝试过,但xlslib声称要编写excel文件。它在2014年1月6日有一个更新,说它可以在iOS上运行:
http://sourceforge.net/projects/xlslib/files/
另外,请阅读为什么写excel文件如此困难,因为它真实而有趣: http://www.joelonsoftware.com/items/2008/02/19.html
答案 1 :(得分:0)
尝试在文档顶部添加以下特殊标记:
<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
[...]
我刚用你的XML尝试过这个标签,它在我的Windows7机器上工作 - 我将你的文件保存为'test.excel.xml' - <?mso...>
标签足以让Windows将格式识别为Excel
这里也有一个例子:http://en.wikipedia.org/wiki/Microsoft_Office_XML_formats
答案 2 :(得分:0)
{{1}}
答案 3 :(得分:-4)
尝试创建CSV文件格式,这将是最好的方法