/**
* 测试导出word文档
*
* @param request
* @return
* @throws CustomException
* @author yuanjin
*/
@RequestMapping(value = "/exportWord", method = {RequestMethod.GET})
public void exportWord(HttpServletResponse response, HttpServletRequest request) throws IOException, XDocReportException {
//获取Word模板,模板存放路径在项目的resources目录下
InputStream ins = this.getClass().getResourceAsStream("/template/word/测试模板.docx");
//注册xdocreport实例并加载FreeMarker模板引擎
IXDocReport report = XDocReportRegistry.getRegistry().loadReport(ins, TemplateEngineKind.Freemarker);
//创建xdocreport上下文对象
IContext context = report.createContext();
//创建要替换的文本变量
context.put("city", "深圳市");
context.put("startDate", "2022-01-17");
context.put("endDate", "2022-01-26");
context.put("num", 96689);
context.put("fee", 1056.378);
List<Goods> goodsList = new ArrayList<>();
Goods goods1 = new Goods();
goods1.setSerialNo(1);
goods1.setType("衣服");
goods1.setQuantity(98989);
goods1.setSaleAmount(new BigDecimal(5692.56));
goodsList.add(goods1);
Goods goods2 = new Goods();
goods2.setSerialNo(2);
goods2.setType("鞋子");
goods2.setQuantity(89562);
goods2.setSaleAmount(new BigDecimal(123.56));
goodsList.add(goods2);
Goods goods3 = new Goods();
goods3.setSerialNo(3);
goods3.setType("手机");
goods3.setQuantity(72465);
goods3.setSaleAmount(new BigDecimal(68442.666));
goodsList.add(goods3);
Goods goods4 = new Goods();
goods4.setSerialNo(4);
goods4.setType("电脑");
goods4.setQuantity(66895);
goods4.setSaleAmount(new BigDecimal(7342.353));
goodsList.add(goods4);
Goods goods5 = new Goods();
goods5.setSerialNo(5);
goods5.setType("食品");
goods5.setQuantity(55231);
goods5.setSaleAmount(new BigDecimal(99.99));
goodsList.add(goods5);
context.put("goods", goodsList);
//创建字段元数据
FieldsMetadata fm = report.createFieldsMetadata();
//Word模板中的表格数据对应的集合类型
fm.load("goods", Goods.class, true);
//元数据中加入图片
fm.addFieldAsImage("img1");
fm.addFieldAsImage("img2");
//获取图片
// InputStream img1 = this.getClass().getResourceAsStream("/template/word/img/11.png");
// InputStream img2 = this.getClass().getResourceAsStream("/template/word/img/22.png");
PieChart chart = new PieChartBuilder().width(800).height(620)
.title("销售饼图").build();
//给饼图设置对应的值
chart.addSeries("臭美毁肤", 589);
chart.addSeries("女装", 651);
chart.addSeries("手机", 866);
chart.addSeries("家居家装", 783);
chart.addSeries("食物饮品", 405);
//生成饼图
ByteArrayOutputStream baos1 = new ByteArrayOutputStream();
BitmapEncoder.saveBitmap(chart, baos1, BitmapEncoder.BitmapFormat.PNG);
//把图片添加到上下文对象
context.put("img1", new ByteArrayImageProvider(baos1.toByteArray()));
XYChart chartXy = new XYChartBuilder().width(800).height(600).xAxisTitle("X").yAxisTitle("Y").build();
// Customize Chart
chartXy.getStyler().setLegendPosition(Styler.LegendPosition.InsideNE);
// Series
chartXy.addSer