package com.gk.hotwork.specialWork.util;
|
|
import org.apache.poi.xwpf.usermodel.*;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge;
|
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth;
|
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.File;
|
import java.io.FileOutputStream;
|
import java.math.BigInteger;
|
import java.net.URLEncoder;
|
import java.util.List;
|
|
public class WorkUtil {
|
public static void write2Docx()throws Exception{
|
XWPFDocument document = new XWPFDocument();
|
|
|
wordHeader(document,"动火作业");
|
//基本信息表格
|
XWPFTable infoTable = document.createTable(1,12);
|
//infoTable.setTableAlignment(TableRowAlign.CENTER);
|
//列宽自动分割
|
CTTblWidth infoTableWidth = infoTable.getCTTbl().addNewTblPr().addNewTblW();
|
infoTableWidth.setType(STTblWidth.DXA);
|
infoTableWidth.setW(BigInteger.valueOf(9072));
|
|
//表格第一行
|
XWPFTableRow infoTableRowOne = infoTable.getRow(0);
|
infoTableRowOne.getCell(0).setText("申请单位");
|
infoTableRowOne.addNewTableCell().setText("人事部门");
|
infoTableRowOne.addNewTableCell().setText("申请人");
|
infoTableRowOne.addNewTableCell().setText("张三");
|
infoTableRowOne.addNewTableCell().setText("作业证编号");
|
infoTableRowOne.addNewTableCell().setText("XHGT-00001");
|
|
//表格第二行
|
XWPFTableRow infoTableRowTwo = infoTable.createRow();
|
infoTableRowTwo.getCell(0).setText("动火作业级别");
|
infoTableRowTwo.getCell(1).setText("特级动火作业");
|
infoTableRowTwo.getCell(2).setText("动火方式");
|
infoTableRowTwo.getCell(3).setText("电焊、气割、手动论切割");
|
|
infoTableRowTwo.addNewTableCell().setText("");
|
//表格第三行
|
XWPFTableRow infoTableRowThree = infoTable.createRow();
|
infoTableRowThree.getCell(0).setText("动火地点及内容");
|
infoTableRowThree.getCell(1).setText("·········");
|
infoTableRowThree.getCell(2).setText("");
|
infoTableRowThree.getCell(3).setText("");
|
infoTableRowThree.getCell(4).setText("");
|
infoTableRowThree.getCell(5).setText("");
|
//表格第四行
|
XWPFTableRow infoTableRowFour = infoTable.createRow();
|
infoTableRowFour.getCell(0).setText("动火时间");
|
infoTableRowFour.getCell(1).setText("XXXX-XX-XX");
|
|
mergeCellsHorizontal(infoTable,3,1,5);
|
|
//分析数据
|
//表格第五行
|
XWPFTableRow infoTableRowFive = infoTable.createRow();
|
infoTableRowFive.getCell(0).setText("分析点名称");
|
infoTableRowFive.getCell(1).setText("分析项");
|
infoTableRowFive.getCell(2).setText("分析数据");
|
infoTableRowFive.getCell(3).setText("分析结果");
|
infoTableRowFive.getCell(4).setText("分析人");
|
infoTableRowFive.getCell(5).setText("分析时间");
|
|
XWPFTableRow infoTableRowSix = infoTable.createRow();
|
infoTableRowSix.getCell(0).setText("XX");
|
infoTableRowSix.getCell(1).setText("XX");
|
infoTableRowSix.getCell(2).setText("XX");
|
infoTableRowSix.getCell(3).setText("XX");
|
infoTableRowSix.getCell(4).setText("XX");
|
infoTableRowSix.getCell(5).setText("XX");
|
|
XWPFTableRow infoTableRowSeven = infoTable.createRow();
|
infoTableRowSeven.getCell(0).setText("XX");
|
infoTableRowSeven.getCell(1).setText("XX");
|
infoTableRowSeven.getCell(2).setText("XX");
|
infoTableRowSeven.getCell(3).setText("XX");
|
infoTableRowSeven.getCell(4).setText("XX");
|
infoTableRowSeven.getCell(5).setText("XX");
|
|
XWPFTableRow infoTableRowEight = infoTable.createRow();
|
infoTableRowEight.getCell(0).setText("涉及的其他特殊作业");
|
infoTableRowEight.getCell(1).setText("XX");
|
infoTableRowEight.getCell(2).setText("XX");
|
infoTableRowEight.getCell(3).setText("XX");
|
infoTableRowEight.getCell(4).setText("XX");
|
infoTableRowEight.getCell(5).setText("XX");
|
|
XWPFTableRow infoTableRowNine = infoTable.createRow();
|
infoTableRowNine.getCell(0).setText("涉及的其他特殊作业");
|
infoTableRowNine.getCell(1).setText("危害辨识");
|
infoTableRowNine.getCell(2).setText("XX");
|
infoTableRowNine.getCell(3).setText("XX");
|
infoTableRowNine.getCell(4).setText("XX");
|
infoTableRowNine.getCell(5).setText("XX");
|
|
XWPFTableRow infoTableRowTen = infoTable.createRow();
|
infoTableRowTen.getCell(0).setText("安全措施");
|
infoTableRowTen.getCell(1).setText("XX");
|
infoTableRowTen.getCell(2).setText("XX");
|
infoTableRowTen.getCell(3).setText("XX");
|
infoTableRowTen.getCell(4).setText("XX");
|
infoTableRowTen.getCell(5).setText("XX");
|
int numberOfRows = infoTable.getNumberOfRows();
|
System.out.println(numberOfRows);
|
|
wordFooter(document);
|
|
|
//创建文档
|
File file = new File("F:\\Offer\\create_table.docx");
|
if(!file.exists()){
|
if(!file.getParentFile().exists()){
|
file.getParentFile().mkdir();
|
}
|
if (!file.exists()){
|
file.createNewFile();
|
}
|
}
|
FileOutputStream out = new FileOutputStream(file);
|
document.write(out);
|
out.close();
|
}
|
|
/**
|
* 作业票证头部
|
* @param document
|
*/
|
public static void wordHeader(XWPFDocument document,String workTypeName){
|
//添加标题
|
XWPFParagraph titleParagraph = document.createParagraph();
|
//设置段落居中
|
titleParagraph.setAlignment(ParagraphAlignment.CENTER);
|
|
XWPFRun titleParagraphRun = titleParagraph.createRun();
|
titleParagraphRun.setText("新疆国泰新华化工有限责任公司"+workTypeName+"证");
|
titleParagraphRun.setColor("000000");
|
titleParagraphRun.setFontSize(14);
|
// //换行
|
// titleParagraphRun.addBreak();
|
|
}
|
|
/**
|
* 作业票证尾部
|
* @param document
|
*/
|
public static void wordFooter(XWPFDocument document){
|
//添加标题
|
XWPFParagraph footerParagraph = document.createParagraph();
|
//设置段落居中
|
footerParagraph.setAlignment(ParagraphAlignment.CENTER);
|
|
XWPFRun titleParagraphRun = footerParagraph.createRun();
|
titleParagraphRun.setText("此票一式三联,一联生产车间留存,二联作业单位留存,三联生产技术科留存");
|
titleParagraphRun.setColor("000000");
|
titleParagraphRun.setFontSize(12);
|
//换行
|
titleParagraphRun.addBreak();
|
}
|
|
/**
|
* word单元格列合并列
|
* @param table 表格
|
* @param row 合并列所在行
|
* @param startCell 开始列
|
* @param endCell 结束列
|
*/
|
public static void mergeCellsHorizontal(XWPFTable table, int row, int startCell, int endCell) {
|
for (int i = startCell; i <= endCell; i++) {
|
XWPFTableCell cell = table.getRow(row).getCell(i);
|
if (i == startCell) {
|
// The first merged cell is set with RESTART merge value
|
cell.getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);
|
} else {
|
// Cells which join (merge) the first one, are set with CONTINUE
|
cell.getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);
|
}
|
}
|
}
|
|
/**
|
* word单元格列合并行
|
* @param table 表格
|
* @param col 合并行所在列
|
* @param startRow 开始行
|
* @param endRow 结束行
|
*/
|
public static void mergeCellsVertically(XWPFTable table, int col, int startRow, int endRow) {
|
for (int i = startRow; i <= endRow; i++) {
|
XWPFTableCell cell = table.getRow(i).getCell(col);
|
if (i == startRow) {
|
cell.getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.RESTART);
|
} else {
|
cell.getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.CONTINUE);
|
}
|
}
|
}
|
|
public static void expotWord(HttpServletResponse response, String fileName, XWPFDocument document) {
|
try {
|
fileName = URLEncoder.encode(fileName,"UTF-8");
|
response.setContentType("application/x-msdownload;charset=UTF-8");
|
response.addHeader("Content-Disposition", "attachment;filename=" + fileName + ".docx");
|
document.write(response.getOutputStream());
|
}catch (Exception e){
|
e.printStackTrace();
|
}
|
}
|
|
/**
|
* 清空单元格数据
|
* @param row 行
|
* @throws Exception
|
*/
|
public static void clearCell(XWPFTableRow row){
|
List<XWPFTableCell> tableCells = row.getTableCells();
|
for (int i = 0; i < tableCells.size(); i++) {
|
tableCells.get(i).getParagraphs();
|
if(tableCells.get(i).getParagraphs().size()>0){
|
tableCells.get(i).removeParagraph(0);
|
}
|
|
}
|
}
|
public static void clearCell1(XWPFTableRow row,int col,String text){
|
XWPFTableCell cell = row.getTableCells().get(col);
|
for (XWPFParagraph p : cell.getParagraphs())
|
{
|
for (XWPFRun r : p.getRuns())
|
{
|
|
r.setText(text);//要深入到原cell中的run替换内容才能保证样式一致
|
}
|
}
|
}
|
|
public static void main(String[] args) throws Exception {
|
write2Docx();
|
System.out.println(System.getProperty("user.dir"));
|
}
|
|
}
|