我有一张excel表,我正在阅读excel cel值并导入到DB
使用Apache POI:
if (row.getCell(8) != null) {
setActualDeparture(DateUtil.getJavaDate(row.getCell(8).getNumericCellValue()));
}
Excel 8上的Excel工作表为空,因此不应导入任何内容。但它需要1899-12-31T00:00:00之类的日期
可能是什么问题?
答案 0 :(得分:2)
如果此单元格的文件中没有存储任何内容,则Row.getCell(int cellnum)
仅返回NULL。如果该单元格的文件中存储了某些内容,则返回该单元格。即使这只是一个NumberFormat,例如此单元格的任何其他信息。
但是第二种方法Row.getCell(int cellnum, Row.MissingCellPolicy policy)
http://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Row.html#getCell%28int,%20org.apache.poi.ss.usermodel.Row.MissingCellPolicy%29可以在您的情况下使用。
实施例:
A1中没有任何内容,但有一个特殊的NumberFormat而不是General。
import org.apache.poi.xssf.usermodel.*;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.*;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.FileInputStream;
import java.io.InputStream;
class GetEmtyCellTest {
public static void main(String[] args) {
try {
InputStream inp = new FileInputStream("workbook.xlsx");
Workbook wb = WorkbookFactory.create(inp);
Sheet sheet = wb.getSheetAt(0);
Row row = sheet.getRow(0);
System.out.println(row.getCell(0).getNumericCellValue()); //0.0
System.out.println(row.getCell(0, Row.RETURN_BLANK_AS_NULL)); //null
FileOutputStream fileOut = new FileOutputStream("workbook.xlsx");
wb.write(fileOut);
fileOut.flush();
fileOut.close();
} catch (InvalidFormatException ifex) {
} catch (FileNotFoundException fnfex) {
} catch (IOException ioex) {
}
}
}