poi導出word表格的問題,不能直接用,但是很有參考價值,對poi操作word 表格的一般操作能夠實現
poi導出word表格jar包
poi-3.9-20121203.jar
poi-ooxml-3.9-20121203.jar
poi-ooxml-schemas-3.9-20121203.jar
poi-scratchpad-3.9.jar
xbean.jar
List<String> CONDITIONlist = new ArrayList();
CONDITIONlist .add("fdsajfdsfjdsfjldjsfds");
CONDITIONlist .add("sjfkljdslkfdsfdsafdsf");
XWPFTable table = doc.createTable(16, 4);
//設置表格寬度
CTTbl ttbl = table.getCTTbl();
CTTblPr tblPr = ttbl.getTblPr() == null ? ttbl.addNewTblPr() : ttbl.getTblPr();
CTTblWidth tblWidth = tblPr.isSetTblW() ? tblPr.getTblW() : tblPr.addNewTblW();
CTJc cTJc=tblPr.addNewJc();
cTJc.setVal(STJc.Enum.forString("center"));
tblWidth.setW(new BigInteger("8000"));
tblWidth.setType(STTblWidth.DXA);
List<XWPFTableRow> rows = table.getRows();
XWPFTableRow row;
List<XWPFTableCell> cells;
XWPFTableCell cell;
int rowSize = rows.size();
int cellSize;
for (int i=0; i<rowSize; i++) {
row = rows.get(i);
//設置行的高度
row.setHeight(500); //設置行高
cells = row.getTableCells(); //獲得單元格
cellSize = cells.size();
//分列設置單元格寬度或者說列寬
for (int j=0; j<cellSize; j++) {
cell = cells.get(j);
CTTcPr cellPr = cell.getCTTc().addNewTcPr();
CTTblWidth cellw = cellPr.addNewTcW();
cellw.setType(STTblWidth.DXA);
if (j == 3||j==1) {
//設置寬度
cellPr.addNewTcW().setW(BigInteger.valueOf(2700));
}else cellPr.addNewTcW().setW(BigInteger.valueOf(1300));
}
}
// setTableGridCol(table,a);
// 設置上下左右四個方向的距離,可以將表格撐大
/*table.setCellMargins(20, 20, 20, 20);
table.setWidth(500);
table.setRowBandSize(50);
table.setColBandSize(30);*/
List<XWPFTableCell> tableCells = table.getRow(0).getTableCells();
tableCells.get(0).setText("事項編碼");
tableCells.get(1).setText(""fdsa);
List<XWPFTableCell> tableCellsq = table.getRow(1).getTableCells();
tableCellsq.get(0).setText("實施主體");
tableCellsq.get(1).setText("fdsfdsa");
tableCellsq.get(2).setText("承辦機構");
tableCellsq.get(3).setText("fdsafdsafdsa");
List<XWPFTableCell> tableCellsq3 = table.getRow(2).getTableCells();
tableCellsq3.get(0).setText("內部事項編碼");
tableCellsq3.get(1).setText("fdsafdsa");
tableCellsq3.get(2).setText("事項名稱");
tableCellsq3.get(3).setText("fdsafdsa");
List<XWPFTableCell> tableCellsq4 = table.getRow(3).getTableCells();
tableCellsq4.get(0).setText("服務對象");
tableCellsq4.get(1).setText"(SUB_TYPE");
tableCellsq4.get(2).setText("服務主題");
tableCellsq4.get(3).setText("TITLE_NAME");
tableCells.get(2).setText("服務分類");
tableCells.get(3).setText("SUBTYPE");
List<XWPFTableCell> tableCellsq5 = table.getRow(4).getTableCells();
tableCellsq5.get(0).setText("法定期限");
tableCellsq5.get(1).setText("String.valueOf(LAW_TIME)");
tableCellsq5.get(2).setText("承諾期限");
tableCellsq5.get(3).setText("String.valueOf(AGREE_TIME)");
List<XWPFTableCell> tableCellsq6 = table.getRow(5).getTableCells();
tableCellsq6.get(0).setText("是否收費");
tableCellsq6.get(1).setText(IS_CHARGE);
tableCellsq6.get(2).setText("辦件類型");
tableCellsq6.get(3).setText(ASSORT);
List<XWPFTableCell> tableCellsq7 = table.getRow(6).getTableCells();
tableCellsq7.get(0).setText("是否可網上辦理");
tableCellsq7.get(1).setText("IS_ONLINE");
tableCellsq7.get(2).setText("時都進駐大廳");
tableCellsq7.get(3).setText("IS_IN_HALL");
List<XWPFTableCell> tableCellsq8 = table.getRow(7).getTableCells();
tableCellsq8.get(0).setText("備註信息");
tableCellsq8.get(1).setText("REMARK");
mergeCellsHorizontal( table, 7, 1,3);
List<XWPFTableCell> tableCellsq9 = table.getRow(8).getTableCells();
tableCellsq9.get(0).setText("受理條件");
//tableCellsq9.get(1).setText("CONDITION");
//單元格內換行
XWPFParagraph para =tableCellsq9.get(1).getParagraphs().get(0);
para.setAlignment(ParagraphAlignment.LEFT);
for(String text : CONDITIONlist){
XWPFRun run = para.createRun();
run.setText(text);
run.addBreak();
}
//合併單元格
mergeCellsHorizontal( table, 8, 1,3);
/**
* @Description: 跨列合併
*/
public void mergeCellsHorizontal(XWPFTable table, int row, int fromCell,
int toCell) {
for (int cellIndex = fromCell; cellIndex <= toCell; cellIndex++) {
XWPFTableCell cell = table.getRow(row).getCell(cellIndex);
if (cellIndex == fromCell) {
// The first merged cell is set with RESTART merge value
getCellCTTcPr(cell).addNewHMerge().setVal(STMerge.RESTART);
//getCellCTTcPr(cell).addNewHMerge().setVal(STMerge.RESTART);
} else {
// Cells which join (merge) the first one,are set with CONTINUE
getCellCTTcPr(cell).addNewHMerge().setVal(STMerge.CONTINUE);
}
}
}