我有一个模板pptx文件,其条形图有几个百分比。每个条形代表一个百分比。我的计划是保持图表到位,但只需删除现有的栏并使用xlsx4j添加新的栏。
这是相关的java代码,它正在更新条形图的嵌入式.xlsx文件。
......
WorksheetPart wsp = (WorksheetPart)partsMap.get(pairs.getKey());
List<Row> rows = wsp.getJaxbElement().getSheetData().getRow();
Row headerRow = rows.get(0);
rows.clear();
rows.add(headerRow);
Row newRow = new Row();
Cell newLabelCell = new Cell();
newLabelCell.setT(STCellType.STR);
newLabelCell.setV("Some Label");
newLabelCell.setParent(newRow);
newRow.getC().add(newLabelCell);
newRow.setParent(wsp.getJaxbElement().getSheetData());
Cell newValueCell = new Cell();
newValueCell.setV("75%");
newValueCell.setT(STCellType.STR);
newValueCell.setParent(newRow);
newRow.getC().add(newValueCell);
rows.add(newRow);
......
在这段代码之上,我正在更新CTBarChart和CTBarSer对象,该代码工作正常。当我打开更新的pptx文件时,它看起来很棒。但是,当我右键单击图表并单击“编辑数据”时,百分比将被视为字符串,而不是百分比,因此图表会变得混乱。将单元格类型更改为功率点的百分比很容易,但我需要在代码中执行此操作。
我知道我将单元格类型设置为STCellType.STR。没有STCellType.Percentage。如果我使用除STCellType.STR之外的任何其他单元格类型,我甚至无法在powerpoint中打开xlsx数据,它会被损坏或者其他东西。
所以我的问题是,如何在pptx图表的嵌入式.xslx文件中添加新行,其中单元格不是数字,如百分比。
如果您希望看到所有代码,我必须将它们全部放在一起,因为它分布在几个类和方法中。
由于
答案 0 :(得分:0)
您需要操纵相关单元格的S
属性。此属性采用Long
值,并反映单元格编号格式。 Excel中有许多内置单元格编号格式,%类型将是其中之一(如果搜索单元格格式/ Open XML,您应该找到所需的相关单元格格式值。我认为百分比类型为9和10,但您需要对其进行测试。
一旦你知道你需要什么价值,设置一个单元格非常简单。一些示例代码:
// Create a cell
Cell cellToUpdate = Context.getsmlObjectFactory().createCell();
// Set its reference in the worksheet
cellToUpdate.setV("B14");
// Set its value
cellToUpdate.setV("56.3");
// Set its data type (here a 'stand-alone' string)
cellToUpdate.setT(STCellType.STR);
// Set its style (i.e. number format)
cellToUpdate.setS(yourNumberFormat);