Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从XSSFWorkbook和SXSSFWorkbook强制转换对象_Java_Apache Poi - Fatal编程技术网

Java 从XSSFWorkbook和SXSSFWorkbook强制转换对象

Java 从XSSFWorkbook和SXSSFWorkbook强制转换对象,java,apache-poi,Java,Apache Poi,我使用一个模板文件,第一页包含两个表。我需要在第一张纸上执行2个操作 有位置数据表列标题(例如,sr.no、位置和相关数据字段),我需要在其中使用XSSFWorkbook,以便根据位置的大小向下移动行 有一个设备表,我需要在其中使用流式api,即SXSSFWorkbook对象 我使用XSSFWorkbook创建工作簿对象,向下移动行,然后尝试将工作簿强制转换为SXSSFWorkbook。但它在执行时会抛出错误 java.lang.IllegalArgumentException: Attempt

我使用一个模板文件,第一页包含两个表。我需要在第一张纸上执行2个操作

  • 有位置数据表列标题(例如,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,则无法创建
    XSSF从中删除工作簿。有人能建议一下怎么做吗

    我试过:

    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);
        }
    
    FileInputStream-inputStream=newfileinputstream(新文件(filePath));
    XSSF工作簿=新XSSF工作簿(inputStream);
    XSSFSheet sheet=workbook.getSheet(“Sheet1”);
    //第一班向下排-工作正常
    sheet.shiftRows(tab1HeaderRowNum+1,sheet.getLastRowNum(),locationRecordsSize-1);
    //复制新行上的行样式-工作正常
    对于(int i=1;i

    Im使用Apache POI 3.15

    这种方法是不可能的:“不支持的内容:访问模板中的初始单元格和行…”。现在我正在使用SXSSF编写所有模板组件。