poi--3.word表格(写)

1      基本

1.1  创建一个文档

XWPFDocument doc = new XWPFDocument();

 

1.2  创建一个表格

XWPFTable table1 =document.createTable(31, 12);

 

1.3  创建一个行

 XWPFTable table1 =document.createTable(31, 12);

1.4  创建一个单元格

CTTc cttc = row.getCTTc();

1.5  大体步骤

 

2      抽取公共类

2.1  跨行

/**
 * @Description: 跨行合并
 * 表格 列  行 行end
 */
public  void mergeCellsVertically(XWPFTable table, int col, int fromRow, int toRow){
   for (int rowIndex = fromRow; rowIndex <= toRow; rowIndex++) {
      XWPFTableCell cell =table.getRow(rowIndex).getCell(col);
      if (rowIndex == fromRow ) {
        cell.getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.RESTART);
      } else{
        cell.getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.CONTINUE);
      }
   }
}

2.2  跨列

/**
 * @Description: 跨列合并
 * 表格  行   单元格  单元格end
 */
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 ) {
        cell.getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);
      } else {
        cell.getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);
      }
   }
} 

2.3  设置表格总宽度

/**
 * 设置表格总宽度
 * @param table
 * @param width
 */
public  void setTableWidth(XWPFTable table,String width){
   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(width));
   tblWidth.setType(STTblWidth.DXA);
} 

2.4  指定单元行

不能单独使用,结合下一个

public void cellUtil(XWPFTable table, Integer rowId,Integer cellId,
                            IntegerrowHight , String text ,String bgcolor , Integer cellHight ) {
    XWPFTableRow row =table.getRow(rowId);
    row.setHeight(rowHight);
    setCellText(row.getCell(cellId),text, bgcolor, cellHight);
}

2.5  填充单元格数据

不能单独使用,结合上一个

/**
 * 填充单元格数据
 * @param cell
 * @param text
 * @param bgcolor
 * @param width
 */
public  void setCellText(XWPFTableCell cell,String text, Stringbgcolor, int width) {
   CTTc cttc = cell.getCTTc();
   CTTcPr cellPr = cttc.addNewTcPr();
   cellPr.addNewTcW().setW(BigInteger.valueOf(width));
   //cell.setColor(bgcolor);
   CTTcPr ctPr = cttc.addNewTcPr();
   CTShd ctshd = ctPr.addNewShd();
   ctshd.setFill(bgcolor);
  ctPr.addNewVAlign().setVal(STVerticalJc.CENTER);
   cttc.getPList().get(0).addNewPPr().addNewJc().setVal(STJc.CENTER);
   if (text!=null && !"".equals(text)&& !"null".equals(text)) {
      cell.setText(text);
   }
}

3      例子解题思路

3.1  图

 

3.2  思路

Dao得到的数据最好与表格想对应,才方便填充,一般是一行一行数据填充

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值