jxl.demo.XML Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jxl Show documentation
Show all versions of jxl Show documentation
JExcelApi is a java library which provides the ability to read, write, and modify Microsoft Excel spreadsheets.
The newest version!
/*********************************************************************
*
* Copyright (C) 2002 Andrew Khan
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***************************************************************************/
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;
/**
* Simple demo class which uses the api to present the contents
* of an excel 97 spreadsheet as an XML document, using a workbook
* and output stream of your choice
*/
public class XML
{
/**
* The output stream to write to
*/
private OutputStream out;
/**
* The encoding to write
*/
private String encoding;
/**
* The workbook we are reading from
*/
private Workbook workbook;
/**
* Constructor
*
* @param w The workbook to interrogate
* @param out The output stream to which the XML values are written
* @param enc The encoding used by the output stream. Null or
* unrecognized values cause the encoding to default to UTF8
* @param f Indicates whether the generated XML document should contain
* the cell format information
* @exception java.io.IOException
*/
public XML(Workbook w, OutputStream out, String enc, boolean f)
throws IOException
{
encoding = enc;
workbook = w;
this.out = out;
if (encoding == null || !encoding.equals("UnicodeBig"))
{
encoding = "UTF8";
}
if (f)
{
writeFormattedXML();
}
else
{
writeXML();
}
}
/**
* Writes out the workbook data as XML, without formatting information
*/
private void writeXML() throws IOException
{
try
{
OutputStreamWriter osw = new OutputStreamWriter(out, encoding);
BufferedWriter bw = new BufferedWriter(osw);
bw.write("");
bw.newLine();
bw.write("");
bw.newLine();
bw.newLine();
bw.write("");
bw.newLine();
for (int sheet = 0; sheet < workbook.getNumberOfSheets(); sheet++)
{
Sheet s = workbook.getSheet(sheet);
bw.write(" ");
bw.newLine();
bw.write(" ");
bw.newLine();
Cell[] row = null;
for (int i = 0 ; i < s.getRows() ; i++)
{
bw.write(" ");
bw.newLine();
row = s.getRow(i);
for (int j = 0 ; j < row.length; j++)
{
if (row[j].getType() != CellType.EMPTY)
{
bw.write(" ");
bw.write("");
bw.write("");
bw.newLine();
}
}
bw.write("
");
bw.newLine();
}
bw.write(" ");
bw.newLine();
}
bw.write(" ");
bw.newLine();
bw.flush();
bw.close();
}
catch (UnsupportedEncodingException e)
{
System.err.println(e.toString());
}
}
/**
* Writes out the workbook data as XML, with formatting information
*/
private void writeFormattedXML() throws IOException
{
try
{
OutputStreamWriter osw = new OutputStreamWriter(out, encoding);
BufferedWriter bw = new BufferedWriter(osw);
bw.write("");
bw.newLine();
bw.write("");
bw.newLine();
bw.newLine();
bw.write("");
bw.newLine();
for (int sheet = 0; sheet < workbook.getNumberOfSheets(); sheet++)
{
Sheet s = workbook.getSheet(sheet);
bw.write(" ");
bw.newLine();
bw.write(" ");
bw.newLine();
Cell[] row = null;
CellFormat format = null;
Font font = null;
for (int i = 0 ; i < s.getRows() ; i++)
{
bw.write(" ");
bw.newLine();
row = s.getRow(i);
for (int j = 0 ; j < row.length; j++)
{
// Remember that empty cells can contain format information
if ((row[j].getType() != CellType.EMPTY) ||
(row[j].getCellFormat() != null))
{
format = row[j].getCellFormat();
bw.write(" ");
bw.newLine();
bw.write(" ");
bw.write("");
bw.write("");
bw.newLine();
if (row[j].getCellFormat() != null)
{
bw.write(" ");
bw.newLine();
// The font information
font = format.getFont();
bw.write(" ");
bw.newLine();
// The cell background information
if (format.getBackgroundColour() != Colour.DEFAULT_BACKGROUND ||
format.getPattern() != Pattern.NONE)
{
bw.write(" ");
bw.newLine();
}
// The cell border, if it has one
if (format.getBorder(Border.TOP ) != BorderLineStyle.NONE ||
format.getBorder(Border.BOTTOM) != BorderLineStyle.NONE ||
format.getBorder(Border.LEFT) != BorderLineStyle.NONE ||
format.getBorder(Border.RIGHT) != BorderLineStyle.NONE)
{
bw.write(" ");
bw.newLine();
}
// The cell number/date format
if (!format.getFormat().getFormatString().equals(""))
{
bw.write(" ");
bw.newLine();
}
bw.write(" ");
bw.newLine();
}
bw.write(" ");
bw.newLine();
}
}
bw.write("
");
bw.newLine();
}
bw.write(" ");
bw.newLine();
}
bw.write(" ");
bw.newLine();
bw.flush();
bw.close();
}
catch (UnsupportedEncodingException e)
{
System.err.println(e.toString());
}
}
}