0
我已經使用XWPF文檔數週,現在我一直無法添加圖表。餅圖,條形圖。我打算用XML手動將圖表注入到文件中,但我認爲它過多。我只想將圖表添加到Docx模板。 Aspose和javadocx不是選項。Apache POI Java - Docx圖表和圖形
XWPFDocument document = new XWPFDocument(getClass().getResourceAsStream("/templates/standard.docx"));
//INSERT PIE CHART
FileOutputStream out = new FileOutputStream(new File("output/output.docx");
document.write(out);
[UPDATE - 簡單的路線]
由於時間則需成功寫入注射法,IV發現一個方便的(快速Ñ髒)將圖表的方式。這不是普通的單詞圖表,而是從庫中生成的圖表,存儲爲圖片並插入。
首先,我從http://knowm.org/open-source/xchart/xchart-example-code下載了庫。
其次,您已經實現了您的XWPF文檔,您可以創建一個圖表並將其附加爲圖像。
private XWPFDocument add_chart(XWPFDocument document)
{
// New Chart Element
CategoryChart chart = new CategoryChartBuilder().width(500).height(400).theme(Styler.ChartTheme.GGPlot2).title(getClass().getSimpleName()).build();
chart.setTitle("Issue Count");
// Customize Chart
Color[] sliceColors = new Color[]{new Color(27, 50, 119), new Color(58, 146, 56), new Color(0, 161, 222), new Color(154, 205, 102), new Color(246, 199, 182)};
chart.getStyler().setSeriesColors(sliceColors);
// Series
chart.addSeries("Critical", new ArrayList<>(Arrays.asList(new String[]{"Count"})), new ArrayList<>(Arrays.asList(new Number[]{10})));
chart.addSeries("High", new ArrayList<>(Arrays.asList(new String[]{"High"})), new ArrayList<>(Arrays.asList(new Number[]{5})));
chart.addSeries("Medium", new ArrayList<>(Arrays.asList(new String[]{"Medium"})), new ArrayList<>(Arrays.asList(new Number[]{2})));
chart.addSeries("Low", new ArrayList<>(Arrays.asList(new String[]{"Low"})), new ArrayList<>(Arrays.asList(new Number[]{1})));
// Create and store a jpg image of the chart, then append it to the document
BitmapEncoder.saveBitmapWithDPI(chart, "tmp.jpg", BitmapFormat.JPG, 300);
document.createParagraph().createRun().addPicture(new FileInputStream("tmp.jpg"), XWPFDocument.PICTURE_TYPE_JPEG, "tmp.jpg", Units.toEMU(500), Units.toEMU(400));
return document;
}
插入代碼在這裏^ –
是啊,你幾乎將不得不寫自己。圖表只在XSSF中得到最低限度的支持,並且根本不受XWPF支持。你將不得不使用CT類來自己構建它。如果你制定了一個或兩個圖表,回饋社區可能會受到歡迎。 – jmarkmurphy