5

こんにちは、xlsx ファイルまたは xls ファイルを読みたいと思っています。XSSF は xls ファイルをサポートできますか? または、両方の種類のファイルに対して個別のコードを記述する必要がありますか?

4

6 に答える 6

5

はい、Apache POI を使用して xlsx および xlsファイルを読み書きできます。

于 2011-01-17T10:26:37.383 に答える
2

コードを両方で機能させたい場合は、org.apache.poi.ssパッケージを使用する必要があります。このパッケージは、XSSF と HSSF を統合するために作成されました。

于 2011-01-17T10:26:47.220 に答える
2

私のプロジェクトの 1 つで、Apache POI と OpenCSV を使用し、xlsx、xls、および csv ファイルの両方を読み取ることができる基本的なユーティリティを作成しました。

コンバーターを指定すると、次のように行をオブジェクトに変換できます。

RowConverter<Country> converter = (row) -> new Country(row[0], row[1]);

ExcelReader<Country> reader = ExcelReader.builder(Country.class)
     .converter(converter)
     .withHeader()
     .csvDelimiter(';')
     .sheets(1)
     .build();

List<Country> list;
list = reader.read("CountryCodes.xlsx");
list = reader.read("CountryCodes.xls");
list = reader.read("CountryCodes.csv");

プロジェクトはgithubにあります。

于 2015-02-20T09:50:02.797 に答える
0

これを xls と xlsx に使用します

Workbook wb_xssf; //Declare XSSF WorkBook 
Workbook wb_hssf; //Declare HSSF WorkBook 
Sheet sheet=null; //sheet can be used as common for XSSF and HSSF WorkBook 

if(fileBean.getFileExt().equalsIgnoreCase("xls")){
    wb_hssf = new HSSFWorkbook();
    sheet = wb_hssf.getSheetAt(0);
}else if (fileBean.getFileExt().equalsIgnoreCase("xlsx")){
    wb_xssf = new XSSFWorkbook(fileBean.getFileInput());      
    sheet = wb_xssf.getSheetAt(0);                                                          
}
于 2013-12-09T04:11:30.783 に答える
0

次のコードを使用して変更できます (必要に応じて異なります)。

public void parseXLSX() {

    String pathToXLSX = "file.xlsx";
    File file = new File(pathToXLSX);

    FileInputStream in = null;

    try {
        in = new FileInputStream(file);
        XSSFWorkbook workbook = new XSSFWorkbook(in);
        for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
            XSSFSheet sheet = workbook.getSheetAt(i);
            int rowNumber = sheet.getLastRowNum() + 1;
            for (int j = 1; j < rowNumber; j++) {
                Iterator it = sheet.getRow(j).cellIterator();
                while (it.hasNext()) {
                    System.out.println(it.next().toString());
                }
            }
        }
    } catch (IOException ex) {
        ex.getMessage();
        ex.printStackTrace();
    } finally {
        if (in != null) {
            try {
                in.close();
            } catch (IOException ex) {
                ex.getMessage();
                ex.printStackTrace();
            }
        }
    }

}

于 2019-01-29T13:19:23.300 に答える