| <?xml version="1.0" encoding="UTF-8"?> |
| <!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "../dtd/document-v11.dtd"> |
| |
| <document> |
| <header> |
| <title>Busy Developers' Guide to HSSF Features</title> |
| <authors> |
| <person email="glens@apache.org" name="Glen Stampoultzis" id="CO"/> |
| </authors> |
| </header> |
| <body> |
| <section><title>Busy Developers' Guide to Features</title> |
| <p> |
| Want to use HSSF read and write spreadsheets in a hurry? This guide is for you. If you're after |
| more in-depth coverage of the HSSF user-API please consult the <link href="how-to.html">HOWTO</link> |
| guide as it contains actual descriptions of how to use this stuff. |
| </p> |
| <section><title>Index of Features</title> |
| <ul> |
| <li><link href="#NewWorkbook">How to create a new workbook</link></li> |
| <li><link href="#NewSheet">How to create a sheet</link></li> |
| <li><link href="#CreateCells">How to create cells</link></li> |
| <li><link href="#CreateDateCells">How to create date cells</link></li> |
| <li><link href="#CellTypes">Working with different types of cells</link></li> |
| <li><link href="#Alignment">Aligning cells</link></li> |
| <li><link href="#Borders">Working with borders</link></li> |
| <li><link href="#FrillsAndFills">Fills and color</link></li> |
| <li><link href="#MergedCells">Merging cells</link></li> |
| <li><link href="#WorkingWithFonts">Working with fonts</link></li> |
| <li><link href="#CustomColors">Custom colors</link></li> |
| <li><link href="#ReadWriteWorkbook">Reading and writing</link></li> |
| <li><link href="#NewLinesInCells">Use newlines in cells.</link></li> |
| <li><link href="#DataFormats">Create user defined data formats.</link></li> |
| <li><link href="#FitTo">Fit Sheet to One Page</link></li> |
| <li><link href="#PrintArea2">Set print area for a sheet.</link></li> |
| <li><link href="#FooterPageNumbers">Set page numbers on the footer of a sheet.</link></li> |
| <li><link href="#ShiftRows">Shift rows.</link></li> |
| <li><link href="#SelectSheet">Set a sheet as selected.</link></li> |
| <li><link href="#Zoom">Set the zoom magnification for a sheet.</link></li> |
| <li><link href="#Splits">Create split and freeze panes.</link></li> |
| <li><link href="#Repeating">Repeating rows and columns.</link></li> |
| <li><link href="#HeaderFooter">Headers and Footers.</link></li> |
| </ul> |
| </section> |
| <section><title>Features</title> |
| <anchor id="NewWorkbook"/> |
| <section><title>New Workbook</title> |
| <source> |
| HSSFWorkbook wb = new HSSFWorkbook(); |
| FileOutputStream fileOut = new FileOutputStream("workbook.xls"); |
| wb.write(fileOut); |
| fileOut.close(); |
| </source> |
| </section> |
| <anchor id="NewSheet"/> |
| <section><title>New Sheet</title> |
| <source> |
| HSSFWorkbook wb = new HSSFWorkbook(); |
| HSSFSheet sheet1 = wb.createSheet("new sheet"); |
| HSSFSheet sheet2 = wb.createSheet("second sheet"); |
| FileOutputStream fileOut = new FileOutputStream("workbook.xls"); |
| wb.write(fileOut); |
| fileOut.close(); |
| </source> |
| </section> |
| <anchor id="CreateCells"/> |
| <section><title>Creating Cells</title> |
| <source> |
| HSSFWorkbook wb = new HSSFWorkbook(); |
| HSSFSheet sheet = wb.createSheet("new sheet"); |
| |
| // Create a row and put some cells in it. Rows are 0 based. |
| HSSFRow row = sheet.createRow((short)0); |
| // Create a cell and put a value in it. |
| HSSFCell cell = row.createCell((short)0); |
| cell.setCellValue(1); |
| |
| // Or do it on one line. |
| row.createCell((short)1).setCellValue(1.2); |
| row.createCell((short)2).setCellValue("This is a string"); |
| row.createCell((short)3).setCellValue(true); |
| |
| // Write the output to a file |
| FileOutputStream fileOut = new FileOutputStream("workbook.xls"); |
| wb.write(fileOut); |
| fileOut.close(); |
| </source> |
| </section> |
| <anchor id="CreateDateCells"/> |
| <section><title>Creating Date Cells</title> |
| <source> |
| HSSFWorkbook wb = new HSSFWorkbook(); |
| HSSFSheet sheet = wb.createSheet("new sheet"); |
| |
| // Create a row and put some cells in it. Rows are 0 based. |
| HSSFRow row = sheet.createRow((short)0); |
| |
| // Create a cell and put a date value in it. The first cell is not styled |
| // as a date. |
| HSSFCell cell = row.createCell((short)0); |
| cell.setCellValue(new Date()); |
| |
| // we style the second cell as a date (and time). It is important to |
| // create a new cell style from the workbook otherwise you can end up |
| // modifying the built in style and effecting not only this cell but other cells. |
| HSSFCellStyle cellStyle = wb.createCellStyle(); |
| cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm")); |
| cell = row.createCell((short)1); |
| cell.setCellValue(new Date()); |
| cell.setCellStyle(cellStyle); |
| |
| // Write the output to a file |
| FileOutputStream fileOut = new FileOutputStream("workbook.xls"); |
| wb.write(fileOut); |
| fileOut.close(); |
| </source> |
| </section> |
| <anchor id="CellTypes"/> |
| <section><title>Working with different types of cells</title> |
| <source> |
| HSSFWorkbook wb = new HSSFWorkbook(); |
| HSSFSheet sheet = wb.createSheet("new sheet"); |
| HSSFRow row = sheet.createRow((short)2); |
| row.createCell((short) 0).setCellValue(1.1); |
| row.createCell((short) 1).setCellValue(new Date()); |
| row.createCell((short) 2).setCellValue("a string"); |
| row.createCell((short) 3).setCellValue(true); |
| row.createCell((short) 4).setCellType(HSSFCell.CELL_TYPE_ERROR); |
| |
| // Write the output to a file |
| FileOutputStream fileOut = new FileOutputStream("workbook.xls"); |
| wb.write(fileOut); |
| fileOut.close(); |
| </source> |
| </section> |
| <anchor id="Alignment"/> |
| <section><title>Demonstrates various alignment options</title> |
| <source> |
| public static void main(String[] args) |
| throws IOException |
| { |
| HSSFWorkbook wb = new HSSFWorkbook(); |
| HSSFSheet sheet = wb.createSheet("new sheet"); |
| HSSFRow row = sheet.createRow((short) 2); |
| createCell(wb, row, (short) 0, HSSFCellStyle.ALIGN_CENTER); |
| createCell(wb, row, (short) 1, HSSFCellStyle.ALIGN_CENTER_SELECTION); |
| createCell(wb, row, (short) 2, HSSFCellStyle.ALIGN_FILL); |
| createCell(wb, row, (short) 3, HSSFCellStyle.ALIGN_GENERAL); |
| createCell(wb, row, (short) 4, HSSFCellStyle.ALIGN_JUSTIFY); |
| createCell(wb, row, (short) 5, HSSFCellStyle.ALIGN_LEFT); |
| createCell(wb, row, (short) 6, HSSFCellStyle.ALIGN_RIGHT); |
| |
| // Write the output to a file |
| FileOutputStream fileOut = new FileOutputStream("workbook.xls"); |
| wb.write(fileOut); |
| fileOut.close(); |
| |
| } |
| |
| /** |
| * Creates a cell and aligns it a certain way. |
| * |
| * @param wb the workbook |
| * @param row the row to create the cell in |
| * @param column the column number to create the cell in |
| * @param align the alignment for the cell. |
| */ |
| private static void createCell(HSSFWorkbook wb, HSSFRow row, short column, short align) |
| { |
| HSSFCell cell = row.createCell(column); |
| cell.setCellValue("Align It"); |
| HSSFCellStyle cellStyle = wb.createCellStyle(); |
| cellStyle.setAlignment(align); |
| cell.setCellStyle(cellStyle); |
| } |
| </source> |
| </section> |
| <anchor id="Borders"/> |
| <section><title>Working with borders</title> |
| <source> |
| HSSFWorkbook wb = new HSSFWorkbook(); |
| HSSFSheet sheet = wb.createSheet("new sheet"); |
| |
| // Create a row and put some cells in it. Rows are 0 based. |
| HSSFRow row = sheet.createRow((short) 1); |
| |
| // Create a cell and put a value in it. |
| HSSFCell cell = row.createCell((short) 1); |
| cell.setCellValue(4); |
| |
| // Style the cell with borders all around. |
| HSSFCellStyle style = wb.createCellStyle(); |
| style.setBorderBottom(HSSFCellStyle.BORDER_THIN); |
| style.setBottomBorderColor(HSSFColor.BLACK.index); |
| style.setBorderLeft(HSSFCellStyle.BORDER_THIN); |
| style.setLeftBorderColor(HSSFColor.GREEN.index); |
| style.setBorderRight(HSSFCellStyle.BORDER_THIN); |
| style.setRightBorderColor(HSSFColor.BLUE.index); |
| style.setBorderTop(HSSFCellStyle.BORDER_MEDIUM_DASHED); |
| style.setTopBorderColor(HSSFColor.BLACK.index); |
| cell.setCellStyle(style); |
| |
| // Write the output to a file |
| FileOutputStream fileOut = new FileOutputStream("workbook.xls"); |
| wb.write(fileOut); |
| fileOut.close(); |
| </source> |
| </section> |
| <anchor id="FillsAndFrills"/> |
| <section><title>Fills and colors</title> |
| <source> |
| HSSFWorkbook wb = new HSSFWorkbook(); |
| HSSFSheet sheet = wb.createSheet("new sheet"); |
| |
| // Create a row and put some cells in it. Rows are 0 based. |
| HSSFRow row = sheet.createRow((short) 1); |
| |
| // Aqua background |
| HSSFCellStyle style = wb.createCellStyle(); |
| style.setFillBackgroundColor(HSSFColor.AQUA.index); |
| style.setFillPattern(HSSFCellStyle.BIG_SPOTS); |
| HSSFCell cell = row.createCell((short) 1); |
| cell.setCellValue("X"); |
| cell.setCellStyle(style); |
| |
| // Orange "foreground", foreground being the fill foreground not the font color. |
| style = wb.createCellStyle(); |
| style.setFillForegroundColor(HSSFColor.ORANGE.index); |
| style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); |
| cell = row.createCell((short) 2); |
| cell.setCellValue("X"); |
| cell.setCellStyle(style); |
| |
| // Write the output to a file |
| FileOutputStream fileOut = new FileOutputStream("workbook.xls"); |
| wb.write(fileOut); |
| fileOut.close(); |
| </source> |
| </section> |
| <anchor id="MergedCells"/> |
| <section><title>Merging cells</title> |
| <source> |
| HSSFWorkbook wb = new HSSFWorkbook(); |
| HSSFSheet sheet = wb.createSheet("new sheet"); |
| |
| HSSFRow row = sheet.createRow((short) 1); |
| HSSFCell cell = row.createCell((short) 1); |
| cell.setCellValue("This is a test of merging"); |
| |
| sheet.addMergedRegion(new Region(1,(short)1,1,(short)2)); |
| |
| // Write the output to a file |
| FileOutputStream fileOut = new FileOutputStream("workbook.xls"); |
| wb.write(fileOut); |
| fileOut.close(); |
| </source> |
| </section> |
| <anchor id="WorkingWithFonts"/> |
| <section><title>Working with fonts</title> |
| <source> |
| HSSFWorkbook wb = new HSSFWorkbook(); |
| HSSFSheet sheet = wb.createSheet("new sheet"); |
| |
| // Create a row and put some cells in it. Rows are 0 based. |
| HSSFRow row = sheet.createRow((short) 1); |
| |
| // Create a new font and alter it. |
| HSSFFont font = wb.createFont(); |
| font.setFontHeightInPoints((short)24); |
| font.setFontName("Courier New"); |
| font.setItalic(true); |
| font.setStrikeout(true); |
| |
| // Fonts are set into a style so create a new one to use. |
| HSSFCellStyle style = wb.createCellStyle(); |
| style.setFont(font); |
| |
| // Create a cell and put a value in it. |
| HSSFCell cell = row.createCell((short) 1); |
| cell.setCellValue("This is a test of fonts"); |
| cell.setCellStyle(style); |
| |
| // Write the output to a file |
| FileOutputStream fileOut = new FileOutputStream("workbook.xls"); |
| wb.write(fileOut); |
| fileOut.close(); |
| </source> |
| </section> |
| <anchor id="CustomColors"/> |
| <section><title>Custom colors</title> |
| <source> |
| HSSFWorkbook wb = new HSSFWorkbook(); |
| HSSFSheet sheet = wb.createSheet(); |
| HSSFRow row = sheet.createRow((short) 0); |
| HSSFCell cell = row.createCell((short) 0); |
| cell.setCellValue("Default Palette"); |
| |
| //apply some colors from the standard palette, |
| // as in the previous examples. |
| //we'll use red text on a lime background |
| |
| HSSFCellStyle style = wb.createCellStyle(); |
| style.setFillForegroundColor(HSSFColor.LIME.index); |
| style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); |
| |
| HSSFFont font = wb.createFont(); |
| font.setColor(HSSFColor.RED.index); |
| style.setFont(font); |
| |
| cell.setCellStyle(style); |
| |
| //save with the default palette |
| FileOutputStream out = new FileOutputStream("default_palette.xls"); |
| wb.write(out); |
| out.close(); |
| |
| //now, let's replace RED and LIME in the palette |
| // with a more attractive combination |
| // (lovingly borrowed from freebsd.org) |
| |
| cell.setCellValue("Modified Palette"); |
| |
| //creating a custom palette for the workbook |
| HSSFPalette palette = wb.getCustomPalette(); |
| |
| //replacing the standard red with freebsd.org red |
| palette.setColorAtIndex(HSSFColor.RED.index, |
| (byte) 153, //RGB red (0-255) |
| (byte) 0, //RGB green |
| (byte) 0 //RGB blue |
| ); |
| //replacing lime with freebsd.org gold |
| palette.setColorAtIndex(HSSFColor.LIME.index, (byte) 255, (byte) 204, (byte) 102); |
| |
| //save with the modified palette |
| // note that wherever we have previously used RED or LIME, the |
| // new colors magically appear |
| out = new FileOutputStream("modified_palette.xls"); |
| wb.write(out); |
| out.close(); |
| </source> |
| </section> |
| <anchor id="ReadWriteWorkbook"/> |
| <section><title>Reading and Rewriting Workbooks</title> |
| <source> |
| POIFSFileSystem fs = |
| new POIFSFileSystem(new FileInputStream("workbook.xls")); |
| HSSFWorkbook wb = new HSSFWorkbook(fs); |
| HSSFSheet sheet = wb.getSheetAt(0); |
| HSSFRow row = sheet.getRow(2); |
| HSSFCell cell = row.getCell((short)3); |
| if (cell == null) |
| cell = row.createCell((short)3); |
| cell.setCellType(HSSFCell.CELL_TYPE_STRING); |
| cell.setCellValue("a test"); |
| |
| // Write the output to a file |
| FileOutputStream fileOut = new FileOutputStream("workbook.xls"); |
| wb.write(fileOut); |
| fileOut.close(); |
| </source> |
| </section> |
| <anchor id="NewLinesInCells"/> |
| <section><title>Using newlines in cells</title> |
| <source> |
| HSSFWorkbook wb = new HSSFWorkbook(); |
| HSSFSheet s = wb.createSheet(); |
| HSSFRow r = null; |
| HSSFCell c = null; |
| HSSFCellStyle cs = wb.createCellStyle(); |
| HSSFFont f = wb.createFont(); |
| HSSFFont f2 = wb.createFont(); |
| |
| cs = wb.createCellStyle(); |
| |
| cs.setFont( f2 ); |
| //Word Wrap MUST be turned on |
| cs.setWrapText( true ); |
| |
| r = s.createRow( (short) 2 ); |
| r.setHeight( (short) 0x349 ); |
| c = r.createCell( (short) 2 ); |
| c.setCellType( HSSFCell.CELL_TYPE_STRING ); |
| c.setCellValue( "Use \n with word wrap on to create a new line" ); |
| c.setCellStyle( cs ); |
| s.setColumnWidth( (short) 2, (short) ( ( 50 * 8 ) / ( (double) 1 / 20 ) ) ); |
| |
| FileOutputStream fileOut = new FileOutputStream( "workbook.xls" ); |
| wb.write( fileOut ); |
| fileOut.close();</source> |
| </section> |
| <anchor id="DataFormats"/> |
| <section><title>Data Formats</title> |
| <source> |
| HSSFWorkbook wb = new HSSFWorkbook(); |
| HSSFSheet sheet = wb.createSheet("format sheet"); |
| HSSFCellStyle style; |
| HSSFDataFormat format = wb.createDataFormat(); |
| HSSFRow row; |
| HSSFCell cell; |
| short rowNum = 0; |
| short colNum = 0; |
| |
| row = sheet.createRow(rowNum++); |
| cell = row.createCell(colNum); |
| cell.setCellValue(11111.25); |
| style = wb.createCellStyle(); |
| style.setDataFormat(format.getFormat("0.0")); |
| cell.setCellStyle(style); |
| |
| row = sheet.createRow(rowNum++); |
| cell = row.createCell(colNum); |
| cell.setCellValue(11111.25); |
| style = wb.createCellStyle(); |
| style.setDataFormat(format.getFormat("#,##0.0000")); |
| cell.setCellStyle(style); |
| |
| FileOutputStream fileOut = new FileOutputStream("workbook.xls"); |
| wb.write(fileOut); |
| fileOut.close(); |
| </source> |
| </section> |
| <anchor id="FitTo"/> |
| <section><title>Fit Sheet to One Page</title> |
| <source> |
| HSSFWorkbook wb = new HSSFWorkbook(); |
| HSSFSheet sheet = wb.createSheet("format sheet"); |
| HSSFPrintSetup ps = sheet.getPrintSetup(); |
| |
| sheet.setAutobreaks(true); |
| |
| ps.setFitHeight((short)1); |
| ps.setFitWidth((short)1); |
| |
| |
| // Create various cells and rows for spreadsheet. |
| |
| FileOutputStream fileOut = new FileOutputStream("workbook.xls"); |
| wb.write(fileOut); |
| fileOut.close(); |
| </source> |
| </section> |
| <anchor id="PrintArea2"/> |
| <section><title>Set Print Area</title> |
| <source> |
| HSSFWorkbook wb = new HSSFWorkbook(); |
| HSSFSheet sheet = wb.createSheet("Sheet1"); |
| wb.setPrintArea(0, "$A$1:$C$2"); |
| //sets the print area for the first sheet |
| //Alternatively: |
| //wb.setPrintArea(0, 0, 1, 0, 0) is equivalent to using the name reference (See the JavaDocs for more details) |
| |
| // Create various cells and rows for spreadsheet. |
| |
| FileOutputStream fileOut = new FileOutputStream("workbook.xls"); |
| wb.write(fileOut); |
| fileOut.close(); |
| |
| |
| </source> |
| </section> |
| |
| <anchor id="FooterPageNumbers"/> |
| <section><title>Set Page Numbers on Footer</title> |
| <source> |
| HSSFWorkbook wb = new HSSFWorkbook(); |
| HSSFSheet sheet = wb.createSheet("format sheet"); |
| HSSFFooter footer = sheet.getFooter() |
| |
| footer.setRight( "Page " + HSSFFooter.page() + " of " + HSSFFooter.numPages() ); |
| |
| |
| |
| // Create various cells and rows for spreadsheet. |
| |
| FileOutputStream fileOut = new FileOutputStream("workbook.xls"); |
| wb.write(fileOut); |
| fileOut.close(); |
| </source> |
| </section> |
| |
| <anchor id="ConvenienceFunctions"/> |
| <section><title>Using the Convenience Functions</title> |
| <p> |
| The convenience functions live in contrib and provide |
| utility features such as setting borders around merged |
| regions and changing style attributes without explicitly |
| creating new styles. |
| </p> |
| <source> |
| HSSFWorkbook wb = new HSSFWorkbook(); |
| HSSFSheet sheet1 = wb.createSheet( "new sheet" ); |
| |
| // Create a merged region |
| HSSFRow row = sheet1.createRow( (short) 1 ); |
| HSSFRow row2 = sheet1.createRow( (short) 2 ); |
| HSSFCell cell = row.createCell( (short) 1 ); |
| cell.setCellValue( "This is a test of merging" ); |
| Region region = new Region( 1, (short) 1, 4, (short) 4 ); |
| sheet1.addMergedRegion( region ); |
| |
| // Set the border and border colors. |
| final short borderMediumDashed = HSSFCellStyle.BORDER_MEDIUM_DASHED; |
| HSSFRegionUtil.setBorderBottom( borderMediumDashed, |
| region, sheet1, wb ); |
| HSSFRegionUtil.setBorderTop( borderMediumDashed, |
| region, sheet1, wb ); |
| HSSFRegionUtil.setBorderLeft( borderMediumDashed, |
| region, sheet1, wb ); |
| HSSFRegionUtil.setBorderRight( borderMediumDashed, |
| region, sheet1, wb ); |
| HSSFRegionUtil.setBottomBorderColor(HSSFColor.AQUA.index, region, sheet1, wb); |
| HSSFRegionUtil.setTopBorderColor(HSSFColor.AQUA.index, region, sheet1, wb); |
| HSSFRegionUtil.setLeftBorderColor(HSSFColor.AQUA.index, region, sheet1, wb); |
| HSSFRegionUtil.setRightBorderColor(HSSFColor.AQUA.index, region, sheet1, wb); |
| |
| // Shows some usages of HSSFCellUtil |
| HSSFCellStyle style = wb.createCellStyle(); |
| style.setIndention((short)4); |
| HSSFCellUtil.createCell(row, 8, "This is the value of the cell", style); |
| HSSFCell cell2 = HSSFCellUtil.createCell( row2, 8, "This is the value of the cell"); |
| HSSFCellUtil.setAlignment(cell2, wb, HSSFCellStyle.ALIGN_CENTER); |
| |
| // Write out the workbook |
| FileOutputStream fileOut = new FileOutputStream( "workbook.xls" ); |
| wb.write( fileOut ); |
| fileOut.close(); |
| </source> |
| </section> |
| |
| <anchor id="ShiftRows"/> |
| <section><title>Shift rows up or down on a sheet</title> |
| <source> |
| HSSFWorkbook wb = new HSSFWorkbook(); |
| HSSFSheet sheet = wb.createSheet("row sheet"); |
| |
| // Create various cells and rows for spreadsheet. |
| |
| // Shift rows 6 - 11 on the spreadsheet to the top (rows 0 - 5) |
| sheet.shiftRows(5, 10, -5); |
| |
| FileOutputStream fileOut = new FileOutputStream("workbook.xls"); |
| wb.write(fileOut); |
| fileOut.close(); |
| </source> |
| </section> |
| |
| <anchor id="SelectSheet"/> |
| <section><title>Set a sheet as selected</title> |
| <source> |
| HSSFWorkbook wb = new HSSFWorkbook(); |
| HSSFSheet sheet = wb.createSheet("row sheet"); |
| sheet.setSelected(true); |
| |
| // Create various cells and rows for spreadsheet. |
| |
| FileOutputStream fileOut = new FileOutputStream("workbook.xls"); |
| wb.write(fileOut); |
| fileOut.close(); |
| </source> |
| </section> |
| |
| <anchor id="Zoom"/> |
| <section><title>Set the zoom magnification</title> |
| <p> |
| The zoom is expressed as a fraction. For example to |
| express a zoom of 75% use 3 for the numerator and |
| 4 for the denominator. |
| </p> |
| <source> |
| HSSFWorkbook wb = new HSSFWorkbook(); |
| HSSFSheet sheet1 = wb.createSheet("new sheet"); |
| sheet1.setZoom(3,4); // 75 percent magnification |
| FileOutputStream fileOut = new FileOutputStream("workbook.xls"); |
| wb.write(fileOut); |
| fileOut.close(); |
| </source> |
| </section> |
| |
| <anchor id="Splits"/> |
| <section><title>Splits and freeze panes</title> |
| <p> |
| There are two types of panes you can create; freeze panes and split panes. |
| </p> |
| <p> |
| A freeze pane is split by columns and rows. You create |
| a freeze pane using the following mechanism: |
| </p> |
| <p> |
| sheet1.createFreezePane( 3, 2, 3, 2 ); |
| </p> |
| <p> |
| The first two parameters are the columns and rows you |
| wish to split by. The second two parameters indicate |
| the cells that are visible in the bottom right quadrant. |
| </p> |
| <p> |
| |
| Split pains appear differently. The split area is |
| divided into four separate work area's. The split |
| occurs at the pixel level and the user is able to |
| adjust the split by dragging it to a new position. |
| </p> |
| <p> |
| |
| Split panes are created with the following call: |
| </p> |
| <p> |
| sheet2.createSplitPane( 2000, 2000, 0, 0, HSSFSheet.PANE_LOWER_LEFT ); |
| </p> |
| <p> |
| |
| The first parameter is the x position of the split. |
| This is in 1/20th of a point. A point in this case |
| seems to equate to a pixel. The second parameter is |
| the y position of the split. Again in 1/20th of a point. |
| </p> |
| <p> |
| The last parameter indicates which pane currently has |
| the focus. This will be one of HSSFSheet.PANE_LOWER_LEFT, |
| PANE_LOWER_RIGHT, PANE_UPPER_RIGHT or PANE_UPPER_LEFT. |
| </p> |
| <source> |
| HSSFWorkbook wb = new HSSFWorkbook(); |
| HSSFSheet sheet1 = wb.createSheet("new sheet"); |
| HSSFSheet sheet2 = wb.createSheet("second sheet"); |
| HSSFSheet sheet3 = wb.createSheet("third sheet"); |
| HSSFSheet sheet4 = wb.createSheet("fourth sheet"); |
| |
| // Freeze just one row |
| sheet1.createFreezePane( 0, 1, 0, 1 ); |
| // Freeze just one column |
| sheet2.createFreezePane( 1, 0, 1, 0 ); |
| // Freeze the columns and rows (forget about scrolling position of the lower right quadrant). |
| sheet3.createFreezePane( 2, 2 ); |
| // Create a split with the lower left side being the active quadrant |
| sheet4.createSplitPane( 2000, 2000, 0, 0, HSSFSheet.PANE_LOWER_LEFT ); |
| |
| FileOutputStream fileOut = new FileOutputStream("workbook.xls"); |
| wb.write(fileOut); |
| fileOut.close(); |
| </source> |
| </section> |
| |
| <anchor id="Repeating"/> |
| <section><title>Repeating rows and columns</title> |
| <p> |
| It's possible to set up repeating rows and columns in |
| your printouts by using the setRepeatingRowsAndColumns() |
| function in the HSSFWorkbook class. |
| </p> |
| <p> |
| This function Contains 5 parameters. |
| The first parameter is the index to the sheet (0 = first sheet). |
| The second and third parameters specify the range for the columns to repreat. |
| To stop the columns from repeating pass in -1 as the start and end column. |
| The fourth and fifth parameters specify the range for the rows to repeat. |
| To stop the columns from repeating pass in -1 as the start and end rows. |
| </p> |
| <source> |
| HSSFWorkbook wb = new HSSFWorkbook(); |
| HSSFSheet sheet1 = wb.createSheet("new sheet"); |
| HSSFSheet sheet2 = wb.createSheet("second sheet"); |
| |
| // Set the columns to repeat from column 0 to 2 on the first sheet |
| wb.setRepeatingRowsAndColumns(0,0,2,-1,-1); |
| // Set the the repeating rows and columns on the second sheet. |
| wb.setRepeatingRowsAndColumns(1,4,5,1,2); |
| |
| FileOutputStream fileOut = new FileOutputStream("workbook.xls"); |
| wb.write(fileOut); |
| fileOut.close(); |
| </source> |
| </section> |
| <anchor id="HeaderFooter"/> |
| <section><title>Headers and Footers</title> |
| <p> |
| Example is for headers but applies directly to footers. |
| </p> |
| <source> |
| HSSFWorkbook wb = new HSSFWorkbook(); |
| HSSFSheet sheet = wb.createSheet("new sheet"); |
| |
| HSSFHeader header = sheet.getHeader(); |
| header.setCenter("Center Header"); |
| header.setLeft("Left Header"); |
| header.setRight(HSSFHeader.font("Stencil-Normal", "Italic") + |
| HSSFHeader.fontSize((short) 16) + "Right w/ Stencil-Normal Italic font and size 16"); |
| |
| FileOutputStream fileOut = new FileOutputStream("workbook.xls"); |
| wb.write(fileOut); |
| fileOut.close(); |
| </source> |
| </section> |
| </section> |
| </section> |
| </body> |
| </document> |