Si vous voulez vraiment un fichier Excel, la meilleure bibliothèque pour créer un est Andy Khan's JExcel.
Je pense que vous auriez besoin d'une feuille de calcul par flux, avec des paires .csv pour chacun, triées par temps.
Si ce sont des graphiques d'une variable en fonction du temps, le "temps" ne serait-il pas la première valeur de chaque paire?
Voici comment je le ferais. Cela fonctionne parfaitement pour le cas de test simple que j'ai fourni - c'est le code de travail que vous pourrez étendre.
package jexcel;
import jxl.Workbook;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class JExcelUtils
{
public static void main(String[] args)
{
String fileName = ((args.length > 0) ? args[0] : "jexcel.xls");
Map<String, List<Pair>> csv = new HashMap<String, List<Pair>>()
{{
put("Flow1", fromArrayToList(new double[][]
{
{ 0.0, 0.0 },
{ 0.1, 1.0 },
{ 0.2, 2.0 },
{ 0.3, 3.0 },
{ 0.4, 4.0 },
{ 0.5, 5.0 },
}));
put("Flow2", fromArrayToList(new double[][]
{
{ 0.0, 0.0 },
{ 0.1, 1.0 },
{ 0.2, 4.0 },
{ 0.3, 9.0 },
{ 0.4, 16.0 },
{ 0.5, 25.0 },
}));
}};
WritableWorkbook excelContents = null;
try
{
File excelFile = new File(fileName);
excelContents = createExcel(excelFile, csv);
excelContents.write();
}
catch (IOException e)
{
e.printStackTrace();
}
catch (WriteException e)
{
e.printStackTrace();
}
finally
{
try { if (excelContents != null) excelContents.close(); } catch (Exception e) { e.printStackTrace(); }
}
}
public static List<Pair> fromArrayToList(double [][] input)
{
List<Pair> result = new ArrayList<Pair>();
for (int i = 0; i < input.length; ++i)
{
result.add(new Pair(input[i][0], input[i][1]));
}
return result;
}
public static WritableWorkbook createExcel(File excelFile, Map<String, List<Pair>> worksheets) throws IOException, WriteException
{
WritableWorkbook result = Workbook.createWorkbook(excelFile);
int order = 0;
for (String worksheetName : worksheets.keySet())
{
WritableSheet worksheet = result.createSheet(worksheetName, order++);
List<Pair> worksheetValues = worksheets.get(worksheetName);
for (int row = 0; row < worksheetValues.size(); ++row)
{
worksheet.addCell(new jxl.write.Number(0, row, worksheetValues.get(row).getX()));
worksheet.addCell(new jxl.write.Number(1, row, worksheetValues.get(row).getY()));
}
}
return result;
}
}
class Pair
{
private double x;
private double y;
Pair(double x, double y)
{
this.x = x;
this.y = y;
}
public double getX()
{
return x;
}
public double getY()
{
return y;
}
}
merci. Je suis si confus, en lisant les liens que vous avez suggérés. Je vais regarder le code que vous avez fourni maintenant. –
@Red Lion Ya il y a trop d'options pour écrire en CSV. Pour les cas simples comme le vôtre, vous pouvez utiliser n'importe lequel d'entre eux sans aucun problème :). – YoK
pouvez-vous s'il vous plaît regarder mon code, j'ai édité mon poste. –