You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用POI的SXSSFWorkbook在带样式非空Excel单元格插入值报错如何解决?

问题解决方案

问题原因

代码中直接调用xSheet.createRow(5)会强制创建新行,覆盖原Excel中第5行已存在的样式(比如边框),导致SXSSF检测到原有样式范围被修改,从而输出提示。而空白工作表中没有原有行对象,所以不会触发这个问题。

修复代码

修改逻辑,优先复用已存在的行和单元格,而非直接创建:

public SXSSFWorkbook selectCalculateResultExcelValue(SXSSFWorkbook wb, Map<String, Object> searchParam) {
    SXSSFSheet xSheet = wb.getSheet("Sheet1");
    String data = "JEJU";
    
    // 先尝试获取已存在的行,不存在再创建
    Row bodyRow = xSheet.getRow(5);
    if (bodyRow == null) {
        bodyRow = xSheet.createRow(5);
    }
    
    // 先尝试获取已存在的单元格,不存在再创建
    Cell bodyCell = bodyRow.getCell(0);
    if (bodyCell == null) {
        bodyCell = bodyRow.createCell(0);
    }
    
    // 设置单元格值,保留原有样式
    bodyCell.setCellValue(data);
    return wb;
}

关键说明

  • 复用已有行/单元格可以避免覆盖原有的样式对象,保留原Excel中的边框等格式,控制台的提示会消失。
  • 这种方式完全兼容SXSSFWorkbook的大数据处理能力,另一张需要处理百万级数据的工作表不受任何影响。

内容的提问来源于stack exchange,提问作者yunju

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 12:40:09