使用XLSX4J将行添加到PPTX图表

时间:2014-08-07 16:45:11

标签: docx4j

我有一个模板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文件中添加新行,其中单元格不是数字,如百分比。

如果您希望看到所有代码,我必须将它们全部放在一起,因为它分布在几个类和方法中。

由于

1 个答案:

答案 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);