POI 设置默认Excel单元格样式为文本

设置默认Excel单元格样式为文本

通过Sheet.setDefaultColumnStyle(int column, CellStyle style); 方法进行设置列的默认样式

		// 创建操作对象
        XSSFWorkbook workbook = new XSSFWorkbook();
        // 创建工作簿
        Sheet sheet = workbook.createSheet("模板内容");
        sheet.setDefaultColumnWidth(30);

        // 设置单元格格式为文本格式
        XSSFCellStyle style = workbook.createCellStyle();
        XSSFDataFormat format = workbook.createDataFormat();
        style.setDataFormat(format.getFormat("@"));

        //设置默认列的单元格格式为"文本"
        for (int i = 0; i < headList.getFirst().size(); i++) {
            //columnIndex表示第几列
            sheet.setColumnWidth(0, 30);
            // 主要起作用的地方
            sheet.setDefaultColumnStyle(i, style);
        }

注意,当导入的Excel文档存在内容时,对应的默认样式会消失
添加内容后,默认样式消失
在这里插入图片描述
没有添加内容的单元格,默认样式没有失效
在这里插入图片描述
原因:猜测是因为写入单元格内容时,默认单元格样式被覆盖了,导致不生效。
解决方法:在写入单元格内容的时候,设置单元格样式

    // 处理表格头部样式
    XSSFCellStyle cellStyle = workbook.createCellStyle();
    cellStyle.setAlignment(HorizontalAlignment.LEFT);
    cellStyle.setWrapText(Boolean.TRUE);
    cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
    
    // 设置为文本
    XSSFDataFormat format = workbook.createDataFormat();
    cellStyle.setDataFormat(format.getFormat("@"));

    for (List<String> datas : dataList) {
        Row row = sheet.createRow(rowIndex);
        row.setHeight((short) (20 * 20));

        int subIndex = 0;
        for (String data : datas) {
            Cell cell = row.createCell(subIndex);
            cell.setCellValue(data);
            // 设置单元格样式
            cell.setCellStyle(cellStyle);
            subIndex++;
        }
        rowIndex++;
    }

拓展内容

  • 日期格式
 cell.setCellValue(new Date(2008,5,5));
// 设置日期格式
HSSFCellStyle cellStyle = demoWorkBook.createCellStyle();
HSSFDataFormat format= demoWorkBook.createDataFormat();
cellStyle.setDataFormat(format.getFormat("yyyy年m月d日"));
cell.setCellStyle(cellStyle);
  • 保留两位小数格式
cell.setCellValue(1.2);
// 设置保留两位小数
HSSFCellStyle cellStyle = demoWorkBook.createCellStyle();
cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00"));
cell.setCellStyle(cellStyle);
  • 货币格式
cell.setCellValue(20000);
// 设置货币格式
HSSFCellStyle cellStyle = demoWorkBook.createCellStyle();
cellStyle.setDataFormat(format.getFormat("?#,##0"));
cell.setCellStyle(cellStyle);
  • 百分比格式
cell.setCellValue(10);
// 设置百分比格式
HSSFCellStyle cellStyle = demoWorkBook.createCellStyle();
cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00%"));
cell.setCellStyle(cellStyle);
  • 中文大写格式
cell.setCellValue(10);
// 设置中文大写格式
HSSFCellStyle cellStyle = demoWorkBook.createCellStyle();
cellStyle.setDataFormat(format.getFormat("[DbNum2][$-804]0"));
cell.setCellStyle(cellStyle);
  • 科学计数法格式
cell.setCellValue(10000000000000000000000);
// 科学计数法格式
HSSFCellStyle cellStyle = demoWorkBook.createCellStyle();
cellStyle.setDataFormat( HSSFDataFormat.getBuiltinFormat("0.00E+00"));
cell.setCellStyle(cellStyle);
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值