在这里,我想从.xlsx文件中提取数据,为此我已经添加了poi jar并创建了引用fileInputStream
package demo;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
public class DemoExcel {
public static void main(String[] args) throws Exception{
File excel = new File("C:\\Users\\Devaditya\\Documents\\Book1.xlsx");
FileInputStream fis = null;
fis = new FileInputStream(excel);
System.out.println(fis.toString());
HSSFWorkbook wb = new HSSFWorkbook(fis);
System.out.println(wb.toString());
HSSFSheet sh = wb.getSheet("Data");
System.out.println(sh.toString());
}
}
Run Code Online (Sandbox Code Playgroud)
我在这里得到错误: -
Exception in thread "main" java.io.IOException: Invalid header signature; read 0, expected -2226271756974174256
at org.apache.poi.poifs.storage.HeaderBlockReader.<init>(HeaderBlockReader.java:88)
at org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.java:83)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:210)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:191)
at demo.DemoExcel.main(DemoExcel.java:23)
Run Code Online (Sandbox Code Playgroud)
让我们从类型开始WorkBook.
这是旧的二进制专有Excel格式,由扩展名知道.xls.
这是扩展名称的新XML Excel格式.xlsx.
所以,你使用的是错误的类.
事实上,最好不要使用特定的类,让POI解决你的问题.使用WorkbookFactory:
final Workbook workbook = WorkbookFactory.create(excel);
Run Code Online (Sandbox Code Playgroud)
这是:
interface.File当需要而不是将整个工作簿篡改到内存中时,POI可以读取零碎的内容.close()的FileInputStream.| 归档时间: |
|
| 查看次数: |
5735 次 |
| 最近记录: |