最近在Git上看到一个导出表信息到word的项目(名字叫DBDocTool),下载后运行出错,看了下是用poi-3.10导出的,懒得修改别人的代码,自己随手写了个,代码如下:
import java.io.FileOutputStream; import java.math.BigInteger; import org.apache.poi.xwpf.usermodel.Borders; import org.apache.poi.xwpf.usermodel.ParagraphAlignment; import org.apache.poi.xwpf.usermodel.TextAlignment; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.apache.poi.xwpf.usermodel.XWPFRun; import org.apache.poi.xwpf.usermodel.XWPFTable; import org.apache.poi.xwpf.usermodel.XWPFTableCell; import org.apache.poi.xwpf.usermodel.XWPFTableCell.XWPFVertAlign; import org.apache.poi.xwpf.usermodel.XWPFTableRow; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFonts; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPPr; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRPr; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSpacing; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblPr; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTcPr; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STJc; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STLineSpacingRule; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth; import org.openxmlformats.schemas.wordprocessingml.x2006.main.STVerticalJc; public class POI_创建简单Word2007_S2_Test { public static void main(String[] args) throws Exception { POI_创建简单Word2007_S2_Test t = new POI_创建简单Word2007_S2_Test(); t.createSimpleTable("f:/saveFile/temp/sys_"+ System.currentTimeMillis() + ".docx"); } public void createSimpleTable(String savePath) throws Exception { XWPFDocument xdoc = new XWPFDocument(); XWPFParagraph xp = xdoc.createParagraph(); XWPFRun r1 = xp.createRun(); r1.setText("测试一个简单的表格"); r1.setFontFamily("宋体"); r1.setFontSize(12); r1.setTextPosition(10); r1.setBold(true); xp.setAlignment(ParagraphAlignment.CENTER); XWPFTable xTable = xdoc.createTable(5, 7); CTTbl ttbl = xTable.getCTTbl(); CTTblPr tblPr = ttbl.getTblPr() == null ? ttbl.addNewTblPr() : ttbl .getTblPr(); CTTblWidth tblWidth = tblPr.isSetTblW() ? tblPr.getTblW() : tblPr .addNewTblW(); tblWidth.setW(new BigInteger("8600")); tblWidth.setType(STTblWidth.DXA); int i = 0; xTable.getRow(i).setHeight(380); setCellText(xdoc, xTable.getRow(i).getCell(0), "列名", "CCCCCC", getCellWidth(0)); setCellText(xdoc, xTable.getRow(i).getCell(1), "注释", "CCCCCC", getCellWidth(1)); setCellText(xdoc, xTable.getRow(i).getCell(2), "类型", "CCCCCC", getCellWidth(2)); setCellText(xdoc, xTable.getRow(i).getCell(3), "默认值", "CCCCCC", getCellWidth(3)); setCellText(xdoc, xTable.getRow(i).getCell(4), "标识", "CCCCCC", getCellWidth(4)); setCellText(xdoc, xTable.getRow(i).getCell(5), "主键", "CCCCCC", getCellWidth(5)); setCellText(xdoc, xTable.getRow(i).getCell(6), "空值", "CCCCCC", getCellWidth(6)); i++; for (int i2 = i; i2 < 5; i2++) { for (int j = 0; j < 7; j++) { setCellText(xdoc, xTable.getRow(i2).getCell(j), "测试", null, getCellWidth(i)); } } XWPFTableRow row = xTable.insertNewTableRow(0); row.setHeight(380); XWPFTableCell cell = row.addNewTableCell(); CTTc cttc = cell.getCTTc(); CTTcPr cellPr = cttc.addNewTcPr(); cellPr.addNewVAlign().setVal(STVerticalJc.CENTER); cttc.getPList().get(0).addNewPPr().addNewJc().setVal(STJc.CENTER); cellPr.addNewTcW().setW(BigInteger.valueOf(getCellWidth(0))); cell.setColor("CCCCCC"); cell.setText("中文名称"); cell = row.addNewTableCell(); cttc = cell.getCTTc(); cellPr = cttc.addNewTcPr(); cellPr.addNewVAlign().setVal(STVerticalJc.CENTER); cttc.getPList().get(0).addNewPPr().addNewJc().setVal(STJc.CENTER); cellPr.addNewTcW().setW(BigInteger.valueOf(getCellWidth(1))); cell.setText("测试测试"); cell = row.addNewTableCell(); cttc = cell.getCTTc(); cellPr = cttc.addNewTcPr(); cellPr.addNewVAlign().setVal(STVerticalJc.CENTER); cttc.getPList().get(0).addNewPPr().addNewJc().setVal(STJc.CENTER); cellPr.addNewTcW().setW(BigInteger.valueOf(getCellWidth(2))); cell.setColor("CCCCCC"); cell.setText("英文名称"); cell = row.addNewTableCell(); cttc = cell.getCTTc(); cellPr = cttc.addNewTcPr(); cellPr.addNewGridSpan().setVal(BigInteger.valueOf(4)); cellPr.addNewHMerge().setVal(STMerge.CONTINUE); cellPr.addNewVAlign().setVal(STVerticalJc.CENTER); cttc.getPList().get(0).addNewPPr().addNewJc().setVal(STJc.CENTER); cttc.getPList().get(0).addNewR().addNewT().setStringValue("测试水平垂直居中"); row = xTable.insertNewTableRow(1); row.setHeight(380); cell = row.addNewTableCell(); cttc = cell.getCTTc(); cellPr = cttc.addNewTcPr(); cellPr.addNewVAlign().setVal(STVerticalJc.CENTER); cttc.getPList().get(0).addNewPPr().addNewJc().setVal(STJc.CENTER); cellPr.addNewTcW().setW(BigInteger.valueOf(getCellWidth(0))); cell.setColor("CCCCCC"); cell.setText("功能描述"); cell = row.addNewTableCell(); cttc = cell.getCTTc(); cellPr = cttc.addNewTcPr(); cellPr.addNewGridSpan().setVal(BigInteger.valueOf(6)); cellPr.addNewHMerge().setVal(STMerge.CONTINUE); cellPr.addNewVAlign().setVal(STVerticalJc.CENTER); cttc.getPList().get(0).addNewPPr().addNewJc().setVal(STJc.CENTER); cttc.getPList().get(0).addNewR().addNewT().setStringValue("测试功能描述"); XWPFParagraph p1 = xdoc.createParagraph(); p1.setAlignment(ParagraphAlignment.CENTER); p1.setVerticalAlignment(TextAlignment.CENTER); r1 = p1.createRun(); r1.setBold(true); r1.setText("默认单倍行距"); r1.setFontSize(13); p1 = xdoc.createParagraph(); p1.setAlignment(ParagraphAlignment.CENTER); p1.setVerticalAlignment(TextAlignment.CENTER); CTPPr pr = p1.getCTP().getPPr() != null ? p1.getCTP().getPPr() : p1.getCTP().addNewPPr(); CTSpacing spacing =pr.addNewSpacing(); spacing.setLine(new BigInteger("360")); spacing.setLineRule(STLineSpacingRule.AUTO); r1 = p1.createRun(); r1.setBold(true); r1.setText("测试1.5倍行距"); r1.setFontSize(13); p1 = xdoc.createParagraph(); p1.setAlignment(ParagraphAlignment.CENTER); p1.setBorderBottom(Borders.DOUBLE); p1.setBorderTop(Borders.DOUBLE); p1.setBorderRight(Borders.DOUBLE); p1.setBorderLeft(Borders.DOUBLE); p1.setBorderBetween(Borders.SINGLE); p1.setSpacingBeforeLines(100); p1.setAlignment(ParagraphAlignment.CENTER); p1.setVerticalAlignment(TextAlignment.CENTER); r1 = p1.createRun(); r1.setBold(true); r1.setText("学而时习之"); r1.setFontSize(13); CTRPr rpr= r1.getCTR().isSetRPr() ? r1.getCTR().getRPr() : r1.getCTR().addNewRPr(); CTFonts fonts = rpr.isSetRFonts() ? rpr.getRFonts() : rpr.addNewRFonts(); fonts.setAscii("黑体"); fonts.setEastAsia("黑体"); fonts.setHAnsi("黑体"); FileOutputStream fos = new FileOutputStream(savePath); xdoc.write(fos); fos.close(); } private static void setCellText(XWPFDocument xDocument, XWPFTableCell cell, String text, String bgcolor, int width) { CTTc cttc = cell.getCTTc(); CTTcPr cellPr = cttc.addNewTcPr(); cellPr.addNewTcW().setW(BigInteger.valueOf(width)); cell.setColor(bgcolor); cell.setVerticalAlignment(XWPFVertAlign.CENTER); CTTcPr ctPr = cttc.addNewTcPr(); ctPr.addNewVAlign().setVal(STVerticalJc.CENTER); cttc.getPList().get(0).addNewPPr().addNewJc().setVal(STJc.CENTER); cell.setText(text); } private static int getCellWidth(int index) { int cwidth = 1000; if (index == 0) { cwidth = 1600; } else if (index == 1) { cwidth = 3000; } else if (index == 2) { cwidth = 1200; } else if (index == 3) { cwidth = 900; } else if (index == 4) { cwidth = 600; } else if (index == 5) { cwidth = 600; } else if (index == 6) { cwidth = 700; } return cwidth; } }
结果为:
全文完。
相关推荐
POI导出Word包含页眉 页脚的设置,标题的设置以及显示显示设置,包括POI操作Word完整的jar包
POI报表Word导出
1、poi版本3.13 2、可进行表格替换。复制、图片导出 3、可直接运行
poi导出word例子(图片)
一个使用Apache的poi使用word模板循环输出表格行并导出的例子
亲测 poi 导出word 导出excel项目 导入 myeclipse 可运行
1:导出07版word(docx) 2:支持文本、图片、表格、页脚、纸张大小、纸张方向、页边距 3:方便扩展 4:使用实例 (在 类WordExporter 的main方法中)
最近项目中需要用到数据的导出到Word,本在项目中使用POI将数据导入到Word,代码示例非常简洁,代码包含pom依赖文件,下载解压即可到本地调试运行。
poi导出word文档jar包
POI-将数据导出到Word的实例
最近在做一个出卷系统,需要通过试卷模板从数据库中抽取题目,然后按照模板的样式生成完整的试卷,包括试卷格式的排版和图片的写入。这是用POI模板生成word文档。里面包括完整代码和所需jar包。
NULL 博文链接:https://keep-going.iteye.com/blog/1907664
poi 3.17 资料为 demo + 模板 + 数据类 java 导出多数据 雷达图图表 到ppt
apache poi 导出excel、word,替换word内容,导出word-文本、图片、表格
java poi导出word文档DEMO
仅用于个人学习
这是grails框架的类似java开发,只是类型用def定义所有类型。
实现了POI根据模板导出word,实现文字、表格、图表的替换生成。支持生成多种结构的表格、图表,关键代码都添加了注释,简单易懂。 其中表格和图表都写了两种实现方式,既可以只传简单的参数生成多个同结构的表格和...
利用模板批量生成word文件,大大方便用户后台处理,节省时间
用java导出word 中的文字,段落,图片,饼形图(函3D饼形图),柱状图,散点图,折线图等一些经常用到的功能,将一些功能进行了整合代码文件将上传到页面中,需要的朋友可以下载看看,欢迎随时提问