java中workbook,从XSSFWorkbook和SXSSFWorkbook中转换对象

我在第一张纸上使用包含2个表的模板文件 . 我需要在第一张纸上执行2次操作 .

有Locations数据表列 Headers (例如sr.no,位置和相关数据字段),我需要在其中使用XSSFWorkbook,以便我可以根据位置的大小向下移动行 .

有设备表,我需要使用流API,即SXSSFWorkbook对象

我使用XSSFWorkbook创建了工作簿对象,向下移动了行,然后尝试将工作簿转换为SXSSFWorkbook . 但它在执行时会抛出错误

java.lang.IllegalArgumentException: Attempting to write a row[11] in the range [0,30] that is already written to disk.

如果我首先使用SXSSFWorkbook创建工作簿obj,则无法创建

XSSFWorkbook来自它 . 有人可以建议如何做到这一点 .

我试过了 :

FileInputStream inputStream = new FileInputStream(new File(filePath));

XSSFWorkbook workbook = new XSSFWorkbook(inputStream);

XSSFSheet sheet = workbook.getSheet("Sheet1");

// First shift rows down - WORKS FINE

sheet.shiftRows( tab1HeaderRowNum + 1, sheet.getLastRowNum(), locationRecordsSize - 1);

// Copy style of row on new rows - WORKS FINE

for(int i = 1; i < locationRecordsSize; i++){

sheet.copyRows(tab1HeaderRowNum , tab1HeaderRowNum , (tab1HeaderRowNum + i), cellCopyPolicy);

}

// Create new SXSSFWorkbook

SXSSFWorkbook sxssfWorkbook = new SXSSFWorkbook(workbook);

SXSSFSheet sxssfSheet = sxssfWorkbook.getSheet("Sheet1");

if(sxssfSheet.getRow(rowNum) == null){ // rowNum is of row which is newly added using shiftRows

row = sxssfSheet.createRow(rowNum); // Error Occurs Here

}else{

row = sxssfSheet.getRow(rowNum);

}

我正在使用Apache POI 3.15

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值