JAVA操作Excel

import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.ss.util.RegionUtil;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import static org.apache.poi.ss.usermodel.BorderStyle.DOUBLE;

public class ExcelUtil {
    private HSSFWorkbook workbook;
    private HSSFSheet sheet;

    public ExcelUtil(){
        this.workbook = new HSSFWorkbook();
        this.sheet = this.workbook.createSheet("sheet");
    }

    public void create(){
        //HSSFWorkbook workbook = new HSSFWorkbook();

        HSSFCellStyle style = this.workbook.createCellStyle();
        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

        style.setBottomBorderColor(IndexedColors.BLACK.getIndex());
        style.setTopBorderColor(IndexedColors.BLACK.getIndex());
        style.setLeftBorderColor(IndexedColors.BLACK.getIndex());
        style.setRightBorderColor(IndexedColors.BLACK.getIndex());
        //setColumnWidth(short columnIndex, short width)
        this.sheet.setColumnWidth(0, (short) (5.13*256)); // 4.42
        this.sheet.setColumnWidth(1, (short) (5.72*256)); // 5
        this.sheet.setColumnWidth(2, (short) (4.5*256)); // 3.79
        this.sheet.setColumnWidth(3, (short) (6.13*256));
        this.sheet.setColumnWidth(4, (short) (2.75*256));
        this.sheet.setColumnWidth(5, (short) (6.25*256));
        this.sheet.setColumnWidth(6, (short) (4.88*256));
        this.sheet.setColumnWidth(7, (short) (9.38*256));
        this.sheet.setColumnWidth(8, (short) (7.63*256));
        this.sheet.setColumnWidth(9, (short) (5.63*256));
        this.sheet.setColumnWidth(10, (short) (6.69*256));
        this.sheet.setColumnWidth(11, (short) (3*256));
        this.sheet.setColumnWidth(12, (short) (2.38*256));
        this.sheet.setColumnWidth(13, (short) (12.59*256));
        //HSSFSheet sheet = this.workbook.createSheet("sheet");

        //第一行
        HSSFRow row0 = this.sheet.createRow(0);
        row0.setHeight((short) (30.75*20));
        HSSFCell cell_0 = row0.createCell(0);
        cell_0.setCellStyle(style);
        cell_0.setCellValue("湖南湘桓工程检测有限公司");
        //设置字体大小
        setFontSize(cell_0,14,true,"黑体");
        //合并单元格
        this.sheet.addMergedRegion(cellRangeAddress(0, 0, 0, 13));

        //第二行
        HSSFRow row1 = this.sheet.createRow(1);
        row1.setHeight((short) (27.75*20));
        HSSFCell cell_1 = row1.createCell(0);
        cell_1.setCellStyle(style);
        cell_1.setCellValue("管材检验报告");
        //设置字体大小
        setFontSize(cell_1,18,true,"黑体");
        //合并单元格
        CellRangeAddress region_cell_1 = cellRangeAddress(1, 1, 0, 13);
        this.sheet.addMergedRegion(region_cell_1);

        /*RegionUtil.setBorderBottom(1, region_cell_1, this.sheet,this.workbook); // 下边框
        RegionUtil.setBorderLeft(1, region_cell_1, this.sheet,this.workbook); // 左边框
        RegionUtil.setBorderRight(1, region_cell_1, this.sheet,this.workbook); // 有边框
        RegionUtil.setBorderTop(1, region_cell_1, this.sheet,this.workbook); // 上边框*/
        //第三行
        HSSFRow row2 = this.sheet.createRow(2);
        row2.setHeight((short) (30*20));

        HSSFCell cell_2_1 = row2.createCell(0);
        cell_2_1.setCellStyle(style);
        cell_2_1.setCellValue("工程编号");
        //设置字体大小
        setFontSize(cell_2_1,10,true,"黑体");
        //合并单元格
        CellRangeAddress region_cell_2_1 = cellRangeAddress(2, 2, 0, 1);
        this.sheet.addMergedRegion(region_cell_2_1);
        //设置边框
        setBorder(region_cell_2_1);

        HSSFCell cell_2_2 = row2.createCell(2);
        cell_2_2.setCellStyle(style);
        cell_2_2.setCellValue("S2021020");
        //设置字体大小
        setFontSize(cell_2_2,10,false,"黑体");
        //合并单元格
        CellRangeAddress region_cell_2_2 = cellRangeAddress(2, 2, 2, 4);
        this.sheet.addMergedRegion(region_cell_2_2);
        //设置边框
        setBorder(region_cell_2_2);

        HSSFCell cell_2_3 = row2.createCell(5);
        cell_2_3.setCellStyle(style);
        cell_2_3.setCellValue("委托单号");
        //设置字体大小
        setFontSize(cell_2_3,10,true,"黑体");
        //合并单元格
        CellRangeAddress region_cell_2_3 = cellRangeAddress(2, 2, 5, 6);
        this.sheet.addMergedRegion(region_cell_2_3);
        //设置边框
        setBorder(region_cell_2_3);

        HSSFCell cell_2_4 = row2.createCell(7);
        cell_2_4.setCellStyle(style);
        cell_2_4.setCellValue("S2021020-210607-3");
        //设置字体大小
        setFontSize(cell_2_4,10,false,"黑体");
        //合并单元格
        CellRangeAddress region_cell_2_4 = cellRangeAddress(2, 2, 7, 8);
        this.sheet.addMergedRegion(region_cell_2_4);
        //设置边框
        setBorder(region_cell_2_4);

        HSSFCell cell_2_5 = row2.createCell(9);
        cell_2_5.setCellStyle(style);
        cell_2_5.setCellValue("报告编号");
        //设置字体大小
        setFontSize(cell_2_5,10,true,"黑体");
        //合并单元格
        CellRangeAddress region_cell_2_5 = cellRangeAddress(2, 2, 9, 10);
        this.sheet.addMergedRegion(region_cell_2_5);
        //设置边框
        setBorder(region_cell_2_5);

        HSSFCell cell_2_6 = row2.createCell(11);
        cell_2_6.setCellStyle(style);
        cell_2_6.setCellValue("S2021020-Y1-12");
        //设置字体大小
        setFontSize(cell_2_6,10,false,"黑体");
        //合并单元格
        CellRangeAddress region_cell_2_6 = cellRangeAddress(2, 2, 11, 13);
        this.sheet.addMergedRegion(region_cell_2_6);
        //设置边框
        setBorder(region_cell_2_6);

        //第四行
        HSSFRow row3 = this.sheet.createRow(3);
        row3.setHeight((short) (30*20));

        HSSFCell cell_3_1 = row3.createCell(0);
        cell_3_1.setCellStyle(style);
        cell_3_1.setCellValue("建设单位");
        //设置字体大小
        setFontSize(cell_3_1,10,true,"黑体");
        //合并单元格
        CellRangeAddress region_cell_3_1 = cellRangeAddress(3, 3, 0, 1);
        this.sheet.addMergedRegion(region_cell_3_1);
        //设置边框
        setBorder(region_cell_3_1);

        HSSFCell cell_3_2 = row3.createCell(2);
        cell_3_2.setCellStyle(style);
        cell_3_2.setCellValue("");
        //设置字体大小
        setFontSize(cell_3_2,10,false,"黑体");
        //合并单元格
        CellRangeAddress region_cell_3_2 = cellRangeAddress(3, 3, 2, 8);
        this.sheet.addMergedRegion(region_cell_3_2);
        //设置边框
        setBorder(region_cell_3_2);

        HSSFCell cell_3_3 = row3.createCell(9);
        cell_3_3.setCellStyle(style);
        cell_3_3.setCellValue("检测类别");
        //设置字体大小
        setFontSize(cell_3_3,10,true,"黑体");
        //合并单元格
        CellRangeAddress region_cell_3_3 = cellRangeAddress(3, 3, 9, 10);
        this.sheet.addMergedRegion(region_cell_3_3);
        //设置边框
        setBorder(region_cell_3_3);

        HSSFCell cell_3_4 = row3.createCell(11);
        cell_3_4.setCellStyle(style);
        cell_3_4.setCellValue("");
        //设置字体大小
        setFontSize(cell_3_4,10,false,"黑体");
        //合并单元格
        CellRangeAddress region_cell_3_4 = cellRangeAddress(3, 3, 11, 13);
        this.sheet.addMergedRegion(region_cell_3_4);
        //设置边框
        setBorder(region_cell_3_4);

        //第五行
        HSSFRow row4 = this.sheet.createRow(4);
        row4.setHeight((short) (30*20));

        HSSFCell cell_4_1 = row4.createCell(0);
        cell_4_1.setCellStyle(style);
        cell_4_1.setCellValue("工程名称");
        //设置字体大小
        setFontSize(cell_4_1,10,true,"黑体");
        //合并单元格
        CellRangeAddress region_cell_4_1 = cellRangeAddress(4, 4, 0, 1);
        this.sheet.addMergedRegion(region_cell_4_1);
        //设置边框
        setBorder(region_cell_4_1);

        HSSFCell cell_4_2 = row4.createCell(2);
        cell_4_2.setCellStyle(style);
        cell_4_2.setCellValue("");
        //设置字体大小
        setFontSize(cell_4_2,10,false,"黑体");
        //合并单元格
        CellRangeAddress region_cell_4_2 = cellRangeAddress(4, 4, 2, 8);
        this.sheet.addMergedRegion(region_cell_4_2);
        //设置边框
        setBorder(region_cell_4_2);

        HSSFCell cell_4_3 = row4.createCell(9);
        cell_4_3.setCellStyle(style);
        cell_4_3.setCellValue("样品名称");
        //设置字体大小
        setFontSize(cell_4_3,10,true,"黑体");
        //合并单元格
        CellRangeAddress region_cell_4_3 = cellRangeAddress(4, 4, 9, 10);
        this.sheet.addMergedRegion(region_cell_4_3);
        //设置边框
        setBorder(region_cell_4_3);

        HSSFCell cell_4_4 = row4.createCell(11);
        cell_4_4.setCellStyle(style);
        cell_4_4.setCellValue("");
        //设置字体大小
        setFontSize(cell_4_4,10,false,"黑体");
        //合并单元格
        CellRangeAddress region_cell_4_4 = cellRangeAddress(4, 4, 11, 13);
        this.sheet.addMergedRegion(region_cell_4_4);
        //设置边框
        setBorder(region_cell_4_4);

        //第六行
        HSSFRow row5 = this.sheet.createRow(5);
        row5.setHeight((short) (30*20));

        HSSFCell cell_5_1 = row5.createCell(0);
        cell_5_1.setCellStyle(style);
        cell_5_1.setCellValue("委托单位");
        //设置字体大小
        setFontSize(cell_5_1,10,true,"黑体");
        //合并单元格
        CellRangeAddress region_cell_5_1 = cellRangeAddress(5, 5, 0, 1);
        this.sheet.addMergedRegion(region_cell_5_1);
        //设置边框
        setBorder(region_cell_5_1);

        HSSFCell cell_5_2 = row5.createCell(2);
        cell_5_2.setCellStyle(style);
        cell_5_2.setCellValue("");
        //设置字体大小
        setFontSize(cell_5_2,10,false,"黑体");
        //合并单元格
        CellRangeAddress region_cell_5_2 = cellRangeAddress(5, 5, 2, 8);
        this.sheet.addMergedRegion(region_cell_5_2);
        //设置边框
        setBorder(region_cell_5_2);

        HSSFCell cell_5_3 = row5.createCell(9);
        cell_5_3.setCellStyle(style);
        cell_5_3.setCellValue("检测依据");
        //设置字体大小
        setFontSize(cell_5_3,10,true,"黑体");
        //合并单元格
        CellRangeAddress region_cell_5_3 = cellRangeAddress(5, 5, 9, 10);
        this.sheet.addMergedRegion(region_cell_5_3);
        //设置边框
        setBorder(region_cell_5_3);

        HSSFCell cell_5_4 = row5.createCell(11);
        cell_5_4.setCellStyle(style);
        cell_5_4.setCellValue("");
        //设置字体大小
        setFontSize(cell_5_4,10,false,"黑体");
        //合并单元格
        CellRangeAddress region_cell_5_4 = cellRangeAddress(5, 5, 11, 13);
        this.sheet.addMergedRegion(region_cell_5_4);
        //设置边框
        setBorder(region_cell_5_4);

        //第七行
        HSSFRow row6 = this.sheet.createRow(6);
        row6.setHeight((short) (30*20));

        HSSFCell cell_6_1 = row6.createCell(0);
        cell_6_1.setCellStyle(style);
        cell_6_1.setCellValue("生产厂家");
        //设置字体大小
        setFontSize(cell_6_1,10,true,"黑体");
        //合并单元格
        CellRangeAddress region_cell_6_1 = cellRangeAddress(6, 6, 0, 1);
        this.sheet.addMergedRegion(region_cell_6_1);
        //设置边框
        setBorder(region_cell_6_1);

        HSSFCell cell_6_2 = row6.createCell(2);
        cell_6_2.setCellStyle(style);
        cell_6_2.setCellValue("");
        //设置字体大小
        setFontSize(cell_6_2,10,false,"黑体");
        //合并单元格
        CellRangeAddress region_cell_6_2 = cellRangeAddress(6, 6, 2, 8);
        this.sheet.addMergedRegion(region_cell_6_2);
        //设置边框
        setBorder(region_cell_6_2);

        HSSFCell cell_6_3 = row6.createCell(9);
        cell_6_3.setCellStyle(style);
        cell_6_3.setCellValue("样品编号");
        //设置字体大小
        setFontSize(cell_6_3,10,true,"黑体");
        //合并单元格
        CellRangeAddress region_cell_6_3 = cellRangeAddress(6, 6, 9, 10);
        this.sheet.addMergedRegion(region_cell_6_3);
        //设置边框
        setBorder(region_cell_6_3);

        HSSFCell cell_6_4 = row6.createCell(11);
        cell_6_4.setCellStyle(style);
        cell_6_4.setCellValue("");
        //设置字体大小
        setFontSize(cell_6_4,10,false,"黑体");
        //合并单元格
        CellRangeAddress region_cell_6_4 = cellRangeAddress(6, 6, 11, 13);
        this.sheet.addMergedRegion(region_cell_6_4);
        //设置边框
        setBorder(region_cell_6_4);

        //第八行
        HSSFRow row7 = this.sheet.createRow(7);
        row7.setHeight((short) (30*20));

        HSSFCell cell_7_1 = row7.createCell(0);
        cell_7_1.setCellStyle(style);
        cell_7_1.setCellValue("样品规格");
        //设置字体大小
        setFontSize(cell_7_1,10,true,"黑体");
        //合并单元格
        CellRangeAddress region_cell_7_1 = cellRangeAddress(7, 7, 0, 1);
        this.sheet.addMergedRegion(region_cell_7_1);
        //设置边框
        setBorder(region_cell_7_1);

        HSSFCell cell_7_2 = row7.createCell(2);
        cell_7_2.setCellStyle(style);
        cell_7_2.setCellValue("");
        //设置字体大小
        setFontSize(cell_7_2,10,false,"黑体");
        //合并单元格
        CellRangeAddress region_cell_7_2 = cellRangeAddress(7, 7, 2, 8);
        this.sheet.addMergedRegion(region_cell_7_2);
        //设置边框
        setBorder(region_cell_7_2);

        HSSFCell cell_7_3 = row7.createCell(9);
        cell_7_3.setCellStyle(style);
        cell_7_3.setCellValue("工程部位");
        //设置字体大小
        setFontSize(cell_7_3,10,true,"黑体");
        //合并单元格
        CellRangeAddress region_cell_7_3 = cellRangeAddress(7, 7, 9, 10);
        this.sheet.addMergedRegion(region_cell_7_3);
        //设置边框
        setBorder(region_cell_7_3);

        HSSFCell cell_7_4 = row7.createCell(11);
        cell_7_4.setCellStyle(style);
        cell_7_4.setCellValue("");
        //设置字体大小
        setFontSize(cell_7_4,10,false,"黑体");
        //合并单元格
        CellRangeAddress region_cell_7_4 = cellRangeAddress(7, 7, 11, 13);
        this.sheet.addMergedRegion(region_cell_7_4);
        //设置边框
        setBorder(region_cell_7_4);

        //第九行
        HSSFRow row8 = this.sheet.createRow(8);
        row8.setHeight((short) (30*20));

        HSSFCell cell_8_1 = row8.createCell(0);
        cell_8_1.setCellStyle(style);
        cell_8_1.setCellValue("代表数量");
        //设置字体大小
        setFontSize(cell_8_1,10,true,"黑体");
        //合并单元格
        CellRangeAddress region_cell_8_1 = cellRangeAddress(8, 8, 0, 1);
        this.sheet.addMergedRegion(region_cell_8_1);
        //设置边框
        setBorder(region_cell_8_1);

        HSSFCell cell_8_2 = row8.createCell(2);
        cell_8_2.setCellStyle(style);
        cell_8_2.setCellValue("1000m");
        //设置字体大小
        setFontSize(cell_8_2,10,false,"黑体");
        //合并单元格
        CellRangeAddress region_cell_8_2 = cellRangeAddress(8, 8, 2, 4);
        this.sheet.addMergedRegion(region_cell_8_2);
        //设置边框
        setBorder(region_cell_8_2);

        HSSFCell cell_8_3 = row8.createCell(5);
        cell_8_3.setCellStyle(style);
        cell_8_3.setCellValue("收样日期");
        //设置字体大小
        setFontSize(cell_8_3,10,true,"黑体");
        //合并单元格
        CellRangeAddress region_cell_8_3 = cellRangeAddress(8, 8, 5, 6);
        this.sheet.addMergedRegion(region_cell_8_3);
        //设置边框
        setBorder(region_cell_8_3);

        HSSFCell cell_8_4 = row8.createCell(7);
        cell_8_4.setCellStyle(style);
        cell_8_4.setCellValue("2021/6/7");
        //设置字体大小
        setFontSize(cell_8_4,10,false,"黑体");
        //合并单元格
        CellRangeAddress region_cell_8_4 = cellRangeAddress(8, 8, 7, 8);
        this.sheet.addMergedRegion(region_cell_8_4);
        //设置边框
        setBorder(region_cell_8_3);

        HSSFCell cell_8_5 = row8.createCell(9);
        cell_8_5.setCellStyle(style);
        cell_8_5.setCellValue("试验日期");
        //设置字体大小
        setFontSize(cell_8_5,10,true,"黑体");
        //合并单元格
        CellRangeAddress region_cell_8_5 = cellRangeAddress(8, 8, 9, 10);
        this.sheet.addMergedRegion(region_cell_8_5);
        //设置边框
        setBorder(region_cell_8_5);

        HSSFCell cell_8_6 = row8.createCell(11);
        cell_8_6.setCellStyle(style);
        cell_8_6.setCellValue("2021/6/7");
        //设置字体大小
        setFontSize(cell_8_6,10,false,"黑体");
        //合并单元格
        CellRangeAddress region_cell_8_6 = cellRangeAddress(8, 8, 11, 13);
        this.sheet.addMergedRegion(region_cell_8_6);
        //设置边框
        setBorder(region_cell_8_6);

        //第十行
        HSSFRow row9 = this.sheet.createRow(9);
        row9.setHeight((short) (30*20));
        HSSFCell cell_9 = row9.createCell(0);
        cell_9.setCellStyle(style);
        cell_9.setCellValue("试验结果");
        //设置字体大小
        setFontSize(cell_9,10,true,"黑体");
        //合并单元格
        CellRangeAddress region_cell_9 = cellRangeAddress(9, 9, 0, 13);
        this.sheet.addMergedRegion(region_cell_9);
        //设置边框
        setBorder(region_cell_9);

        //第十一行
        HSSFRow row10 = this.sheet.createRow(10);
        row10.setHeight((short) (30*20));

        HSSFCell cell_10_1 = row10.createCell(0);
        cell_10_1.setCellStyle(style);
        cell_10_1.setCellValue("检测项目");
        //设置字体大小
        setFontSize(cell_10_1,10,true,"黑体");
        //合并单元格
        CellRangeAddress region_cell_10_1 = cellRangeAddress(10, 10, 0, 4);
        this.sheet.addMergedRegion(region_cell_10_1);
        //设置边框
        setBorder(region_cell_10_1);

        HSSFCell cell_10_2 = row10.createCell(5);
        cell_10_2.setCellStyle(style);
        cell_10_2.setCellValue("标准要求");
        //设置字体大小
        setFontSize(cell_10_2,10,true,"黑体");
        //合并单元格
        CellRangeAddress region_cell_10_2 = cellRangeAddress(10, 10, 5, 8);
        this.sheet.addMergedRegion(region_cell_10_2);
        //设置边框
        setBorder(region_cell_10_2);

        HSSFCell cell_10_3 = row10.createCell(9);
        cell_10_3.setCellStyle(style);
        cell_10_3.setCellValue("检测结果");
        //设置字体大小
        setFontSize(cell_10_3,10,true,"黑体");
        //合并单元格
        CellRangeAddress region_cell_10_3 = cellRangeAddress(10, 10, 9, 12);
        this.sheet.addMergedRegion(region_cell_10_3);
        //设置边框
        setBorder(region_cell_10_3);

        HSSFCell cell_10_4 = row10.createCell(13);
        //设置边框
        style.setBorderBottom((short)1);
        style.setBorderLeft((short)1);
        style.setBorderRight((short)1);
        style.setBorderTop((short)1);

        cell_10_4.setCellStyle(style);
        cell_10_4.setCellValue("单项评定");
        //设置字体大小
        setFontSize(cell_10_4,10,true,"黑体");

        //检测结果有多少行
        int start_number = 10;
        int result_count = 5 ;
        for (int i = 1 ; i <= result_count ; i++){
            int rownum = start_number + i;
            HSSFRow row = this.sheet.createRow(rownum);
            row.setHeight((short) (30*20));

            HSSFCell cell1 = row.createCell(0);
            cell1.setCellStyle(style);
            cell1.setCellValue("检测项目");
            //设置字体大小
            setFontSize(cell1,10,true,"黑体");
            //合并单元格
            CellRangeAddress region_cell1 = cellRangeAddress(rownum, rownum, 0, 4);
            this.sheet.addMergedRegion(region_cell1);
            //设置边框
            setBorder(region_cell1);

            HSSFCell cell2 = row.createCell(5);
            cell2.setCellStyle(style);
            cell2.setCellValue("标准要求");
            //设置字体大小
            setFontSize(cell2,10,true,"黑体");
            //合并单元格
            CellRangeAddress region_cell2 = cellRangeAddress(rownum, rownum, 5, 8);
            this.sheet.addMergedRegion(region_cell2);
            //设置边框
            setBorder(region_cell2);

            HSSFCell cell3 = row.createCell(9);
            cell3.setCellStyle(style);
            cell3.setCellValue("检测结果");
            //设置字体大小
            setFontSize(cell3,10,false,"黑体");
            //合并单元格
            CellRangeAddress region_cell3 = cellRangeAddress(rownum, rownum, 9, 12);
            this.sheet.addMergedRegion(region_cell3);
            //设置边框
            setBorder(region_cell3);

            HSSFCell cell4 = row.createCell(13);
            //设置边框
            style.setBorderBottom((short)1);
            style.setBorderLeft((short)1);
            style.setBorderRight((short)1);
            style.setBorderTop((short)1);

            cell4.setCellStyle(style);

            cell4.setCellValue("单项评定");
            //设置字体大小
            setFontSize(cell4,10,false,"黑体");
        }
        int restart_number = start_number + result_count; //重新开始的行数
        System.out.println("restart_number="+restart_number);
        //重置后--第一行
        int rownum1 = restart_number+1;
        HSSFRow arow1 = this.sheet.createRow(rownum1);
        arow1.setHeight((short) (30*20));
        HSSFCell acell = arow1.createCell(0);
        style.setAlignment(HSSFCellStyle.ALIGN_LEFT);
        acell.setCellStyle(style);
        acell.setCellValue("结论:");
        //设置字体大小
        setFontSize(acell,10,true,"黑体");
        //合并单元格
        CellRangeAddress region_acell = cellRangeAddress(rownum1, rownum1, 0, 13);
        this.sheet.addMergedRegion(region_acell);
        //设置边框
        setBorder(region_acell);

        //重置后--第二行
        int rownum2 = restart_number+2;
        HSSFRow arow2 = this.sheet.createRow(rownum2);
        arow2.setHeight((short) (54*20));
        HSSFCell acell2 = arow2.createCell(0);
        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        acell2.setCellStyle(style);
        acell2.setCellValue("");
        //设置字体大小
        setFontSize(acell2,10,true,"黑体");
        //合并单元格
        CellRangeAddress region_acell2 = cellRangeAddress(rownum2, rownum2, 0, 13);
        this.sheet.addMergedRegion(region_acell2);
        //设置边框
        setBorder(region_acell2);

        //重置后--第三行
        int rownum3 = restart_number+3;

        HSSFRow arow3 = this.sheet.createRow(rownum3);
        arow3.setHeight((short) (30*20));

        HSSFCell acell_3_1 = arow3.createCell(0);
        acell_3_1.setCellStyle(style);
        acell_3_1.setCellValue("批准");
        //设置字体大小
        setFontSize(acell_3_1,10,true,"黑体");
        //合并单元格
        CellRangeAddress region_acell_3_1 = cellRangeAddress(rownum3, rownum3, 0, 1);
        this.sheet.addMergedRegion(region_acell_3_1);
        //设置边框
        setBorder(region_acell_3_1);

        HSSFCell acell_3_2 = arow3.createCell(2);
        acell_3_2.setCellStyle(style);
        acell_3_2.setCellValue("");
        //设置字体大小
        setFontSize(acell_3_2,10,false,"黑体");
        //合并单元格
        CellRangeAddress region_acell_3_2 = cellRangeAddress(rownum3, rownum3, 2, 3);
        this.sheet.addMergedRegion(region_acell_3_2);
        //设置边框
        setBorder(region_acell_3_2);

        HSSFCell acell_3_3 = arow3.createCell(4);
        acell_3_3.setCellStyle(style);
        acell_3_3.setCellValue("审核");
        //设置字体大小
        setFontSize(acell_3_3,10,true,"黑体");
        //合并单元格
        CellRangeAddress region_acell_3_3 = cellRangeAddress(rownum3, rownum3, 4, 5);
        this.sheet.addMergedRegion(region_acell_3_3);
        //设置边框
        setBorder(region_acell_3_3);

        HSSFCell acell_3_4 = arow3.createCell(6);
        acell_3_4.setCellStyle(style);
        acell_3_4.setCellValue("");
        //设置字体大小
        setFontSize(acell_3_4,10,false,"黑体");
        //合并单元格
        CellRangeAddress region_acell_3_4 = cellRangeAddress(rownum3, rownum3, 6, 7);
        this.sheet.addMergedRegion(region_acell_3_4);
        //设置边框
        setBorder(region_acell_3_4);

        HSSFCell acell_3_5 = arow3.createCell(8);
        acell_3_5.setCellStyle(style);
        acell_3_5.setCellValue("检测");
        //设置字体大小
        setFontSize(acell_3_5,10,true,"黑体");
        //合并单元格
        CellRangeAddress region_acell_3_5 = cellRangeAddress(rownum3, rownum3, 8, 9);
        this.sheet.addMergedRegion(region_acell_3_5);
        //设置边框
        setBorder(region_acell_3_5);

        HSSFCell acell_3_6 = arow3.createCell(10);
        acell_3_6.setCellStyle(style);
        acell_3_6.setCellValue("");
        //设置字体大小
        setFontSize(acell_3_6,10,false,"黑体");
        //合并单元格
        CellRangeAddress region_acell_3_6 = cellRangeAddress(rownum3, rownum3, 10, 13);
        this.sheet.addMergedRegion(region_acell_3_6);
        //设置边框
        setBorder(region_acell_3_6);

        //重置后--第四行
        int rownum4 = restart_number+4;

        HSSFRow arow4 = this.sheet.createRow(rownum4);
        arow4.setHeight((short) (30*20));

        HSSFCell acell_4_1 = arow4.createCell(0);
        acell_4_1.setCellStyle(style);
        acell_4_1.setCellValue("报告日期");
        //设置字体大小
        setFontSize(acell_4_1,10,true,"黑体");
        //合并单元格
        CellRangeAddress region_acell_4_1 = cellRangeAddress(rownum4, rownum4, 0, 1);
        this.sheet.addMergedRegion(region_acell_4_1);
        //设置边框
        setBorder(region_acell_4_1);

        HSSFCell acell_4_2 = arow4.createCell(2);
        acell_4_2.setCellStyle(style);
        acell_4_2.setCellValue("");
        //设置字体大小
        setFontSize(acell_4_2,10,false,"黑体");
        //合并单元格
        CellRangeAddress region_acell_4_2 = cellRangeAddress(rownum4, rownum4, 2, 3);
        this.sheet.addMergedRegion(region_acell_4_2);
        //设置边框
        setBorder(region_acell_4_2);

        HSSFCell acell_4_3 = arow4.createCell(4);
        acell_4_3.setCellStyle(style);
        acell_4_3.setCellValue("送样人");
        //设置字体大小
        setFontSize(acell_4_3,10,true,"黑体");
        //合并单元格
        CellRangeAddress region_acell_4_3 = cellRangeAddress(rownum4, rownum4, 4, 5);
        this.sheet.addMergedRegion(region_acell_4_3);
        //设置边框
        setBorder(region_acell_4_3);

        HSSFCell acell_4_4 = arow4.createCell(6);
        acell_4_4.setCellStyle(style);
        acell_4_4.setCellValue("");
        //设置字体大小
        setFontSize(acell_4_4,10,false,"黑体");
        //合并单元格
        CellRangeAddress region_acell_4_4 = cellRangeAddress(rownum4, rownum4, 6, 7);
        this.sheet.addMergedRegion(region_acell_4_4);
        //设置边框
        setBorder(region_acell_4_4);

        HSSFCell acell_4_5 = arow4.createCell(8);
        acell_4_5.setCellStyle(style);
        acell_4_5.setCellValue("见证人单位及姓名");
        //设置字体大小
        setFontSize(acell_4_5,10,true,"黑体");
        //合并单元格
        CellRangeAddress region_acell_4_5 = cellRangeAddress(rownum4, rownum4, 8, 9);
        this.sheet.addMergedRegion(region_acell_4_5);
        //设置边框
        setBorder(region_acell_4_5);

        HSSFCell acell_4_6 = arow4.createCell(10);
        acell_4_6.setCellStyle(style);
        acell_4_6.setCellValue("");
        //设置字体大小
        setFontSize(acell_4_6,10,false,"黑体");
        //合并单元格
        CellRangeAddress region_acell_4_6 = cellRangeAddress(rownum4, rownum4, 10, 13);
        this.sheet.addMergedRegion(region_acell_4_6);
        //设置边框
        setBorder(region_acell_4_6);

        //重置后--第五行
        int rownum5 = restart_number+5;
        HSSFRow arow5 = this.sheet.createRow(rownum5);
        arow5.setHeight((short) (20*20));
        HSSFCell acell_5_1 = arow5.createCell(0);
        style.setAlignment(HSSFCellStyle.ALIGN_LEFT);
        //--重置设置边框
        style.setBorderBottom((short)0);
        style.setBorderLeft((short)0);
        style.setBorderRight((short)0);
        style.setBorderTop((short)0);

        acell_5_1.setCellStyle(style);
        acell_5_1.setCellValue("注:1.本报告检测数据手写、涂改无效;复制报告未加盖本单位公章无效;");
        //设置字体大小
        setFontSize(acell_5_1,10,true,"黑体");
        //合并单元格
        this.sheet.addMergedRegion(cellRangeAddress(rownum5, rownum5, 0, 10));

        HSSFCell acell_5_2 = arow5.createCell(11);
        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        acell_5_2.setCellStyle(style);
        acell_5_2.setCellValue("共1页,第1页");
        //设置字体大小
        setFontSize(acell_5_2,10,true,"黑体");
        //合并单元格
        this.sheet.addMergedRegion(cellRangeAddress(rownum5, rownum5, 11, 13));

        //重置后--第六行
        int rownum6 = restart_number+6;
        HSSFRow arow6 = this.sheet.createRow(rownum6);
        arow6.setHeight((short) (20*20));
        HSSFCell acell_6_1 = arow6.createCell(0);
        style.setAlignment(HSSFCellStyle.ALIGN_LEFT);
        acell_6_1.setCellStyle(style);
        acell_6_1.setCellValue("   2.报告无“CMA章”和“报告专用章”无效;无检测、审核、批准人签字无效;");
        //设置字体大小
        setFontSize(acell_6_1,10,true,"黑体");
        //合并单元格
        this.sheet.addMergedRegion(cellRangeAddress(rownum6, rownum6, 0, 13));

        //重置后--第七行
        int rownum7 = restart_number+7;
        HSSFRow arow7 = this.sheet.createRow(rownum7);
        arow7.setHeight((short) (20*20));
        HSSFCell acell_7_1 = arow7.createCell(0);
        style.setAlignment(HSSFCellStyle.ALIGN_LEFT);
        acell_7_1.setCellStyle(style);
        acell_7_1.setCellValue("   3.对报告若有异议,应在报告发出后15个工作日内提出;");
        //设置字体大小
        setFontSize(acell_7_1,10,true,"黑体");
        //合并单元格
        this.sheet.addMergedRegion(cellRangeAddress(rownum7, rownum7, 0, 13));


        File file = new File("D:\JAVAWORK\demo3\demo.xlsx");
        FileOutputStream fout = null;
        try {
            fout = new FileOutputStream(file);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

        try {
            this.workbook.write(fout);
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            fout.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //设置字体和大小
    protected HSSFFont createFont(int fontSize,boolean bold ,String fontName){
        HSSFFont f0 = this.workbook.createFont();
        f0.setFontHeightInPoints((short) fontSize);//字号

        if(bold){
            f0.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//加粗
        }

        f0.setFontName(fontName);
        return f0;
    }
    //合并单元格
    protected CellRangeAddress cellRangeAddress(int firstRow, int lastRow, int firstCol, int lastCol){
        CellRangeAddress region = new CellRangeAddress(firstRow, lastRow, firstCol, lastCol);
        return region;
    }

    /**
     * 设置单元格字体大小
     */
    private void setFontSize(Cell cell,int fontSize,boolean bold ,String fontName) {
        Font font = this.workbook.createFont();
        font.setFontName(fontName);
        font.setFontHeightInPoints((short)fontSize);
        if(bold){
            font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//加粗
        }
        //解决单元格样式覆盖的问题
        CellStyle cStyle = this.workbook.createCellStyle();
        cStyle.cloneStyleFrom(cell.getCellStyle());
        cStyle.setWrapText(true);
        cStyle.setFont(font);
        cell.setCellStyle(cStyle);
    }

    private void setBorder(CellRangeAddress cellRangeAddress){
        RegionUtil.setBorderBottom(1, cellRangeAddress, this.sheet,this.workbook); // 下边框
        RegionUtil.setBorderLeft(1, cellRangeAddress, this.sheet,this.workbook); // 左边框
        RegionUtil.setBorderRight(1, cellRangeAddress, this.sheet,this.workbook); // 有边框
        RegionUtil.setBorderTop(1, cellRangeAddress, this.sheet,this.workbook); // 上边框
    }


}

  

原文地址:https://www.cnblogs.com/finnlee/p/15410753.html