XML.java 源代码


package jxl.demo;

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import jxl.Cell;
import jxl.CellType;
import jxl.Sheet;
import jxl.Workbook;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.CellFormat;
import jxl.format.Colour;
import jxl.format.Font;
import jxl.format.Pattern;

public class XML {
    private String encoding;
    private OutputStream out;
    private Workbook workbook;

    public XML(Workbook workbook, OutputStream outputStream, String str, boolean z) throws IOException {
        this.encoding = str;
        this.workbook = workbook;
        this.out = outputStream;
        if (str == null || !str.equals("UnicodeBig")) {
            this.encoding = "UTF8";
        }
        if (z) {
            writeFormattedXML();
        } else {
            writeXML();
        }
    }

    private void writeXML() throws IOException {
        try {
            BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(this.out, this.encoding));
            bufferedWriter.write("<?xml version=\"1.0\" ?>");
            bufferedWriter.newLine();
            bufferedWriter.write("<!DOCTYPE workbook SYSTEM \"workbook.dtd\">");
            bufferedWriter.newLine();
            bufferedWriter.newLine();
            bufferedWriter.write("<workbook>");
            bufferedWriter.newLine();
            for (int i = 0; i < this.workbook.getNumberOfSheets(); i++) {
                Sheet sheet = this.workbook.getSheet(i);
                bufferedWriter.write("  <sheet>");
                bufferedWriter.newLine();
                StringBuffer stringBuffer = new StringBuffer();
                stringBuffer.append("    <name><![CDATA[");
                stringBuffer.append(sheet.getName());
                stringBuffer.append("]]></name>");
                bufferedWriter.write(stringBuffer.toString());
                bufferedWriter.newLine();
                for (int i2 = 0; i2 < sheet.getRows(); i2++) {
                    StringBuffer stringBuffer2 = new StringBuffer();
                    stringBuffer2.append("    <row number=\"");
                    stringBuffer2.append(i2);
                    stringBuffer2.append("\">");
                    bufferedWriter.write(stringBuffer2.toString());
                    bufferedWriter.newLine();
                    Cell[] row = sheet.getRow(i2);
                    for (int i3 = 0; i3 < row.length; i3++) {
                        if (row[i3].getType() != CellType.EMPTY) {
                            StringBuffer stringBuffer3 = new StringBuffer();
                            stringBuffer3.append("      <col number=\"");
                            stringBuffer3.append(i3);
                            stringBuffer3.append("\">");
                            bufferedWriter.write(stringBuffer3.toString());
                            StringBuffer stringBuffer4 = new StringBuffer();
                            stringBuffer4.append("<![CDATA[");
                            stringBuffer4.append(row[i3].getContents());
                            stringBuffer4.append("]]>");
                            bufferedWriter.write(stringBuffer4.toString());
                            bufferedWriter.write("</col>");
                            bufferedWriter.newLine();
                        }
                    }
                    bufferedWriter.write("    </row>");
                    bufferedWriter.newLine();
                }
                bufferedWriter.write("  </sheet>");
                bufferedWriter.newLine();
            }
            bufferedWriter.write("</workbook>");
            bufferedWriter.newLine();
            bufferedWriter.flush();
            bufferedWriter.close();
        } catch (UnsupportedEncodingException e) {
            System.err.println(e.toString());
        }
    }

    private void writeFormattedXML() throws IOException {
        try {
            BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(this.out, this.encoding));
            bufferedWriter.write("<?xml version=\"1.0\" ?>");
            bufferedWriter.newLine();
            bufferedWriter.write("<!DOCTYPE workbook SYSTEM \"formatworkbook.dtd\">");
            bufferedWriter.newLine();
            bufferedWriter.newLine();
            bufferedWriter.write("<workbook>");
            bufferedWriter.newLine();
            for (int i = 0; i < this.workbook.getNumberOfSheets(); i++) {
                Sheet sheet = this.workbook.getSheet(i);
                bufferedWriter.write("  <sheet>");
                bufferedWriter.newLine();
                StringBuffer stringBuffer = new StringBuffer();
                stringBuffer.append("    <name><![CDATA[");
                stringBuffer.append(sheet.getName());
                stringBuffer.append("]]></name>");
                bufferedWriter.write(stringBuffer.toString());
                bufferedWriter.newLine();
                for (int i2 = 0; i2 < sheet.getRows(); i2++) {
                    StringBuffer stringBuffer2 = new StringBuffer();
                    stringBuffer2.append("    <row number=\"");
                    stringBuffer2.append(i2);
                    stringBuffer2.append("\">");
                    bufferedWriter.write(stringBuffer2.toString());
                    bufferedWriter.newLine();
                    Cell[] row = sheet.getRow(i2);
                    for (int i3 = 0; i3 < row.length; i3++) {
                        if (row[i3].getType() != CellType.EMPTY || row[i3].getCellFormat() != null) {
                            CellFormat cellFormat = row[i3].getCellFormat();
                            StringBuffer stringBuffer3 = new StringBuffer();
                            stringBuffer3.append("      <col number=\"");
                            stringBuffer3.append(i3);
                            stringBuffer3.append("\">");
                            bufferedWriter.write(stringBuffer3.toString());
                            bufferedWriter.newLine();
                            bufferedWriter.write("        <data>");
                            StringBuffer stringBuffer4 = new StringBuffer();
                            stringBuffer4.append("<![CDATA[");
                            stringBuffer4.append(row[i3].getContents());
                            stringBuffer4.append("]]>");
                            bufferedWriter.write(stringBuffer4.toString());
                            bufferedWriter.write("</data>");
                            bufferedWriter.newLine();
                            if (row[i3].getCellFormat() != null) {
                                StringBuffer stringBuffer5 = new StringBuffer();
                                stringBuffer5.append("        <format wrap=\"");
                                stringBuffer5.append(cellFormat.getWrap());
                                stringBuffer5.append("\"");
                                bufferedWriter.write(stringBuffer5.toString());
                                bufferedWriter.newLine();
                                StringBuffer stringBuffer6 = new StringBuffer();
                                stringBuffer6.append("                align=\"");
                                stringBuffer6.append(cellFormat.getAlignment().getDescription());
                                stringBuffer6.append("\"");
                                bufferedWriter.write(stringBuffer6.toString());
                                bufferedWriter.newLine();
                                StringBuffer stringBuffer7 = new StringBuffer();
                                stringBuffer7.append("                valign=\"");
                                stringBuffer7.append(cellFormat.getVerticalAlignment().getDescription());
                                stringBuffer7.append("\"");
                                bufferedWriter.write(stringBuffer7.toString());
                                bufferedWriter.newLine();
                                StringBuffer stringBuffer8 = new StringBuffer();
                                stringBuffer8.append("                orientation=\"");
                                stringBuffer8.append(cellFormat.getOrientation().getDescription());
                                stringBuffer8.append("\"");
                                bufferedWriter.write(stringBuffer8.toString());
                                bufferedWriter.write(">");
                                bufferedWriter.newLine();
                                Font font = cellFormat.getFont();
                                StringBuffer stringBuffer9 = new StringBuffer();
                                stringBuffer9.append("          <font name=\"");
                                stringBuffer9.append(font.getName());
                                stringBuffer9.append("\"");
                                bufferedWriter.write(stringBuffer9.toString());
                                bufferedWriter.newLine();
                                StringBuffer stringBuffer10 = new StringBuffer();
                                stringBuffer10.append("                point_size=\"");
                                stringBuffer10.append(font.getPointSize());
                                stringBuffer10.append("\"");
                                bufferedWriter.write(stringBuffer10.toString());
                                bufferedWriter.newLine();
                                StringBuffer stringBuffer11 = new StringBuffer();
                                stringBuffer11.append("                bold_weight=\"");
                                stringBuffer11.append(font.getBoldWeight());
                                stringBuffer11.append("\"");
                                bufferedWriter.write(stringBuffer11.toString());
                                bufferedWriter.newLine();
                                StringBuffer stringBuffer12 = new StringBuffer();
                                stringBuffer12.append("                italic=\"");
                                stringBuffer12.append(font.isItalic());
                                stringBuffer12.append("\"");
                                bufferedWriter.write(stringBuffer12.toString());
                                bufferedWriter.newLine();
                                StringBuffer stringBuffer13 = new StringBuffer();
                                stringBuffer13.append("                underline=\"");
                                stringBuffer13.append(font.getUnderlineStyle().getDescription());
                                stringBuffer13.append("\"");
                                bufferedWriter.write(stringBuffer13.toString());
                                bufferedWriter.newLine();
                                StringBuffer stringBuffer14 = new StringBuffer();
                                stringBuffer14.append("                colour=\"");
                                stringBuffer14.append(font.getColour().getDescription());
                                stringBuffer14.append("\"");
                                bufferedWriter.write(stringBuffer14.toString());
                                bufferedWriter.newLine();
                                StringBuffer stringBuffer15 = new StringBuffer();
                                stringBuffer15.append("                script=\"");
                                stringBuffer15.append(font.getScriptStyle().getDescription());
                                stringBuffer15.append("\"");
                                bufferedWriter.write(stringBuffer15.toString());
                                bufferedWriter.write(" />");
                                bufferedWriter.newLine();
                                if (cellFormat.getBackgroundColour() != Colour.DEFAULT_BACKGROUND || cellFormat.getPattern() != Pattern.NONE) {
                                    StringBuffer stringBuffer16 = new StringBuffer();
                                    stringBuffer16.append("          <background colour=\"");
                                    stringBuffer16.append(cellFormat.getBackgroundColour().getDescription());
                                    stringBuffer16.append("\"");
                                    bufferedWriter.write(stringBuffer16.toString());
                                    bufferedWriter.newLine();
                                    StringBuffer stringBuffer17 = new StringBuffer();
                                    stringBuffer17.append("                      pattern=\"");
                                    stringBuffer17.append(cellFormat.getPattern().getDescription());
                                    stringBuffer17.append("\"");
                                    bufferedWriter.write(stringBuffer17.toString());
                                    bufferedWriter.write(" />");
                                    bufferedWriter.newLine();
                                }
                                if (cellFormat.getBorder(Border.TOP) != BorderLineStyle.NONE || cellFormat.getBorder(Border.BOTTOM) != BorderLineStyle.NONE || cellFormat.getBorder(Border.LEFT) != BorderLineStyle.NONE || cellFormat.getBorder(Border.RIGHT) != BorderLineStyle.NONE) {
                                    StringBuffer stringBuffer18 = new StringBuffer();
                                    stringBuffer18.append("          <border top=\"");
                                    stringBuffer18.append(cellFormat.getBorder(Border.TOP).getDescription());
                                    stringBuffer18.append("\"");
                                    bufferedWriter.write(stringBuffer18.toString());
                                    bufferedWriter.newLine();
                                    StringBuffer stringBuffer19 = new StringBuffer();
                                    stringBuffer19.append("                  bottom=\"");
                                    stringBuffer19.append(cellFormat.getBorder(Border.BOTTOM).getDescription());
                                    stringBuffer19.append("\"");
                                    bufferedWriter.write(stringBuffer19.toString());
                                    bufferedWriter.newLine();
                                    StringBuffer stringBuffer20 = new StringBuffer();
                                    stringBuffer20.append("                  left=\"");
                                    stringBuffer20.append(cellFormat.getBorder(Border.LEFT).getDescription());
                                    stringBuffer20.append("\"");
                                    bufferedWriter.write(stringBuffer20.toString());
                                    bufferedWriter.newLine();
                                    StringBuffer stringBuffer21 = new StringBuffer();
                                    stringBuffer21.append("                  right=\"");
                                    stringBuffer21.append(cellFormat.getBorder(Border.RIGHT).getDescription());
                                    stringBuffer21.append("\"");
                                    bufferedWriter.write(stringBuffer21.toString());
                                    bufferedWriter.write(" />");
                                    bufferedWriter.newLine();
                                }
                                if (!cellFormat.getFormat().getFormatString().equals("")) {
                                    bufferedWriter.write("          <format_string string=\"");
                                    bufferedWriter.write(cellFormat.getFormat().getFormatString());
                                    bufferedWriter.write("\" />");
                                    bufferedWriter.newLine();
                                }
                                bufferedWriter.write("        </format>");
                                bufferedWriter.newLine();
                            }
                            bufferedWriter.write("      </col>");
                            bufferedWriter.newLine();
                        }
                    }
                    bufferedWriter.write("    </row>");
                    bufferedWriter.newLine();
                }
                bufferedWriter.write("  </sheet>");
                bufferedWriter.newLine();
            }
            bufferedWriter.write("</workbook>");
            bufferedWriter.newLine();
            bufferedWriter.flush();
            bufferedWriter.close();
        } catch (UnsupportedEncodingException e) {
            System.err.println(e.toString());
        }
    }
}