Как я могу читать файлы .xlsx и .xls в Java? - PullRequest
5 голосов
/ 17 января 2011

привет я хочу прочитать файл xlsx или файл xls, что бы он ни XSSF может поддерживать файл xls? или мне нужно написать отдельный код для обоих типов файлов?

Ответы [ 6 ]

5 голосов
/ 17 января 2011

Да, вы можете использовать Apache POI для чтения и записи файлов xlsx и xls .

2 голосов
/ 17 января 2011

Если вы хотите, чтобы ваш код работал для обоих, вам придется использовать пакет org.apache.poi.ss. Этот пакет был создан для объединения XSSF и HSSF.

0 голосов
/ 29 января 2019

Вы можете использовать следующий код и изменить его (зависит от ваших потребностей):

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();
            }
        }
    }

}

0 голосов
/ 19 марта 2018

Вы можете попробовать это для файлов xlsx:

Во-первых, вам нужны следующие jar-загрузки:

  • dom4j-2.1.0.jar
  • poi-3.17.jar
  • poi-ooxml-3.17.jar
  • commons-collection4-4.1.jar
  • xmlbeans-2.3.0.jar

Во-вторых, добавьте следующий импорт в ваше рабочее пространство:

import org.apache.poi.ss.usermodel.*;
import java.io.File;
import java.io.IOException;
import java.io.FileInputStream;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

В-третьих, начните строить свой метод, например, для чтения используйте это:

public void ReadExcelFiles(String pathxlsx,javax.swing.JTable jtable) throws IOException{
    //String nameSheet;
    File file = new File(pathxlsx);
    FileInputStream fis = new FileInputStream(file);
    XSSFWorkbook wb = new XSSFWorkbook(fis);
    // nameSheet=wb.getSheetName(0);
    //XSSFSheet sh = wb.getSheet(nameSheet);
    XSSFSheet sh = wb.getSheetAt(0);
    System.out.println(sh.getLastRowNum());
    System.out.println("Name: "+sh.getSheetName()); 
    Row row = sh.getRow(6);

    System.out.println(row.getRowNum());
    System.out.println("columna "+row.getCell(1).getStringCellValue());
    System.out.println("columna "+row.getCell(2).getStringCellValue());
    System.out.println("columna "+row.getCell(3).getStringCellValue());
    System.out.println("columna "+row.getCell(4).getStringCellValue());

    System.out.println("Val: "+sh.getRow(4).getCell(6).getStringCellValue()); 
}
0 голосов
/ 20 февраля 2015

Для одного из моих проектов я создал базовую утилиту, которая использует 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 .

0 голосов
/ 09 декабря 2013

используйте это для 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);                                                          
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...