Apache POI, usando XSSF e HSSF
-
27-09-2019 - |
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?
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);