Java通过POI创建表格文档写入数据。
构建表格
1 2 3 4 5 6 7 8
| XWPFTable xwpfT = xwpfd.createTable(10, 2); xwpfT.setWidthType(TableWidthType.AUTO); for (int i = 0; i < 10; i++) { for (int j = 0; j < 2; j++) { xwpfT.getRow(i).getCell(j).setText("第" + i + "行" + "第" + j + "列"); } } xwpfd.setTable(0, xwpfT);
|
通过带有参数的函数创建一个表格,如果没有参数,默认创建一行一列的表格。
设置表格列的宽度,setWidthType()是根据内容自动扩展,setWidth()直接数值表示宽度。
获取对应的行和列输入内容。在表格指定位置新增一行insertNewTableRow(),addRow()在最后一行增加一行。
最后将表格加入文档中。
横向页面
导入依赖
1 2 3 4 5
| <dependency> <groupId>org.apache.poi</groupId> <artifactId>ooxml-schemas</artifactId> <version>1.4</version> </dependency>
|
页面横向
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| XWPFDocument xwpfd = new XWPFDocument(); CTDocument1 document1 = xwpfd.getDocument(); CTBody body = document1.getBody(); if (!body.isSetSectPr()){ body.addNewSectPr(); } CTSectPr sectPr = body.getSectPr(); if (!sectPr.isSetPgSz()){ sectPr.addNewPgSz(); }
CTPageSz pageSz = sectPr.getPgSz(); pageSz.setW(BigInteger.valueOf(16840)); pageSz.setH(BigInteger.valueOf(11907)); pageSz.setOrient(STPageOrientation.LANDSCAPE);
|
如果有jar包报错,降低poi的jar包版本即可。
1 2 3 4 5 6 7 8 9 10
| <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.0</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.0</version> </dependency>
|
设置边框
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| CTTblBorders borders = table.getCTTbl().getTblPr().addNewTblBorders(); CTBorder hBorder = borders.addNewInsideH(); hBorder.setVal(STBorder.Enum.forString("single")); hBorder.setSz(new BigInteger("1")); hBorder.setColor("000000");
CTBorder vBorder = borders.addNewInsideV(); vBorder.setVal(STBorder.Enum.forString("single")); vBorder.setSz(new BigInteger("1")); vBorder.setColor("000000");
CTBorder lBorder = borders.addNewLeft(); lBorder.setVal(STBorder.Enum.forString("single")); lBorder.setSz(new BigInteger("1")); lBorder.setColor("000000");
CTBorder rBorder = borders.addNewRight(); rBorder.setVal(STBorder.Enum.forString("single")); rBorder.setSz(new BigInteger("1")); rBorder.setColor("000000");
CTBorder tBorder = borders.addNewTop(); tBorder.setVal(STBorder.Enum.forString("single")); tBorder.setSz(new BigInteger("1")); tBorder.setColor("000000");
CTBorder bBorder = borders.addNewBottom(); bBorder.setVal(STBorder.Enum.forString("single")); bBorder.setSz(new BigInteger("1")); bBorder.setColor("000000");
table.createRow();
|
单元格内添加段落
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| XWPFTable xwpfT = xwpfd.createTable(2, 9); xwpfT.setTableAlignment(TableRowAlign.CENTER); xwpfT.setWidthType(TableWidthType.AUTO); for (int i = 0; i < 2; i++) { XWPFTableRow row = xwpfT.getRow(i); row.setHeight(1300); for (int j = 0; j < 9; j++) { XWPFTableCell xwpfTableCell = xwpfT.getRow(i).getCell(j); xwpfTableCell.setWidthType(TableWidthType.AUTO); xwpfTableCell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER); xwpfTableCell.removeParagraph(0); XWPFParagraph xwpfParagraph1 = xwpfTableCell.addParagraph(); xwpfParagraph1.setAlignment(ParagraphAlignment.CENTER); XWPFRun xwpfRun5 = xwpfParagraph1.createRun(); xwpfRun5.setFontFamily("宋体"); xwpfRun5.setFontSize(12); xwpfRun5.setColor("FF0000"); xwpfRun5.setText("第" + i + "行" + "第" + j + "列"); xwpfTableCell.setParagraph(xwpfParagraph1); } }
|