2009-12-14 6 views
1

Je veux convertir mon fichier Excel d'entrée dans le fichier XML de sortie.Comment convertir un fichier Excel en XML en utilisant java?

Si quelqu'un a une solution dans java pour savoir comment saisir le fichier Excel en entrée et comment écrire en XML en sortie, veuillez donner n'importe quel code ou n'importe quelle URL ou toute autre solution.

Merci,

Mishal Shah

+1

Beaucoup de questions récemment qui demandent essentiellement des solutions entières. .. – JeeBee

+0

Excel 2003+ peut enregistrer dans un format XML. Avez-vous besoin d'une sortie qui correspond à un schéma XML spécifique, ou juste une qui se compose de xml correctement formé? –

Répondre

6

Regardez dans le jexcel ou les bibliothèques Apache POI pour la lecture dans le fichier Excel.

La création d'un fichier XML est simple: il suffit d'écrire le fichier XML directement dans un fichier ou de l'ajouter à un document XML, puis de l'écrire en utilisant les bibliothèques Java standard ou similaires.

+0

jdom est un bon outil pour manipuler le xml facilement. J'ai utilisé les bibliothèques apache poi, elles sont assez faciles à utiliser. – PaulP1975

2

JExcel était facile à utiliser. Mettez jxl.jar sur le chemin de classe et le code quelque chose comme:

File excelFile = new File(excelFilename); 

    // Create model for excel file 
    if (excelFile.exists()) { 
     try { 
      Workbook workbook = Workbook.getWorkbook(excelFile); 
      Sheet sheet = workbook.getSheets()[0]; 

      TableModel model = new DefaultTableModel(sheet.getRows(), sheet.getColumns()); 
      for (int row = 0; row < sheet.getRows(); row++) { 
       for (int column = 0; column < sheet.getColumns(); column++) { 
        String content = sheet.getCell(column, row).getContents(); 
        model.setValueAt(content, row, column); 
       } 
      } 

      previewTable.setModel(model); 
     } catch (Exception e) { 
      JOptionPane.showMessageDialog(null, "Error: " + e); 
     } 

    } else { 
     JOptionPane.showMessageDialog(null, "File does not exist"); 
    } 

Voir http://jexcelapi.sourceforge.net/resources/faq/ pour commencer et un lien pour télécharger la zone.

1
File excelFile = new File(excelFilename); 

// Create model for excel file 
if (excelFile.exists()) { 
    try { 
     Workbook workbook = Workbook.getWorkbook(excelFile); 
     Sheet sheet = workbook.getSheets()[0]; 

     TableModel model = new DefaultTableModel(sheet.getRows(), sheet.getColumns()); 
     for (int row = 0; row < sheet.getRows(); row++) { 
      for (int column = 0; column < sheet.getColumns(); column++) { 
       String content = sheet.getCell(column, row).getContents(); 
       model.setValueAt(content, row, column); 
      } 
     } 

     previewTable.setModel(model); 
    } catch (Exception e) { 
     JOptionPane.showMessageDialog(null, "Error: " + e); 
    } 

} else { 
    JOptionPane.showMessageDialog(null, "File does not exist"); 
} 
4

J'ai récemment effectué la conversion d'Excel (xlsx) en XML dans Java. J'ai supposé chaque rangée dans Excel comme un seul objet ici. Voici les étapes que je suivais: -

  1. Lire fichier Excel à l'aide Apache POI
  2. a créé un fichier XSD et généré des classes correspondant
  3. Lisez chaque ligne créée, créé des objets correspondant et les valeurs initilaized utilisant le getter généré/méthodes setter dans les classes
  4. Ajouté les objets à un ArrayList qui ne contient que des objets du même type
  5. en utilisant JAXB Marshelled l'objet arraylist à un fichier de sortie

Prêt à fournir le code si nécessaire Voici où vous pouvez commencer https://sites.google.com/site/arjunwebworld/Home/programming/jaxb-example

0

Télécharger JXL utilisant ce code

import java.io.File; 
import java.io.IOException; 
import java.io.UnsupportedEncodingException; 
import javax.swing.text.BadLocationException; 
import jxl.Cell; 
import jxl.CellType; 
import jxl.Sheet; 
import jxl.Workbook; 
import jxl.format.Font; 
import jxl.read.biff.BiffException; 

public class XlsToXml { 
public String toXml(File excelFile) throws IOException, BiffException { 
    try { 
     String xmlLine = ""; 
     String rowText = ""; 
     String colText = ""; 
     String isBold = ""; 
     Font font = null; 
     String cellCol = ""; 
     String cellAddress = ""; 
     Cell cell = null; 
     Workbook workbook = Workbook.getWorkbook(excelFile); 
     xmlLine += "<workbook>" + "\n"; 
     for (int sheet = 0; sheet < workbook.getNumberOfSheets(); sheet++) { 
      Sheet s = workbook.getSheet(sheet); 
      xmlLine += " <sheets>" + "\n"; 
      Cell[] row = null; 
      for (int i = 0; i < s.getRows(); i++) { 
       row = s.getRow(i); 
       for (int j = 0; j < row.length; j++) { 
        if (row[j].getType() != CellType.EMPTY) { 
         cell = row[j]; 
         cellCol=columnName(cell.getColumn()); 
         cellCol=" colLetter=\""+cellCol+"\""; 
         cellAddress=" address=\""+cellAddress(cell.getRow()+1,cell.getColumn())+"\""; 
         isBold = cell.getCellFormat().getFont().getBoldWeight() == 700 ? "true" : "false"; 
         isBold = (isBold == "false" ? "" : " isBold=\"true\""); 
         colText += "  <col number=\"" + (j + 1) + "\"" + isBold +cellAddress+ ">"; 
         colText += "<![CDATA[" + cell.getContents() + "]]>"; 
         colText += "</col>" + "\n"; 
         rowText += cell.getContents(); 
        } 
       } 
       if (rowText != "") { 
        xmlLine += " <row number=\"" + (i + 1) + "\">" + "\n"; 
        xmlLine += colText; 
        xmlLine += " </row>" + "\n"; 
       } 
       colText = ""; 
       rowText = ""; 
      } 
      xmlLine += " </sheet>" + "\n";; 
     } 
     xmlLine += "</workbook>"; 
     return xmlLine; 
    } catch (UnsupportedEncodingException e) { 
     System.err.println(e.toString()); 
    } 
    return null; 
} 
private String cellAddress(Integer rowNumber, Integer colNumber){ 
    //return "$"+columnName(colNumber)+"$"+rowNumber; 
    return columnName(colNumber)+rowNumber; 
} 
private String columnName(Integer colNumber) { 
    Base columns = new Base(colNumber,26); 
    columns.transform(); 
    return columns.getResult(); 
} 

class Base { 
    String[] colNames = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z".split(","); 
    String equalTo; 
    int position; 
    int number; 
    int base; 
    int[] digits; 
    int[] auxiliar; 

    public Base(int n, int b) { 
     position = 0; 
     equalTo = ""; 
     base = b; 
     number = n; 
     digits = new int[1]; 
    } 

    public void transform() { 
     if (number < base) { 
      digits[position] = number; 
      size(); 
     } else { 
      digits[position] = number % base; 
      size(); 
      position++; 
      number = number/base; 
      transform(); 
     } 
    } 

    public String getResult() { 
     for (int j = digits.length - 2; j >= 0; j--) { 
      equalTo += colNames[j>0?digits[j]-1:digits[j]]; 
     } 
     return equalTo; 
    } 

    private void size() { 
     auxiliar = digits; 
     digits = new int[auxiliar.length + 1]; 
     System.arraycopy(auxiliar, 0, digits, 0, auxiliar.length); 
    } 
} 

}

Questions connexes