Я создаю файл Excel на основе файла CSV. Для чтения файла CSV я использую Opencsv API и Apache POI. В моем csv содержится 65537 строк.
class Test {
public static void main(String[] args) throws IOException {
Workbook wb = new HSSFWorkbook();
CreationHelper helper = wb.getCreationHelper();
Sheet sheet = wb.createSheet("new sheet");
CSVReader reader = new CSVReader(new FileReader("SampleData.csv"));
String[] line;
int r = 0;int count=0;
while ((line = reader.readNext()) != null) {
Row row = sheet.createRow((short) r++);
count=count+1;
System.out.println("count-"+count);
for (int i = 0; i < line.length; i++)
row.createCell(i)
.setCellValue(helper.createRichTextString(line[i]));
}
// Write the output to a file
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();
}}
Когда я запускаю эту программу, я получаю следующую ошибку:
Exception in thread "main" java.lang.IllegalArgumentException: Invalid row number (-32768) outside allowable range (0..65535)at org.apache.poi.hssf.usermodel.HSSFRow.setRowNum(HSSFRow.java:232)
at org.apache.poi.hssf.usermodel.HSSFRow.<init>(HSSFRow.java:86)
at org.apache.poi.hssf.usermodel.HSSFRow.<init>(HSSFRow.java:70)
at org.apache.poi.hssf.usermodel.HSSFSheet.createRow(HSSFSheet.java:205)
at org.apache.poi.hssf.usermodel.HSSFSheet.createRow(HSSFSheet.java:71)
at com.arosys.utilityclasses.Test.main(Test.java:23)Java Result: 1
Я попытался отследить, сколько строк она поддерживает, я обнаружил, что она поддерживает только 32768, а также попытался использовать меньшее количество строк, она отлично работает и создает файл excel.
, пожалуйста, помогите мне разобраться в этой проблеме, если мой CSV содержит 65536 строк, тогда как я могу записать файл Excel (XLS).
Спасибо