JAVA - Convertir un file xls to csv

Fermé
Gueule d'ange - 22 févr. 2008 à 10:47
 Oro - 11 févr. 2011 à 22:41
Bonjour,

j'ai un fichier EXCEL nommé 'file.xls', je souhaite développer un programme JAVA pour le convertir en document texte/csv 'file.txt' avec comme séparateur : des tabulations.

Auriez-vous une idée ? Quels sont les imports ?


Cordialement,
A voir également:

2 réponses

Utilisateur anonyme
22 févr. 2008 à 15:30
J'utilise deux librairies gratuites trouvées sur le web :

- Une pour lire le fichier Excel : http://poi.apache.org/components/spreadsheet/index.html
- L'autre pour écrire le fichier CSV (pas nécessairement utile) : http://opencsv.sourceforge.net/

Voici le code :

import au.com.bytecode.opencsv.CSVWriter;

import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;

import java.util.Vector;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

public class TestXLS
{
private POIFSFileSystem fs = null;
private HSSFWorkbook hssfworkbook = null;
private Vector lignes = null;

public TestXLS(String file)
{
try{
fs = new POIFSFileSystem(new FileInputStream(file));

hssfworkbook = new HSSFWorkbook(fs);
lignes = new Vector();
}
catch(Exception e)
{
System.err.println("Exception constructeur : "+e.getMessage());
System.exit(-1);
}
}

public void lecture()
{
for (int i = 0; i < hssfworkbook.getNumberOfSheets(); i++)
{
HSSFSheet sheet = hssfworkbook.getSheetAt(i);
int rows = sheet.getPhysicalNumberOfRows();
for(int j=0;j<rows;j++)
{
Vector temp = new Vector();
HSSFRow row = sheet.getRow(j);
int cells = row.getPhysicalNumberOfCells();
for(short k=0;k<cells;k++)
{
HSSFCell cell = row.getCell(k);
String value = null;

switch (cell.getCellType())
{
case HSSFCell.CELL_TYPE_FORMULA :
value = cell.getCellFormula();
temp.add(value);
break;
case HSSFCell.CELL_TYPE_NUMERIC :
value = ""+cell.getNumericCellValue();
temp.add(value);
break;
case HSSFCell.CELL_TYPE_STRING :
value = cell.getRichStringCellValue().getString();
temp.add(value);
break;
default : value ="";
}
}
lignes.add(temp);
}
}
}

public void ecrireCSV(String file)
{
CSVWriter writer = null;
try{
writer = new CSVWriter(new FileWriter(file), ';');
for(int i=0;i<lignes.size();i++)
{
Vector temp = (Vector)lignes.get(i);
Object[] entree = (Object[])temp.toArray();
ecrireString(writer, entree);
}
writer.close();
}
catch(IOException ex)
{
System.err.println("Erreur lors de l'écriture : "+ex.getMessage());
}
}

private void ecrireString(CSVWriter writer, Object[] entree){
String[] tab = new String[entree.length];
for(int i=0;i<entree.length;i++)
tab[i] = (String)entree[i];
writer.writeNext(tab);
}

public Vector getLignes(){return lignes;}

public static void main(String[] args)
{
TestXLS test = new TestXLS("D:\\test.xls");
test.lecture();
test.ecrireCSV("D:\\test.txt");
}
}
1
Merci beaucoup pour cette source, simple et efficace. Merci
0
Mais ça marche pas :(
0
merci de me repondre le plutot possible
0
this can help:

import officetools.OfficeFile; // available at dancrintea.ro/xls-to-pdf/
...
FileInputStream fis = new FileInputStream(new File("test.xls"));
FileOutputStream fos = new FileOutputStream(new File("test.csv"));
OfficeFile f = new OfficeFile(fis,"localhost","8100", true);
f.convert(fos,"csv");

All possible conversions:

XLS --> pdf, html, CSV
doc --> pdf, html, txt, rtf
ppt --> pdf, swf
html --> pdf
1