2012-04-18 10 views
5

私はapache XSSFを使ってxlsファイルを読むのに助けが必要です。XSSFでxlsを読むapache poiのヘルプが必要

"xlsx"ではXSSFの実装がうまく機能しています。 "xls"ファイルでは動作しません。

XSSFWorkbook workBook = new XSSFWorkbook("fileName"); 
    XSSFSheet sheet = workBook.getSheetAt(0); 
    XSSFRow row = sheet.getRow(0); 

任意の回避策が理解される:ここ

コードです。

+0

ためApache POI QuickGuideあなたは[ApacheのPOIクイックガイド](http://poi.apache.org/を読んでみてくださいましたを参照してください。スプレッドシート/ how-to.html#user_api)?これは、基本的に同じコードのXSSFファイルとHSSFファイルの両方を読み書きする方法を示しています。 – Gagravarr

+0

ありがとうございます。はい、私は.xml HSSFと.xlsx XSSFのために個別に行うことができます。しかし、我々は両方を実現する方法はありますか?Single実装ですか? –

答えて

9

直接ではなくXSSFクラスを使用して、HSSF(.XLS)とXSSF(.xlsx形式)の両方との間に共通するインターフェイスを使用する必要があります。あなたの質問からのコードスニペットは、その後になる:

Workbook wb = WorkbookFactory.create(file); // Or InputStream 
Sheet sheet = workBook.getSheetAt(0); 
Row row = sheet.getRow(0); 
Cell cell = row.getCell(0); 
System.out.println("Cell A1 is of type " + cell.getCellType()); 

より多くの情報と例

+0

これはxlsxでは動作しないようです。その形式でExcelファイルをアップロードしようとすると、奇妙なリフレクションエラーが発生します:java.lang.reflect.InvocationTargetException。 Excelファイルから得た行をベクトルに格納しておき、そのベクトルを別の関数に渡します。私がその関数の中にいるとき、ベクトルは常にXLSXファイルで空ですが、XLSファイルでは正しい値を持っています。 – berto77

+0

また、そのリンクはxssfを示していません。 hssfのみ。 – berto77

+0

これは、HSSFとXSSFの両方で同じコードが動作しますが、どの種類のワークブックを上からフィードするかによって異なります。問題がある場合は、新しい質問をして、完全なstacktrace# – Gagravarr

関連する問題