学习的几篇文章:
使用Freemarker生成Word :http://my.oschina.net/liweigov/blog/63868
《ava freemarker(xml模板) 导出word 》 http://xustar.iteye.com/blog/1284104
我的问题:
1、导出IO流不熟悉
2、尝试过直接写word,格式太难控制
Map<String, Object> graduationCertificateInfo = statisticsDao.graduationCertificateInfo(idaos, params);
if(graduationCertificateInfo.size()>0){
}
String studentName = (String) graduationCertificateInfo.get("studentName");
String sex = (String) graduationCertificateInfo.get("sex");
String specialty = (String) graduationCertificateInfo.get("specialty");
BigDecimal requiredCredits = (BigDecimal) graduationCertificateInfo.get("requiredCredits");
BigDecimal selectCredits = (BigDecimal) graduationCertificateInfo.get("selectCredits");
BigDecimal totalScore = (BigDecimal) graduationCertificateInfo.get("totalScore");
SimpleDateFormat sft = new SimpleDateFormat("yyyy年MM月dd日");
sft.format(new Date());
XWPFDocument doc = new XWPFDocument();
// 标题
XWPFParagraph paragraph1 = doc.createParagraph();
paragraph1.setWordWrap(true);
paragraph1.setPageBreak(true); //换页
//p3.setAlignment(ParagraphAlignment.DISTRIBUTE);
// 设置字体对齐方式
paragraph1.setAlignment(ParagraphAlignment.CENTER);
paragraph1.setSpacingLineRule(LineSpacingRule.EXACT);
paragraph1.setIndentationFirstLine(600);
// title要使用paragraph1所定义的属性
XWPFRun title = paragraph1.createRun();
title.setBold(true);//加粗
title.setFontSize(26);
title.setTextPosition(-10);
// 设置上下两行之间的间距
title.setTextPosition(20);
title.setText("素质拓展证书");
title.addCarriageReturn();
// 设置证书正文
XWPFParagraph paragraph2 = doc.createParagraph();
paragraph2.setAlignment(ParagraphAlignment.LEFT);
XWPFRun r2 = paragraph2.createRun();
r2.setFontSize(22);
r2.setTextPosition(-10);
r2.setTextPosition(20);
r2.setText(" "+studentName+"");
r2.setUnderline(UnderlinePatterns.SINGLE);
// r2.setUnderline();
r2.setText(",性别"+sex+","+specialty+"专业"
+ "级学生,完成“综合素质教育”计划的学习,修满"
+ "必修学分"+requiredCredits+",选修学分"+selectCredits+",成绩"+totalScore+",特发"
+ "此证。");
r2.addBreak();
// 设置证书正文
XWPFParagraph paragraph3 = doc.createParagraph();
paragraph3.setAlignment(ParagraphAlignment.LEFT);
XWPFRun r3 = paragraph3.createRun();
r3.setFontSize(22);
r3.setText("证书编号:12345678989");
r3.addBreak();
// 设置证书正文
XWPFParagraph paragraph4 = doc.createParagraph();
paragraph4.setAlignment(ParagraphAlignment.RIGHT);
XWPFRun r4 = paragraph4.createRun();
r4.setFontSize(22);
r4.setText(sft.format(new Date()));
r2.addBreak(BreakClear.ALL);
String filename = "活动成绩详情.doc";
OutputStream outStream = TempFileUtil.instanse().createFile(filename);
doc.write(outStream);
Map<String, Object> result = new HashMap<String, Object>();
result.put("path", "temp");
result.put("filename", filename);
return result;
3、xml格式乱了会打不开生成的word(注意〈〉和</>对称)