如何使用java将Excel转换为XML?

我想将我的inputExcel文件转换成输出XML文件。

如果任何人有任何java的解决scheme,如何inputExcel文件,如何写入XML作为输出,请给任何代码或任何URL或任何其他解决scheme。

谢谢,

Mishal Shah

查看在Excel文件中阅读的jexcel或Apache POI库。

创buildXML文件非常简单,只需将XML直接写入文件或附加到XML文档,然后使用标准Java库或Xerces或类似文件写出即可。

我最近在Java中完成了将Excel(xlsx)转换为xml的转换。 我把excel中的每一行都假设为一个单独的对象。 以下是我遵循的步骤:

  1. 使用Apache POI读取Excel文件
  2. 创build一个xsd文件并生成相应的类
  3. 读取创build的每一行,使用类中生成的getter / setter方法创build相应的对象并初始化值
  4. 将对象添加到只包含相同types的对象的数组列表中
  5. 使用Jaxb将arraylist对象Marshelled到输出文件

随时准备提供代码以下是您可以启动的地方https://sites.google.com/site/arjunwebworld/Home/programming/jaxb-example

JExcel很容易使用。 将jxl.jar放在类path中,并编写如下代码:

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"); } 

请参阅http://jexcelapi.sourceforge.net/resources/faq/开始并链接到下载区域&#x3002;

 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"); } 

下载jxl并使用此代码

  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); } } 

}