ald*_*tis 10 java xlsx apache-poi
我正在尝试用POI读取大型xlsx文件的第一次测试,但是使用小文件进行简单测试我无法显示单元格的值.
有人可以告诉我,我的错误是什么.欢迎提出所有建议.谢谢.
Test.java:
import java.io.File;
import java.io.FileInputStream;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class Test {
public static void main(String[] args) throws Throwable {
File file = new File("/tmp/test.xlsx");
OPCPackage pkg = OPCPackage.open(new FileInputStream(file.getAbsolutePath()));
XSSFWorkbook xssfwb = new XSSFWorkbook(pkg);
SXSSFWorkbook wb = new SXSSFWorkbook(xssfwb, 100);
Sheet sh = wb.getSheet("Hola");
System.out.println("Name: "+sh.getSheetName()); // Line 19
System.out.println("Val: "+sh.getRow(1).getCell(1).getStringCellValue()); // Line 20
}
}
Run Code Online (Sandbox Code Playgroud)
结果:
Name: Hola
Exception in thread "main" java.lang.NullPointerException
at Test.main(Test.java:20)
Run Code Online (Sandbox Code Playgroud)
test.xlsx:

小智 26
请咨询:类似问题 SXSSFWorkBook是只写的,它不支持阅读.
对于.xlsx文件的低内存读取,您应该查看XSSF和SAX EventModel文档:Gagravarr
如果内存不是问题,你可以使用XSSFSheet,例如
File file = new File("D:/temp/test.xlsx");
FileInputStream fis = new FileInputStream(file);
XSSFWorkbook wb = new XSSFWorkbook(fis);
XSSFSheet sh = wb.getSheet("Hola");
System.out.println(sh.getLastRowNum());
System.out.println("Name: "+sh.getSheetName());
Row row = sh.getRow(1);
System.out.println(row.getRowNum());
System.out.println("Val: "+sh.getRow(1).getCell(1).getStringCellValue());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
61153 次 |
| 最近记录: |