Написал код для записи из одного excel файла в другой. Выдает ошибку: "Exception in thread "main" java.lang.NullPointerException at Try5.Main5.ma..."
Написал код для записи из одного excel файла в другой. Выдает ошибку: "Exception in thread "main" java.lang.NullPointerException at Try5.Main5.main(Main5.java:30)"
Не могу понять причину. Вот код:
package Try5;
import java.io.IOException;
import java.io.*;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.*;
public class Main5 {
public static void main (String [] args) throws IOException {
FileInputStream fis1 = new FileInputStream("C:\\Users\\egorovvv\\Documents\\IntelIJ IDEA\\Projects\\Work Excel 2\\Excel1.xlsx");
FileOutputStream fos3 = new FileOutputStream("C:\\Users\\egorovvv\\Documents\\IntelIJ IDEA\\Projects\\Work Excel 2\\Excel3.xlsx");
Workbook book1 = new XSSFWorkbook(fis1);
Workbook book3 = new XSSFWorkbook();
String value;
int bookSN = book1.getNumberOfSheets(); //bookSheetsNumber
for (int i = 0; i <= bookSN; i++) {
Sheet book1S = book1.getSheetAt(i);
int book1RN = book1S.getLastRowNum(); //book1RowsNumber
Sheet book3S = book3.createSheet(book1.getSheetName(i));
for (int j = 0; j <= book1RN; j++) {
Row book1R = book1S.getRow(j);
int book1CN = book1R.getLastCellNum(); //book1CellsNumber
Row book3R = book3S.createRow(j);
for (int k = 0; k <= book1CN; k++) {
Cell book1C = book1R.getCell(k);
Cell book3C = book3R.createCell(k);
switch (book1C.getCellType()) {
case NUMERIC:
value = Integer.toString((int)book1C.getNumericCellValue());
book3C.setCellValue(value);
break;
case STRING:
value = book1C.getStringCellValue();
book3C.setCellValue(value);
break;
}
}
}
}
book3.write(fos3);
book1.close();
book3.close();
}
}
Ответы (1 шт):
Автор решения: Temply
→ Ссылка
Исправил условный оператор switch. Теперь все работает. Код ниже:
package Try6;
import java.io.IOException;
import java.io.*;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.*;
public class Main6 {
public static void main (String [] args) throws IOException {
FileInputStream fis1 = new FileInputStream("C:\\Users\\egorovvv\\Documents\\IntelIJ IDEA\\Projects\\Work Excel 2\\book1.xlsx");
FileOutputStream fos1 = new FileOutputStream("C:\\Users\\egorovvv\\Documents\\IntelIJ IDEA\\Projects\\Work Excel 2\\book3.xlsx");
XSSFWorkbook b1 = new XSSFWorkbook(fis1);
XSSFWorkbook b3 = new XSSFWorkbook();
int b1SN = b1.getNumberOfSheets();
int b1RN;
int b1CN;
String valueString = "0";
int valueInt = 0;
for (int sh = 0; sh < b1SN; sh++) {
Sheet b1S = b1.getSheetAt(sh);
Sheet b3S = b3.createSheet(b1S.getSheetName());
b1RN = b1S.getLastRowNum();
for (int r = 0; r <= b1RN; r++) {
Row b1R = b1S.getRow(r);
Row b3R = b3S.createRow(r);
b1CN = b1R.getLastCellNum();
for (int c = 0; c <= b1CN; c++) {
Cell b1C = b1R.getCell(c);
Cell b3C = b3R.createCell(c);
if (b1C != null) {
switch (b1C.getCellType()) {
case NUMERIC:
valueInt = (int) b1C.getNumericCellValue();
b3C.setCellValue(valueInt);
break;
case STRING:
valueString = b1C.getStringCellValue();
b3C.setCellValue(valueString);
break;
}
}
// if (r == 0 && c == 0 || c == 1 || c == 3 || c == 4 || c == 5 || c == 6 || c == 7 || c == 8) {
// CellRangeAddress mergeCells = new CellRangeAddress(0,1,0,0);
// b3S.addMergedRegion(mergeCells);
// }
}
}
}
b3.write(fos1);
fos1.close();
}
}