Bonjour à tous,

Je suis actuellement bloqué sur un souci de conversion de données. J'ai a la base un fichier .XLT qui est un template excel on va récupérer des données dans l'application et remplacer les données vierges du template par les informations et ensuite créer un fichier .XLS. Jusque la pas de problème pour ce faire j'utilise l'api POI qui utilise HSSF.
Mon souci intervient sur le fait qu'aujourd'hui on souhaite partir d'un template .XLTX donc passer à une api POI qui utilise XSSF. Pour tout ce qui est récupération de données je n'ai aucun souci par contre pour la réalisation de diagramme j'ai un problème majeur car je n'arrive pas à les générer avec XSSF a cause d'une variable manquante.
Voici une partie de mon code en HSSF :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
   public void setSheetIndexInSeries(HSSFSheet sheet)
   {
      int sheetIndex = _workbook.getSheetIndex(sheet);
      HSSFChart[] charts = HSSFChart.getSheetCharts(sheet);
      for (HSSFChart chart : charts)
      {
         HSSFSeries[] series = chart.getSeries();
         for (HSSFSeries serie : series)
         {
            LinkedDataRecord dataCategoryLabels = serie.getDataCategoryLabels();
            setSheetIndexInLinkedDataRecord(dataCategoryLabels, sheetIndex);
            LinkedDataRecord dataValues = serie.getDataValues();
            setSheetIndexInLinkedDataRecord(dataValues, sheetIndex);
         }
      }
   }
Le problème intervient sur la partie HSSFSeries[] ce type de variable n'existant plus sous XSSF je n'arrive pas à le remplacer par quelque chose d'équivalent.
J'ai essayé ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
  public void setSheetIndexInSeries(XSSFSheet sheet)
   {
      System.out.println("call setSheetIndexInSeries");
 
      XSSFDrawing drawing = sheet.createDrawingPatriarch();
      System.out.println("sheet drawing == " + drawing.getCTDrawing().toString());
      System.out.println("chart drawing == " + drawing.getCharts());
      List<XSSFChart> chartsList = drawing.getCharts();
 
      for (XSSFChart chart : chartsList)
      {
    	  CTChart ctChart = chart.getCTChart();
        CTPlotArea plotArea = ctChart.getPlotArea();
        int size = plotArea.getLineChartList().size();
 
         for (int j = 0; j < size; j++){
             List<CTScatterSer> seriesList = plotArea.getScatterChartList().get(j).getSerList();
             for (int i = 0; i < seriesList.size(); i++){
               CTScatterSer ser = seriesList.get(i);
                XmlObject serieX = ser.getXVal();
               XmlObject serieY = ser.getYVal();
                System.out.println("x: " + serieX.xmlText() + " y: " + serieY.xmlText());
 
             }
         }
      }
   }
La copie des diagram se fait bien mais impossible d'instancier les bonnes valeurs au sein de celui-ci.

Donc voila je poste au cas ou quelqu'un ayant déjà travaillé avec JAVA POI et Excel passe par la.

Merci d'avance de votre aide et vos réponses.

Cordialement,

marc