Как исправить «Неверный номер строки (-4) вне допустимого диапазона (0..1048575)»? - PullRequest
0 голосов
/ 20 октября 2019

Я пытаюсь записать некоторые данные в файл xlsx, используя apache poi. и мой код выглядит так

В листе Excel уже есть 6 строк и 2 столбца

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class excelwrite {

public void excelWrite(String filepath, String filename, String 
sheetname, String[] dataTowrite) throws IOException
{
    File file = new File(filepath+"\\"+filename);
    FileInputStream inputstream  = new FileInputStream(file);
    Workbook workbook = null;
    String fileextensionname = 
filename.substring(filename.indexOf(".")+1);
    if(fileextensionname.equalsIgnoreCase("xlsx"))
        workbook = new XSSFWorkbook(inputstream);
    else
        workbook = new HSSFWorkbook(inputstream);
    Sheet sheet = workbook.getSheet(sheetname);

    int Rowcount = sheet.getFirstRowNum() - sheet.getLastRowNum();

    Row row = sheet.getRow(0);

    Row newrow = sheet.createRow(Rowcount+1);

    for(int i=0;i<row.getLastCellNum();i++)
    {
        Cell cell = newrow.createCell(i);
        cell.setCellValue(dataTowrite[i]);
    }
    inputstream.close();

    FileOutputStream outputstream = new FileOutputStream(file);

    workbook.write(outputstream);
    outputstream.close();
  }

public static void main(String[] args) throws IOException {

    excelwrite write = new excelwrite();
    String[] datatowrite = {"Mr. E","DURGAPUR"};
    String filepath = "C:\\Users\\malfoy\\Desktop";
    write.excelWrite(filepath,"testfile.xlsx","read",datatowrite);

}

}

Теперь во время работы программы возникает исключение, которое говорит: «Неверный номер строки (-4) вне допустимого диапазона (0..1048575) ". Как это исправить?

1 Ответ

0 голосов
/ 20 октября 2019

int Rowcount = sheet.getLastRowNum () - sheet.getFirstRowNum ();

...