3 votes

Java POI Créer un nouveau classeur avec le modèle SS ?

Je suis un peu confus, j'avais l'habitude de faire ça :

HSSFWorkbook wb = new HFFSWorkbook();

Mais avec le nouveau POI, je n'ai pas à le faire.

Je ne peux pas faire ça :

Workbook wb = new Workbook();

Je comprends WorkbookFactory.create mais c'est pour ouvrir un fichier.

Comment puis-je configurer un nouveau classeur avec ce modèle ss ?

7voto

Mustafa Points 2227

Vous pouvez toujours utiliser le modèle SS mais vous devez décider du format du fichier au moment de la création.

Para xls -> Workbook wb = new HSSFWorkbook();

Para xlsx -> Workbook wb = new XSSFWorkbook();

4voto

Niraj Nawanit Points 1090

Dans "Nouveau POI", vous pouvez écrire/lire à la fois des fichiers XLS et des fichiers XLSX. En tout cas, pour le format de fichier XLS que vous utilisiez :

HSSFWorkbook wb = new HSSFWorkbook(); 

Ainsi, pour le format de fichier XLSX, vous devez utiliser :

XSSFWorkbook wb = new XSSFWorkbook();
// you could also do below
// Workbook wb = new XSSFWorkbook(); 

Il serait également utile pour vous de vous référer aux liens ci-dessous pour commencer la migration de XLS vers XLSX.

1. http://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFWorkbook.html
2. http://poi.apache.org/spreadsheet/converting.html

3voto

user3502588 Points 31

Assurez-vous de télécharger et d'ajouter le fichier JAR POI au chemin des classes de votre projet avant d'exécuter le code. Le fichier JAR Apache POI se trouve ici.

public void main(String[] args) throws IOException {

// Directory path where the xls file will be created
String destinationFilePath = "C:/Users/devesh_/Documents/HelloWorld.xls";

// Create object of FileOutputStream
FileOutputStream fout = new FileOutputStream(destinationFilePath);

// Build the Excel File
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
HSSFWorkbook workBook = new HSSFWorkbook();

// Create the spreadsheet
HSSFSheet spreadSheet = workBook.createSheet("Hello_World");

// Create the first row
HSSFRow row = spreadSheet.createRow((short) 0);

// Create the cells and write to the file
HSSFCell cell;

// Write Hello
cell = row.createCell(0);
cell.setCellValue(new HSSFRichTextString("Hello"));

// Write World
cell = row.createCell(1);
cell.setCellValue(new HSSFRichTextString("World"));

workBook.write(outputStream);

outputStream.writeTo(fout);
outputStream.close();
fout.close();
}

2voto

Gagravarr Points 14107

Lorsque vous créez un fichier, vous devez décider à l'avance du format qu'il aura - vous ne pouvez pas attendre le moment de l'écriture pour le faire. Votre code serait quelque chose comme :

 Workbook wb = null;
 if (shouldBeXLS) {
    wb = new HSSFWorkbook();
 } else {
    wb = new XSSFWorkbook();
 }

 // work on the file in a generic way

 // save, with a suitable name
 String filename = "test.xls";
 if (!shouldBeXLS) { filename = filename + "x"; }
 FileOutputStream fout = new FileOutputStream(filename);
 wb.write(fout);
 fout.close();

Au départ, décidez du format que vous souhaitez pour cette instance particulière et créez-le. Traitez-le comme un classeur général et écrivez-y de la manière habituelle. À la fin, souvenez-vous de ce que c'est pour pouvoir donner au fichier la bonne extension !

(Lors de la lecture d'un fichier en , WorkbookFactory vous permettra de charger l'instance appropriée pour le type de fichier. Lors de la création d'un nouveau fichier, vous devez choisir vous-même car il n'y a encore rien).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X