package com.ruoyi.system.utils;
import com.ruoyi.system.domain.DmWorkTask;
import org.apache.poi.xwpf.usermodel.*;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.*;
import java.io.FileOutputStream;
import java.math.BigInteger;
import java.util.List;
public class Work_explord {
/**
savePath---保存路径
listspec---测试数据(数据库查出来封装到了list)
*/
public static void createSimpleTable(String savePath, List<DmWorkTask> listspec) throws Exception {
XWPFDocument xdoc = new XWPFDocument();
CTSectPr sectPr = xdoc.getDocument().getBody().addNewSectPr();
CTPageSz pgSz = sectPr.isSetPgSz() ? sectPr.getPgSz() : sectPr.addNewPgSz();
pgSz.setW(BigInteger.valueOf(15840));
pgSz.setH(BigInteger.valueOf(11907));
pgSz.setOrient(STPageOrientation.LANDSCAPE);
XWPFParagraph xp = xdoc.createParagraph();
xp.setSpacingBefore(0);
XWPFRun r1 = xp.createRun();
XWPFRun r2 = xp.createRun();
r1.setText("工 作 情 况 登 记 表");
r1.addBreak(); // 换行
r2.setText("________年");
r1.setFontFamily("宋体");
r1.setFontSize(16);
r1.setTextPosition(10);
r1.setBold(true);
xp.setAlignment(ParagraphAlignment.CENTER);
Integer col_total_count = 9; // 表格最多的列数
Integer data_count = listspec.size(); // 需要创建的总条数
XWPFTable xTable = xdoc.createTable(1, col_total_count);
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("12000"));
tblWidth.setType(STTblWidth.DXA);
// 创建表头数据
int i = 0;
xTable.getRow(i).setHeight(500);
setCellText(xdoc, xTable.getRow(i).getCell(0), "日 期", "FFFFFF", getCellWidth(0));
setCellText(xdoc, xTable.getRow(i).getCell(1), "开机原因", "FFFFFF", getCellWidth(1));
setCellText(xdoc, xTable.getRow(i).getCell(2), "开机时间", "FFFFFF", getCellWidth(2));
setCellText(xdoc, xTable.getRow(i).getCell(3), "关机时间", "FFFFFF", getCellWidth(3));
setCellText(xdoc, xTable.getRow(i).getCell(4), "累计时间(h)", "FFFFFF", getCellWidth(4));
setCellText(xdoc, xTable.getRow(i).getCell(5), "环境温度(°C)", "FFFFFF", getCellWidth(5));
setCellText(xdoc, xTable.getRow(i).getCell(6), "技术状态", "FFFFFF", getCellWidth(6));
setCellText(xdoc, xTable.getRow(i).getCell(7), "执行人", "FFFFFF", getCellWidth(7));
setCellText(xdoc, xTable.getRow(i).getCell(8), "备 注", "FFFFFF", getCellWidth(8));
// 创建表格内容
i++;
for (int i2 = 1; i2 <= data_count; i2++) {
XWPFTableRow row = xTable.insertNewTableRow(i2);
row.setHeight(500);
for (int j = 0; j < col_total_count; j++) {
XWPFTableCell cell = row.createCell();
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(j2)));
if (j==0){
cell.setText(listspec.get(i2-1).getTaskName());
}if (j==1){
cell.setText(listspec.get(i2-1).getBootReason());
}if (j==2){
cell.setText(listspec.get(i2-1).getBootTime());
}if (j==3){
cell.setText(listspec.get(i2-1).getShutdownTime());
}if (j==4){
cell.setText(String.valueOf(listspec.get(i2-1).getTimeSum()));
}if (j==5){
cell.setText(listspec.get(i2-1).getTemperature());
}if (j==6){
cell.setText(listspec.get(i2-1).getStatus());
}if (j==7){
cell.setText(listspec.get(i2-1).getExecutionUser());
}if (j==8){
cell.setText(listspec.get(i2-1).getRemark());
}
}
}
FileOutputStream fos = new FileOutputStream(savePath);
xdoc.write(fos);
fos.close();
}
/**
* 设置表头内容
*
* @param xDocument
* @param cell
* @param text
* @param bgcolor
* @param width
*/
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(XWPFTableCell.XWPFVertAlign.CENTER);
CTTcPr ctPr = cttc.addNewTcPr();
ctPr.addNewVAlign().setVal(STVerticalJc.CENTER);
cttc.getPList().get(0).addNewPPr().addNewJc().setVal(STJc.CENTER);
cell.setText(text);
}
/**
* 设置列宽
*
* @param index
* @return
*/
private static int getCellWidth(int index) {
int cwidth = 2000;
return cwidth;
}
}
Java导出word之POI生成word表格
最新推荐文章于 2024-08-02 14:01:20 发布