Pergunta

Tenho um problema com o projeto Apache Poi.

Eu não consegui usar XSSF e HSSF no "Mesma aula de Java". Qual frasco devo fazer o download ou qual artefato devo obter add no maven?

Eu quero lidar com os dois xls e xlsx arquivos ao mesmo tempo. Quando eu receber o erro da versão do Excel, vou mudar o XSSF para HSSF ou HSSF para XSSF.

Como posso fazer isso?

Foi útil?

Solução

Em vez de fazer isso, tente usar o novo lançamento do Apache Poi 3.7, ele possui pacote SS que lida com HSSF e XSSF sem se preocupar com o tipo

Detalhes aqui: http://poi.apache.org/spreadsheet/index.html

Outras dicas

Além da solução de pacote SS "padrão", você também pode simplesmente usar um if statement Para carregar corretamente o direito workbook format em um Workbook interface objeto, assim:

Workbook workbook; //<-Interface, accepts both HSSF and XSSF.
File file = new File("YourExcelFile.xlsx");
if (FileUtils.getFileExt(file).equalsIgnoreCase("xls")) {
  workbook = new HSSFWorkbook(new FileInputStream(file));
} else if (FileUtils.getFileExt(file).equalsIgnoreCase("xlsx")) {
  workbook = new XSSFWorkbook(new FileInputStream(file));
} else {
  throw new IllegalArgumentException("Received file does not have a standard excel extension.");
}

Use a fábrica que lida com o XSSF e HSSF

import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

Workbook wb = WorkbookFactory.create(new File("file"))

Isso funcionou para mim:

    filePath = "C:\Users\user1\workspace\myproject\Excel.xlsx"
    String extension = FilenameUtils.getExtension(filePath);
    System.out.println(extension);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top