Fixed compiler error in HSSFReadWrite. Fixed deprecated calls and simplified example code. (follow-on from r829758)

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@829897 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Josh Micich 2009-10-26 18:55:51 +00:00
parent 8d7f1bb83a
commit eb4b1d0aac

View File

@ -15,8 +15,7 @@
limitations under the License. limitations under the License.
==================================================================== */ ==================================================================== */
package org.apache.poi.hssf.usermodel.examples;
package org.apache.poi.hssf.examples.usermodel;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
@ -30,342 +29,216 @@ import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.CellRangeAddress; import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
/** /**
* File for HSSF testing/examples * File for HSSF testing/examples
* *
* THIS IS NOT THE MAIN HSSF FILE!! This is a util for testing functionality. * THIS IS NOT THE MAIN HSSF FILE!! This is a utility for testing functionality.
* It does contain sample API usage that may be educational to regular API users. * It does contain sample API usage that may be educational to regular API
* users.
* *
* @see #main * @see #main
* @author Andrew Oliver (acoliver at apache dot org) * @author Andrew Oliver (acoliver at apache dot org)
*/ */
public final class HSSFReadWrite {
public class HSSFReadWrite /**
{ * creates an {@link HSSFWorkbook} the specified OS filename.
private String filename = null; */
private static HSSFWorkbook readFile(String filename) throws IOException {
return new HSSFWorkbook(new FileInputStream(filename));
}
protected HSSFWorkbook hssfworkbook = null; /**
* given a filename this outputs a sample sheet with just a set of
* rows/cells.
*/
private static void testCreateSampleSheet(String outputFilename) throws IOException {
int rownum;
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet s = wb.createSheet();
HSSFCellStyle cs = wb.createCellStyle();
HSSFCellStyle cs2 = wb.createCellStyle();
HSSFCellStyle cs3 = wb.createCellStyle();
HSSFFont f = wb.createFont();
HSSFFont f2 = wb.createFont();
/** f.setFontHeightInPoints((short) 12);
* Constructor HSSFReadWrite - creates an HSSFStream from an InputStream. The HSSFStream f.setColor((short) 0xA);
* reads in the records allowing modification. f.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
* f2.setFontHeightInPoints((short) 10);
* f2.setColor((short) 0xf);
* @param filename f2.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
* cs.setFont(f);
* @exception IOException cs.setDataFormat(HSSFDataFormat.getBuiltinFormat("($#,##0_);[Red]($#,##0)"));
* cs2.setBorderBottom(HSSFCellStyle.BORDER_THIN);
*/ cs2.setFillPattern((short) 1); // fill w fg
cs2.setFillForegroundColor((short) 0xA);
cs2.setFont(f2);
wb.setSheetName(0, "HSSF Test");
for (rownum = 0; rownum < 300; rownum++) {
HSSFRow r = s.createRow(rownum);
if ((rownum % 2) == 0) {
r.setHeight((short) 0x249);
}
public HSSFReadWrite(String filename) for (int cellnum = 0; cellnum < 50; cellnum += 2) {
throws IOException HSSFCell c = r.createCell(cellnum);
{ c.setCellValue(rownum * 10000 + cellnum
this.filename = filename; + (((double) rownum / 1000) + ((double) cellnum / 10000)));
POIFSFileSystem fs = if ((rownum % 2) == 0) {
new POIFSFileSystem(new FileInputStream(filename)); c.setCellStyle(cs);
}
c = r.createCell(cellnum + 1);
c.setCellValue(new HSSFRichTextString("TEST"));
// 50 characters divided by 1/20th of a point
s.setColumnWidth(cellnum + 1, (int) (50 * 8 / 0.05));
if ((rownum % 2) == 0) {
c.setCellStyle(cs2);
}
}
}
hssfworkbook = new HSSFWorkbook(fs); // draw a thick black border on the row at the bottom using BLANKS
rownum++;
rownum++;
HSSFRow r = s.createRow(rownum);
cs3.setBorderBottom(HSSFCellStyle.BORDER_THICK);
for (int cellnum = 0; cellnum < 50; cellnum++) {
HSSFCell c = r.createCell(cellnum);
c.setCellStyle(cs3);
}
s.addMergedRegion(new CellRangeAddress(0, 3, 0, 3));
s.addMergedRegion(new CellRangeAddress(100, 110, 100, 110));
// records = RecordFactory.createRecords(stream); // end draw thick black border
} // create a sheet, set its title then delete it
s = wb.createSheet();
wb.setSheetName(1, "DeletedSheet");
wb.removeSheetAt(1);
/** // end deleted sheet
* Constructor HSSFReadWrite - given a filename this outputs a sample sheet with just FileOutputStream out = new FileOutputStream(outputFilename);
* a set of rows/cells. wb.write(out);
* out.close();
* }
* @param filename
* @param write
*
* @exception IOException
*
*/
public HSSFReadWrite(String filename, boolean write) /**
throws IOException
{
short rownum = 0;
FileOutputStream out = new FileOutputStream(filename);
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet s = wb.createSheet();
HSSFRow r = null;
HSSFCell c = null;
HSSFCellStyle cs = wb.createCellStyle();
HSSFCellStyle cs2 = wb.createCellStyle();
HSSFCellStyle cs3 = wb.createCellStyle();
HSSFFont f = wb.createFont();
HSSFFont f2 = wb.createFont();
f.setFontHeightInPoints(( short ) 12);
f.setColor(( short ) 0xA);
f.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
f2.setFontHeightInPoints(( short ) 10);
f2.setColor(( short ) 0xf);
f2.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
cs.setFont(f);
cs.setDataFormat(HSSFDataFormat.getBuiltinFormat("($#,##0_);[Red]($#,##0)"));
cs2.setBorderBottom(HSSFCellStyle.BORDER_THIN);
cs2.setFillPattern(( short ) 1); // fill w fg
cs2.setFillForegroundColor(( short ) 0xA);
cs2.setFont(f2);
wb.setSheetName(0, "HSSF Test");
for (rownum = ( short ) 0; rownum < 300; rownum++)
{
r = s.createRow(rownum);
if ((rownum % 2) == 0)
{
r.setHeight(( short ) 0x249);
}
// r.setRowNum(( short ) rownum);
for (short cellnum = ( short ) 0; cellnum < 50; cellnum += 2)
{
c = r.createCell(cellnum, HSSFCell.CELL_TYPE_NUMERIC);
c.setCellValue(rownum * 10000 + cellnum
+ ((( double ) rownum / 1000)
+ (( double ) cellnum / 10000)));
if ((rownum % 2) == 0)
{
c.setCellStyle(cs);
}
c = r.createCell(cellnum + 1,
HSSFCell.CELL_TYPE_STRING);
c.setCellValue(new HSSFRichTextString("TEST"));
s.setColumnWidth(cellnum + 1, (int)(50 * 8 / 0.05));
if ((rownum % 2) == 0)
{
c.setCellStyle(cs2);
}
} // 50 characters divided by 1/20th of a point
}
// draw a thick black border on the row at the bottom using BLANKS
rownum++;
rownum++;
r = s.createRow(rownum);
cs3.setBorderBottom(HSSFCellStyle.BORDER_THICK);
for (short cellnum = ( short ) 0; cellnum < 50; cellnum++)
{
c = r.createCell(cellnum, HSSFCell.CELL_TYPE_BLANK);
// c.setCellValue(0);
c.setCellStyle(cs3);
}
s.addMergedRegion(new CellRangeAddress(0, 3, 0, 3));
s.addMergedRegion(new CellRangeAddress(100, 110, 100, 110));
// end draw thick black border
// create a sheet, set its title then delete it
s = wb.createSheet();
wb.setSheetName(1, "DeletedSheet");
wb.removeSheetAt(1);
// end deleted sheet
wb.write(out);
out.close();
}
/**
* Constructor HSSF - takes in file - attempts to read it then reconstruct it
*
*
* @param infile
* @param outfile
* @param write
*
* @exception IOException
*
*/
public HSSFReadWrite(String infile, String outfile, boolean write)
throws IOException
{
this.filename = infile;
POIFSFileSystem fs =
new POIFSFileSystem(new FileInputStream(filename));
hssfworkbook = new HSSFWorkbook(fs);
// HSSFWorkbook book = hssfstream.getWorkbook();
}
/**
* Method main * Method main
* *
* Given 1 argument takes that as the filename, inputs it and dumps the * Given 1 argument takes that as the filename, inputs it and dumps the
* cell values/types out to sys.out * cell values/types out to sys.out.<br/>
* *
* given 2 arguments where the second argument is the word "write" and the * given 2 arguments where the second argument is the word "write" and the
* first is the filename - writes out a sample (test) spreadsheet (see * first is the filename - writes out a sample (test) spreadsheet
* public HSSF(String filename, boolean write)). * see {@link HSSFReadWrite#testCreateSampleSheet(String)}.<br/>
* *
* given 2 arguments where the first is an input filename and the second * given 2 arguments where the first is an input filename and the second
* an output filename (not write), attempts to fully read in the * an output filename (not write), attempts to fully read in the
* spreadsheet and fully write it out. * spreadsheet and fully write it out.<br/>
* *
* given 3 arguments where the first is an input filename and the second an * given 3 arguments where the first is an input filename and the second an
* output filename (not write) and the third is "modify1", attempts to read in the * output filename (not write) and the third is "modify1", attempts to read in the
* spreadsheet, deletes rows 0-24, 74-99. Changes cell at row 39, col 3 to * spreadsheet, deletes rows 0-24, 74-99. Changes cell at row 39, col 3 to
* "MODIFIED CELL" then writes it out. Hence this is "modify test 1". If you * "MODIFIED CELL" then writes it out. Hence this is "modify test 1". If you
* take the output from the write test, you'll have a valid scenario. * take the output from the write test, you'll have a valid scenario.
*
* @param args
*
*/ */
public static void main(String[] args) {
if (args.length < 1) {
System.err.println("At least one argument expected");
return;
}
public static void main(String [] args) String fileName = args[0];
{ try {
if (args.length < 2) if (args.length < 2) {
{
try HSSFWorkbook wb = HSSFReadWrite.readFile(fileName);
{
HSSFReadWrite hssf = new HSSFReadWrite(args[ 0 ]);
System.out.println("Data dump:\n"); System.out.println("Data dump:\n");
HSSFWorkbook wb = hssf.hssfworkbook;
for (int k = 0; k < wb.getNumberOfSheets(); k++) for (int k = 0; k < wb.getNumberOfSheets(); k++) {
{ HSSFSheet sheet = wb.getSheetAt(k);
HSSFSheet sheet = wb.getSheetAt(k); int rows = sheet.getPhysicalNumberOfRows();
int rows = sheet.getPhysicalNumberOfRows(); System.out.println("Sheet " + k + " \"" + wb.getSheetName(k) + "\" has " + rows
System.out.println("Sheet " + k + " \"" + " row(s).");
+ wb.getSheetName(k) + "\" has " for (int r = 0; r < rows; r++) {
+ rows + " row(s)."); HSSFRow row = sheet.getRow(r);
for (int r = 0; r < rows; r++) if (row == null) {
{ continue;
HSSFRow row = sheet.getRow(r); }
int cells = (row != null) ? row.getPhysicalNumberOfCells() : 0;
if (row != null) {
System.out.println("\nROW " + row.getRowNum()
+ " has " + cells + " cell(s).");
}
for (int c = 0; c < cells; c++)
{
HSSFCell cell = row.getCell(c);
String value = null;
switch (cell.getCellType()) int cells = row.getPhysicalNumberOfCells();
{ System.out.println("\nROW " + row.getRowNum() + " has " + cells
+ " cell(s).");
for (int c = 0; c < cells; c++) {
HSSFCell cell = row.getCell(c);
String value = null;
case HSSFCell.CELL_TYPE_FORMULA : switch (cell.getCellType()) {
value = "FORMULA value="
+ cell.getCellFormula();
break;
case HSSFCell.CELL_TYPE_NUMERIC : case HSSFCell.CELL_TYPE_FORMULA:
value = "NUMERIC value=" value = "FORMULA value=" + cell.getCellFormula();
+ cell.getNumericCellValue(); break;
break;
case HSSFCell.CELL_TYPE_STRING : case HSSFCell.CELL_TYPE_NUMERIC:
value = "STRING value=" value = "NUMERIC value=" + cell.getNumericCellValue();
+ cell.getStringCellValue(); break;
break;
default : case HSSFCell.CELL_TYPE_STRING:
} value = "STRING value=" + cell.getStringCellValue();
System.out.println("CELL col=" break;
+ cell.getCellNum()
+ " VALUE=" + value);
}
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
else if (args.length == 2)
{
if (args[ 1 ].toLowerCase().equals("write"))
{
System.out.println("Write mode");
try
{
long time = System.currentTimeMillis();
HSSFReadWrite hssf = new HSSFReadWrite(args[ 0 ], true);
System.out default:
.println("" + (System.currentTimeMillis() - time) }
+ " ms generation time"); System.out.println("CELL col=" + cell.getColumnIndex() + " VALUE="
} + value);
catch (Exception e) }
{ }
e.printStackTrace(); }
} } else if (args.length == 2) {
} if (args[1].toLowerCase().equals("write")) {
else System.out.println("Write mode");
{ long time = System.currentTimeMillis();
System.out.println("readwrite test"); HSSFReadWrite.testCreateSampleSheet(fileName);
try
{
HSSFReadWrite hssf = new HSSFReadWrite(args[ 0 ]);
// HSSFStream hssfstream = hssf.hssfstream; System.out.println("" + (System.currentTimeMillis() - time)
HSSFWorkbook wb = hssf.hssfworkbook; + " ms generation time");
FileOutputStream stream = new FileOutputStream(args[ 1 ]); } else {
System.out.println("readwrite test");
HSSFWorkbook wb = HSSFReadWrite.readFile(fileName);
FileOutputStream stream = new FileOutputStream(args[1]);
// HSSFCell cell = new HSSFCell(); wb.write(stream);
// cell.setCellNum((short)3); stream.close();
// cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC); }
// cell.setCellValue(-8009.999); } else if (args.length == 3 && args[2].toLowerCase().equals("modify1")) {
// hssfstream.modifyCell(cell,0,(short)6); // delete row 0-24, row 74 - 99 && change cell 3 on row 39 to string "MODIFIED CELL!!"
wb.write(stream);
stream.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
else if ((args.length == 3)
&& args[ 2 ].toLowerCase().equals("modify1"))
{
try // delete row 0-24, row 74 - 99 && change cell 3 on row 39 to string "MODIFIED CELL!!"
{
HSSFReadWrite hssf = new HSSFReadWrite(args[ 0 ]);
// HSSFStream hssfstream = hssf.hssfstream; HSSFWorkbook wb = HSSFReadWrite.readFile(fileName);
HSSFWorkbook wb = hssf.hssfworkbook; FileOutputStream stream = new FileOutputStream(args[1]);
FileOutputStream stream = new FileOutputStream(args[ 1 ]); HSSFSheet sheet = wb.getSheetAt(0);
HSSFSheet sheet = wb.getSheetAt(0);
for (int k = 0; k < 25; k++) for (int k = 0; k < 25; k++) {
{ HSSFRow row = sheet.getRow(k);
HSSFRow row = sheet.getRow(k);
sheet.removeRow(row); sheet.removeRow(row);
} }
for (int k = 74; k < 100; k++) for (int k = 74; k < 100; k++) {
{ HSSFRow row = sheet.getRow(k);
HSSFRow row = sheet.getRow(k);
sheet.removeRow(row); sheet.removeRow(row);
} }
HSSFRow row = sheet.getRow(39); HSSFRow row = sheet.getRow(39);
HSSFCell cell = row.getCell(3); HSSFCell cell = row.getCell(3);
cell.setCellValue("MODIFIED CELL!!!!!");
cell.setCellType(HSSFCell.CELL_TYPE_STRING); wb.write(stream);
cell.setCellValue("MODIFIED CELL!!!!!"); stream.close();
}
// HSSFCell cell = new HSSFCell(); } catch (Exception e) {
// cell.setCellNum((short)3); e.printStackTrace();
// cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC); }
// cell.setCellValue(-8009.999); }
// hssfstream.modifyCell(cell,0,(short)6);
wb.write(stream);
stream.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
} }