web-dev-qa-db-fra.com

Différence entre HSSFWorkbook et Workbook dans Apache POI

J'étudiais la lecture/écriture d'Excel à l'aide de la bibliothèque apachePOI, j'ai trouvé deux types de solutions, c'est-à-dire l'une obtenue en utilisant HSSFWorkbook et l'autre avec Workbook. Maintenant, je doute qu'il existe deux solutions pour obtenir une fonctionnalité unique.

Mon code:

FileInputStream fis=new FileInputStream("D:\\Extras\\SeleniumPractice\\TestData.xlsx");     
Workbook workbook=WorkbookFactory.create(fis);
Sheet sheet=workbook.getSheet("TestData");

Quand j'ai cherché:

FileInputStream file = new FileInputStream(new File("C:\\test.xls"));

             
//Get the workbook instance for XLS file 
HSSFWorkbook workbook = new HSSFWorkbook(file);

 
//Get first sheet from the workbook
HSSFSheet sheet = workbook.getSheetAt(0);

Merci d'avance.. :)

Merci Mahesh

13
Shetty's

Workbook est l'interface commune, qui fonctionne à la fois pour HSSF (.xls) et XSSF (.xlsx). Il a été introduit dans POI 3.5, si ma mémoire est correcte.

Si vous utilisez les interfaces courantes comme Workbook, vous pouvez faire fonctionner le même code de manière transparente avec HSSF et XSSF

Si vous codez uniquement pour HSSF via HSSFWorkbook , vous ne pouvez travailler qu'avec des fichiers .xls. Je vous suggère d'opter pour les plus courantes dans la mesure du possible

Votre code de chargement devrait être quelque chose comme:

 Workbook wb = WorkbookFactory.create(new File("test.xls"));
 Sheet s = wb.getSheetAt(0);
 ....

Cela détectera automatiquement le type du fichier et vous donnera un objet de travail pour .xls ou .xlsx en fonction de ce qu'il trouve

36
Gagravarr

La principale différence que je connais est

Workbook est une interface, tandis que HSSFWorkbook, SXSSFWorkbook, XSSFWorkbook sont les clases qui implémentent l'interface Workbook.

interface publique Classeur Représentation de haut niveau d'un classeur Excel. Il s'agit du premier objet que la plupart des utilisateurs construiront, qu'ils lisent ou écrivent un classeur.

la classe finale publique HSSFWorkbook étend POIDocument implémente Workbook Représentation de haut niveau d'un classeur .xls. Il s'agit du premier objet que la plupart des utilisateurs construiront, qu'ils lisent ou écrivent un classeur .xls.

pour plus de détails, reportez-vous à POI api docs

10
Sankumarsingh

Qu'est-ce que Apache POI?

Apache POI is a popular API that allows programmers to create, modify, 
and display MS Office files using Java programs. 

Apache POI est une bibliothèque 100% open source fournie par Apache Software Foundation.

Classeur

Il s'agit de la super-interface de toutes les classes qui créent ou maintiennent des classeurs Excel. Il appartient au package org.Apache.poi.ss.usermodel. Les deux classes qui implémentent cette interface sont les suivantes:

(1). HSSFWorkbook: Cette classe a des méthodes pour lire et écrire des fichiers Microsoft Excel au format .xls.

(2) .XSSFWorkbook: cette classe a des méthodes pour lire et écrire des fichiers xml Microsoft Excel et OpenOffice au format .xls ou .xlsx.

HSSFWorkbook

Il s'agit d'une classe de haut niveau sous le package org.Apache.poi.hssf.usermodel. Il implémente l'interface Workbook et est utilisé pour les fichiers Excel au format .xls.

2
Chetan Bhagat