我正在尝试以XML格式输出XLS文件。
这是Excel 2003渲染数据的样子(可以保存为xls文件):
<? xml version='1.0' ?>
<? mso-application progid='Excel.Sheet' ?>
<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='Connections'>
<Table>
<Row>
<Cell><ss:Data ss:Type='String' xmlns="http://www.w3.org/TR/REC-html40"><B>Test</B></Data></Cell>
<Cell><ss:Data ss:Type='String' xmlns="http://www.w3.org/TR/REC-html40"><B>Test 2</B></Data></Cell>
</Row>
<Row>
<Cell><ss:Data ss:Type='String'>Data</Data></Cell>
<Cell><ss:Data ss:Type='String'>More data</Data></Cell>
</Row>
</Table>
</Worksheet>
</Workbook>
我目前得到的是:
<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:html="http://www.w3.org/TR/REC-html40">
<Worksheet ss:Name="Test">
<Table>
<Row>
<Cell><ss:Data xmlns="http://www.w3.org/TR/REC-html40" ss:Type="string"><B>Test</B></ss:Data></Cell>
<Cell><ss:Data xmlns="http://www.w3.org/TR/REC-html40" ss:Type="string"><B>Test 2</B></ss:Data></Cell>
</Row>
<Row>
<Cell><ss:data ss:type="string">Data</ss:Data></Cell>
<Cell><ss:data ss:type="string">More data</ss:Data></Cell>
</Row>
</Table>
</Worksheet>
</Workbook>
哪个Excel无法解析。它在其日志文件中抛出了其中四个错误:
XML ERROR in Table
REASON: Bad Value
FILE: test.xls
GROUP: Cell
TAG: Data
ATTRIB: Type
VALUE: string
我认为主要问题是我使用<ss:Data>
创建的DomDocument::CreateElement('ss:Data')
标记应该使用</Data>
关闭,而DomDocument正在输出</ss:Data>
。我不能使用CreateElementNS()
,因为没有命名空间(我认为 - 我不熟悉XML基础知识)并且使用CreateElementNS('','ss:Data')
导致脚本完全没有错误地死掉安装XDebug并将error_reporting设置为E_ALL & E_STRICT
。
答案 0 :(得分:1)
ss:Type='String'
不
ss:Type='string'
类型区分大小写