尝试从 SpreadsheetML 2003 (基本上是XML)生成 XLSX 文件。 CLOB使用数据库中的CLOB包含SpreadsheetML 2003(XML)。我试图通过 STAX 解析器解析xml,并使用 POI API 将其写入XLSX文件。但是在stax中进行处理时它会抛出异常。
注意:使用XML编码 UTF-8 格式。
例外:
javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,16706]
Message: The entity "uuml" was referenced, but not declared.
at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:588)
at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.getElementText(XMLStreamReaderImpl.java:845)
at com.db.smis.planus.servlet.ServletApp.doProcess(ServletApp.java:224)
示例XML:
<?xml version="1.0"? encoding="UTF-8">
<?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">
<Row>
<Cell ss:StyleID="s29"><Data ss:Type="Number">7662</Data></Cell>
<Cell ss:StyleID="s73"><Data ss:Type="String">C. & A. AAAAA & CO. KG</Data></Cell>
</Row>
<Row>
<Cell ss:StyleID="s29"><Data ss:Type="Number">7662</Data></Cell>
<Cell ss:StyleID="s28"><Data ss:Type="String">München,Köln</Data></Cell>
</Row>
<Row>
<Cell ss:StyleID="s29"><Data ss:Type="Number">7662</Data></Cell>
<Cell ss:StyleID="s28"><Data ss:Type="String">Düsseldorf</Data></Cell>
</Row>
</Workbook>
&#13;
答案 0 :(得分:1)
您需要声明ü
个权利,或者用十六进制或十进制等值替换它们,在这种情况下我猜ü
:
<!DOCTYPE definition [
<!ENTITY uuml "Ü">
]>
更新
如果您有更多特殊字符,请使用我们的Apache commons lang的朋友StringEscapeUtils.unescapeXML
。