使用POI 3.1.7来动态生成一个表格并设置列宽的代码如下:

import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;

import java.io.FileOutputStream;
import java.io.IOException;

public class GenerateTable {

    public static void main(String[] args) {
        HSSFWorkbook workbook = new HSSFWorkbook();
        HSSFSheet sheet = workbook.createSheet('Table');

        // 设置列宽
        sheet.setColumnWidth(0, 4000);
        sheet.setColumnWidth(1, 6000);
        sheet.setColumnWidth(2, 3000);

        // 创建表头行
        Row headerRow = sheet.createRow(0);

        // 设置表头样式
        HSSFCellStyle headerCellStyle = workbook.createCellStyle();
        headerCellStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);
        headerCellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
        headerCellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        headerCellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        headerCellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
        headerCellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
        headerCellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);

        // 创建表头单元格
        Cell headerCell1 = headerRow.createCell(0);
        headerCell1.setCellValue('列1');
        headerCell1.setCellStyle(headerCellStyle);

        Cell headerCell2 = headerRow.createCell(1);
        headerCell2.setCellValue('列2');
        headerCell2.setCellStyle(headerCellStyle);

        Cell headerCell3 = headerRow.createCell(2);
        headerCell3.setCellValue('列3');
        headerCell3.setCellStyle(headerCellStyle);

        // 创建数据行并填充数据
        for (int i = 1; i <= 10; i++) {
            Row dataRow = sheet.createRow(i);
            Cell dataCell1 = dataRow.createCell(0);
            dataCell1.setCellValue('数据' + i);

            Cell dataCell2 = dataRow.createCell(1);
            dataCell2.setCellValue('数据' + i);

            Cell dataCell3 = dataRow.createCell(2);
            dataCell3.setCellValue('数据' + i);
        }

        // 将表格写入文件
        try {
            FileOutputStream fileOutputStream = new FileOutputStream('Table.xls');
            workbook.write(fileOutputStream);
            fileOutputStream.close();
            System.out.println('表格生成成功!');
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

这段代码会在当前目录下生成一个名为Table.xls的Excel文件,包含一个名为Table的工作表。工作表中有一个表头行和10行数据。表头行和数据行都有3列,每列的宽度分别为4000、6000和3000。表头的背景色为灰色,单元格的边框为实线。你可以根据需要修改列宽、表头内容和数据内容。


原文地址: https://www.cveoy.top/t/topic/pcTm 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录