如何使用xlsx4j格式化单元格types?

我在docx4j和openxml中是新的。 我有必要创build包含N个单独的表(现有的模板),并根据这些表预先创build图表的Excel文件。 实际上,我需要用数据库中的值replace一些文本占位符,并向用户显示完全生成的Excel文档。 我用replace值检查了示例,在源代码中获取最新的补丁后,它正在为我工​​作。 不幸的是,我的图表不能根据公式进行评估,因为replace的值是stringtypes。 好吧,我可以最初标记一些行以备将它们转换为数字,但是当我为这些行设置STCellType.N时,缺less必要的值并将未知值插入到此处。

源xlsm文件包含:

F5 = ${gender:1} G5 = ${gender:1:value} H5 = =IF(G5>0; G5/SUM($G$5:$G$6)*100; "") F6 = ${gender:2} G6 = ${gender:2:value} H6 = =IF(G6>0; G6/SUM($G$5:$G$6)*100; "") 

replace后,我在结果xlsm文件中看到:

 F5 = Man G5 = 30 H5 = #VALUE! F6 = Woman G6 = 32 H6 = #VALUE! 

注意:我正在插入“20”和“30”,而不是“30”和“32”。

这里是我的代码:

  List<String> numbers = new ArrayList<String>(); //convert to number the cell type with this address when all placeholders will be replaced numbers.add("G5"); numbers.add("G6"); JaxbSmlPart smlPart = (JaxbSmlPart)pkg.getParts().get(new PartName("/xl/sharedStrings.xml")); HashMap<String, String> mappings = new HashMap<String, String>(); mappings.put("gender:1", "Man"); mappings.put("gender:1:value", "20"); mappings.put("gender:2", "Woman"); mappings.put("gender:2:value", "30"); smlPart.variableReplace(mappings); //when replacements done, iterating over all rows and columns in the sheet and set the type "Number" for the selected cells for (int i=0; i<sheetData.getRow().size(); i++) { for (int j=0;j<sheetData.getRow().get(i).getC().size();j++) { if (numbers.contains(sheetData.getRow().get(i).getC().get(j).getR())) { sheetData.getRow().get(i).getC().get(j).setT(STCellType.N); } } } 

你能告诉我我做错了什么,是否有可能将string值转换为数字(而不是改变单元格的types)? 我也尝试使用在线服务http://webapp.docx4java.org ,但没有发现在这种情况下有用:(

谢谢!