ここからデータを抽出したい .xlsx
ファイルとそのために私はすでにポイの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());
}
}
ここで私はエラーを受けています: -
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)
回答:
回答№1は5の種類から始めましょう WorkBook
.
これは古いバイナリ独自のExcelフォーマットで、拡張子で知られています .xls
.
これはエクステンションで知られる新しいXML Excelフォーマットです。 .xlsx
.
だから、あなたは間違ったクラスを使っています。
実際には、特定のクラスをまったく使用しないほうが良いでしょう。POIが自分の持っているものを解決しましょう。使う WorkbookFactory
:
final Workbook workbook = WorkbookFactory.create(excel);
これは:
- へのプログラミング
interface
. - POIがサポートしている限り、読まれるワークブックの種類の変更に対して堅牢
- より速くより効率的です。 POIを読むことができます
File
ワークブック全体をメモリに丸め込む必要があるのではなく、必要であるとき。 - していないときに持っているメモリリークはありません
close()
そのFileInputStream
.
回答№2の場合は0
マイクロソフトオフィスのExcelでファイルを開こうとするすると、ポップしようとしているファイルがExcelファイルではないことを知らせるポップメッセージが表示されます。開いて、Excelファイルとして保存するだけです。