在iOS上创建Excel XLS文件

时间:2012-05-30 14:21:45

标签: iphone objective-c ios xml xls

我正在尝试以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文件?

4 个答案:

答案 0 :(得分:1)

我尝试了与OP相同的东西,然后放弃了。我最终使用libxls打开并读取xls文件,并使用csv写出文件。 (libxls不能写xls,只读它)。

http://libxls.sourceforge.net

我还没有尝试过,但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)

这是创建XLS文件的代码

{{1}}

答案 3 :(得分:-4)

尝试创建CSV文件格式,这将是最好的方法