From 9cf4e35542001c4fdc9258b5f918965a419679df Mon Sep 17 00:00:00 2001 From: "Andrew C. Oliver" Date: Fri, 20 Sep 2002 01:27:33 +0000 Subject: [PATCH] convience contrib http://nagoya.apache.org/bugzilla/show_bug.cgi?id=12102 - Eric Pugh upped build number to 1.9.0 for nightly builds. PR: Obtained from: Submitted by: Reviewed by: git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@352850 13f79535-47bb-0310-9956-ffa450edef68 --- module.xml | 2 +- src/contrib/lib/commons-beanutils.jar | Bin 0 -> 81149 bytes src/contrib/lib/commons-lang-1.0-b1.jar | Bin 0 -> 33320 bytes .../hssf/usermodel/contrib/HSSFCellUtil.java | 268 ++++++++++++++++++ .../usermodel/contrib/HSSFRegionUtil.java | 266 +++++++++++++++++ 5 files changed, 535 insertions(+), 1 deletion(-) create mode 100644 src/contrib/lib/commons-beanutils.jar create mode 100644 src/contrib/lib/commons-lang-1.0-b1.jar create mode 100644 src/contrib/src/org/apache/poi/hssf/usermodel/contrib/HSSFCellUtil.java create mode 100644 src/contrib/src/org/apache/poi/hssf/usermodel/contrib/HSSFRegionUtil.java diff --git a/module.xml b/module.xml index 56fc2c43d..fbcfd590c 100644 --- a/module.xml +++ b/module.xml @@ -58,7 +58,7 @@ diff --git a/src/contrib/lib/commons-beanutils.jar b/src/contrib/lib/commons-beanutils.jar new file mode 100644 index 0000000000000000000000000000000000000000..15e40d9ef213e02cfd07bd1eeefd0f9b9dd171ee GIT binary patch literal 81149 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

O6xZbYh!_q>O^{UIs7f6H_(QieT$x1mY#jIAaky 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 literal 0 HcmV?d00001 diff --git a/src/contrib/lib/commons-lang-1.0-b1.jar b/src/contrib/lib/commons-lang-1.0-b1.jar new file mode 100644 index 0000000000000000000000000000000000000000..069d3c2918b917bd6179d0f3b57d490e8266f23c GIT binary patch literal 33320 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. + */ +package org.apache.poi.hssf.usermodel.contrib; + +import java.util.*; + +import org.apache.poi.hssf.usermodel.HSSFCellStyle; +import org.apache.poi.hssf.usermodel.HSSFFont; +import org.apache.poi.hssf.usermodel.HSSFCell; +import org.apache.poi.hssf.usermodel.HSSFRow; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; + +import org.apache.commons.beanutils.PropertyUtils; +import org.apache.commons.lang.exception.NestableException; +import org.apache.commons.lang.StringUtils; +/** + * Various utility functions that make working with a cells and rows easier. The various + * methods that deal with style's allow you to create your HSSFCellStyles as you need them. + * When you apply a style change to a cell, the code will attempt to see if a style already + * exists that meets your needs. If not, then it will create a new style. This is to prevent + * creating too many styles. there is an upper limit in Excel on the number of styles that + * can be supported. + * + *@author Eric Pugh epugh@upstate.com + *@created July 29, 2002 + */ + +public class HSSFCellUtil { + private static HashMap unicodeMappings = new HashMap(); + + + /** + * Get a row from the spreadsheet, and create it if it doesn't exist. + * + *@param rowCounter The 0 based row number + *@param sheet The sheet that the row is part of. + *@return The row indicated by the rowCounter + */ + public static HSSFRow getRow( int rowCounter, HSSFSheet sheet ) { + HSSFRow row = sheet.getRow( (short) rowCounter ); + if ( row == null ) { + row = sheet.createRow( (short) rowCounter ); + } + return row; + } + + /** + * Get a specific cell from a row. If the cell doesn't exist, then create it. + * + *@param row The row that the cell is part of + *@param column The column index that the cell is in. + *@return The cell indicated by the column. + */ + public static HSSFCell getCell( HSSFRow row, int column ) { + HSSFCell cell = row.getCell( (short) column ); + if ( cell == null ) { + cell = row.createCell( (short) column ); + } + return cell; + } + + + /** + * Creates a cell, gives it a value, and applies a style if provided + * + *@param row the row to create the cell in + *@param column the column index to create the cell in + *@param value The value of the cell + *@param style If the style is not null, then set + *@return A new HSSFCell + */ + public static HSSFCell createCell( HSSFRow row, int column, String value, HSSFCellStyle style ) { + HSSFCell cell = getCell( row, column ); + + cell.setCellValue( value ); + if ( style != null ) { + cell.setCellStyle( style ); + } + return cell; + } + + /** + * Create a cell, and give it a value. + * + *@param row the row to create the cell in + *@param column the column index to create the cell in + *@param value The value of the cell + *@return A new HSSFCell. + */ + public static HSSFCell createCell( HSSFRow row, int column, String value ) { + return createCell( row, column, value, null ); + } + + /** + * Take a cell, and align it. + * + *@param cell the cell to set the alignment for + *@param workbook The workbook that is being worked with. + *@param align the column alignment to use. + *@return The HSSFCell aligned. + *@exception NestableException Thrown if an error happens. + */ + public static void setAlignment(HSSFCell cell, HSSFWorkbook workbook, short align) throws NestableException { + setCellStyleProperty(cell, workbook, "alignment", new Short(align) ); + + } + + /** + * Take a cell, and apply a font to it + * + *@param cell the cell to set the alignment for + *@param workbook The workbook that is being worked with. + *@param font The HSSFFont that you want to set... + *@return The HSSFCell with the font + *@exception NestableException Thrown if an error happens. + */ + public static void setFont(HSSFCell cell, HSSFWorkbook workbook, HSSFFont font) throws NestableException { + setCellStyleProperty(cell, workbook, "font", font ); + + } + /** + * This method attempt to find an already existing HSSFCellStyle that matches + * what you want the style to be. If it does not find the style, then it + * creates a new one. If it does create a new one, then it applyies the + * propertyName and propertyValue to the style. This is nessasary because + * Excel has an upper limit on the number of Styles that it supports. + * + *@param workbook The workbook that is being worked with. + *@param propertyName The name of the property that is to be + * changed. + *@param propertyValue The value of the property that is to be + * changed. + *@param cell The cell that needs it's style changes + *@exception NestableException Thrown if an error happens. + */ + public static void setCellStyleProperty( HSSFCell cell, HSSFWorkbook workbook, String propertyName, Object propertyValue ) + throws NestableException { + try { + HSSFCellStyle originalStyle = cell.getCellStyle(); + HSSFCellStyle newStyle = null; + Map values = PropertyUtils.describe( originalStyle ); + values.put( propertyName, propertyValue ); + values.remove( "index" ); + // index seems like what index the cellstyle is in the list of styles for a workbook. + // not good to compare on! + + short numberCellStyles = workbook.getNumCellStyles(); + + for ( short i = 0; i < numberCellStyles; i++ ) { + HSSFCellStyle wbStyle = workbook.getCellStyleAt( i ); + Map wbStyleMap = PropertyUtils.describe( wbStyle ); + wbStyleMap.remove( "index" ); + + if ( wbStyleMap.equals( values ) ) { + newStyle = wbStyle; + break; + } + } + + if ( newStyle == null ) { + newStyle = workbook.createCellStyle(); + newStyle.setFont( workbook.getFontAt( originalStyle.getFontIndex() ) ); + PropertyUtils.copyProperties( newStyle, originalStyle ); + PropertyUtils.setProperty( newStyle, propertyName, propertyValue ); + } + + cell.setCellStyle( newStyle ); + } + catch ( Exception e ) { + e.printStackTrace(); + throw new NestableException( "Couldn't setCellStyleProperty.", e ); + } + } + + + /** + * Looks for text in the cell that should be unicode, like α and provides the + * unicode version of it. + * + *@param cell The cell to check for unicode values + *@return transalted to unicode + */ + public static HSSFCell translateUnicodeValues( HSSFCell cell ) { + String s = cell.getStringCellValue(); + boolean foundUnicode = false; + + for ( Iterator i = unicodeMappings.entrySet().iterator(); i.hasNext(); ) { + Map.Entry entry = (Map.Entry) i.next(); + String key = (String) entry.getKey(); + if ( s.toLowerCase().indexOf( key ) != -1 ) { + s = StringUtils.replace( s, key, "" + entry.getValue().toString() + "" ); + foundUnicode = true; + } + + } + + if ( foundUnicode ) { + + cell.setEncoding( HSSFCell.ENCODING_UTF_16 ); + cell.setCellValue( s ); + } + return cell; + } + + + static { + unicodeMappings.put( "α", "\u03B1" ); + unicodeMappings.put( "γ", "\u03B3" ); + unicodeMappings.put( "θ", "\u03B8" ); + + } + +} + diff --git a/src/contrib/src/org/apache/poi/hssf/usermodel/contrib/HSSFRegionUtil.java b/src/contrib/src/org/apache/poi/hssf/usermodel/contrib/HSSFRegionUtil.java new file mode 100644 index 000000000..e64f2879c --- /dev/null +++ b/src/contrib/src/org/apache/poi/hssf/usermodel/contrib/HSSFRegionUtil.java @@ -0,0 +1,266 @@ + +/* + * ==================================================================== + * The Apache Software License, Version 1.1 + * + * Copyright (c) 2002 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Apache" and "Apache Software Foundation" and + * "Apache POI" must not be used to endorse or promote products + * derived from this software without prior written permission. For + * written permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * "Apache POI", nor may "Apache" appear in their name, without + * prior written permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation. For more + * information on the Apache Software Foundation, please see + * . + */ +package org.apache.poi.hssf.usermodel.contrib; + +import org.apache.log4j.Category; + +import org.apache.poi.hssf.usermodel.HSSFCellStyle; +import org.apache.poi.hssf.usermodel.HSSFCell; +import org.apache.poi.hssf.usermodel.HSSFRow; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; + +import org.apache.poi.hssf.util.Region; + +import org.apache.commons.lang.exception.NestableException; + +/** + * Various utility functions that make working with a region of cells easier. + * + *@author Eric Pugh epugh@upstate.com + *@created July 29, 2002 + */ + +public class HSSFRegionUtil { + private static Category log = Category.getInstance( HSSFRegionUtil.class.getName() ); + + /** Constructor for the HSSFRegionUtil object */ + public HSSFRegionUtil() { } + + /** + * Sets the left border for a region of cells by manipulating the cell style + * of the indidual cells on the left + * + *@param border The new border + *@param region The region that should have the border + *@param workbook The workbook that the region is on. + *@param sheet The sheet that the region is on. + *@exception NestableException Thrown if the CellStyle can't be changed + */ + public static void setBorderLeft( short border, Region region, HSSFSheet sheet, HSSFWorkbook workbook ) + throws NestableException { + int rowStart = region.getRowFrom(); + int rowEnd = region.getRowTo(); + int column = region.getColumnFrom(); + + for ( int i = rowStart; i <= rowEnd; i++ ) { + HSSFRow row = HSSFCellUtil.getRow( i, sheet ); + HSSFCell cell = HSSFCellUtil.getCell( row, column ); + HSSFCellUtil.setCellStyleProperty( cell, workbook, "borderLeft", new Short( border ) ); + } + } + + /** + * Sets the leftBorderColor attribute of the HSSFRegionUtil object + * + *@param color The color of the border + *@param region The region that should have the border + *@param workbook The workbook that the region is on. + *@param sheet The sheet that the region is on. + *@exception NestableException Thrown if the CellStyle can't be changed + * properly. + */ + public static void setLeftBorderColor( short color, Region region, HSSFSheet sheet, HSSFWorkbook workbook ) + throws NestableException { + int rowStart = region.getRowFrom(); + int rowEnd = region.getRowTo(); + int column = region.getColumnFrom(); + + for ( int i = rowStart; i <= rowEnd; i++ ) { + HSSFRow row = HSSFCellUtil.getRow( i, sheet ); + HSSFCell cell = HSSFCellUtil.getCell( row, column ); + HSSFCellUtil.setCellStyleProperty( cell, workbook, "leftBorderColor", new Short( color ) ); + } + } + + /** + * Sets the borderRight attribute of the HSSFRegionUtil object + * + *@param border The new border + *@param region The region that should have the border + *@param workbook The workbook that the region is on. + *@param sheet The sheet that the region is on. + *@exception NestableException Thrown if the CellStyle can't be changed + */ + public static void setBorderRight( short border, Region region, HSSFSheet sheet, HSSFWorkbook workbook ) + throws NestableException { + int rowStart = region.getRowFrom(); + int rowEnd = region.getRowTo(); + int column = region.getColumnTo(); + + for ( int i = rowStart; i <= rowEnd; i++ ) { + HSSFRow row = HSSFCellUtil.getRow( i, sheet ); + HSSFCell cell = HSSFCellUtil.getCell( row, column ); + + HSSFCellUtil.setCellStyleProperty( cell, workbook, "borderRight", new Short( border ) ); + } + } + + /** + * Sets the rightBorderColor attribute of the HSSFRegionUtil object + * + *@param color The color of the border + *@param region The region that should have the border + *@param workbook The workbook that the region is on. + *@param sheet The sheet that the region is on. + *@exception NestableException Thrown if the CellStyle can't be changed + * properly. + */ + public static void setRightBorderColor( short color, Region region, HSSFSheet sheet, HSSFWorkbook workbook ) + throws NestableException { + int rowStart = region.getRowFrom(); + int rowEnd = region.getRowTo(); + int column = region.getColumnTo(); + + for ( int i = rowStart; i <= rowEnd; i++ ) { + HSSFRow row = HSSFCellUtil.getRow( i, sheet ); + HSSFCell cell = HSSFCellUtil.getCell( row, column ); + HSSFCellUtil.setCellStyleProperty( cell, workbook, "rightBorderColor", new Short( color ) ); + } + } + + /** + * Sets the borderBottom attribute of the HSSFRegionUtil object + * + *@param border The new border + *@param region The region that should have the border + *@param workbook The workbook that the region is on. + *@param sheet The sheet that the region is on. + *@exception NestableException Thrown if the CellStyle can't be changed + */ + public static void setBorderBottom( short border, Region region, HSSFSheet sheet, HSSFWorkbook workbook ) + throws NestableException { + int colStart = region.getColumnFrom(); + int colEnd = region.getColumnTo(); + int rowIndex = region.getRowTo(); + HSSFRow row = HSSFCellUtil.getRow( rowIndex, sheet ); + for ( int i = colStart; i <= colEnd; i++ ) { + + HSSFCell cell = HSSFCellUtil.getCell( row, i ); + HSSFCellUtil.setCellStyleProperty( cell, workbook, "borderBottom", new Short( border ) ); + } + } + + /** + * Sets the bottomBorderColor attribute of the HSSFRegionUtil object + * + *@param color The color of the border + *@param region The region that should have the border + *@param workbook The workbook that the region is on. + *@param sheet The sheet that the region is on. + *@exception NestableException Thrown if the CellStyle can't be changed + * properly. + */ + public static void setBottomBorderColor( short color, Region region, HSSFSheet sheet, HSSFWorkbook workbook ) + throws NestableException { + int colStart = region.getColumnFrom(); + int colEnd = region.getColumnTo(); + int rowIndex = region.getRowTo(); + HSSFRow row = HSSFCellUtil.getRow( rowIndex, sheet ); + for ( int i = colStart; i <= colEnd; i++ ) { + HSSFCell cell = HSSFCellUtil.getCell( row, i ); + HSSFCellUtil.setCellStyleProperty( cell, workbook, "bottomBorderColor", new Short( color ) ); + } + } + + + /** + * Sets the borderBottom attribute of the HSSFRegionUtil object + * + *@param border The new border + *@param region The region that should have the border + *@param workbook The workbook that the region is on. + *@param sheet The sheet that the region is on. + *@exception NestableException Thrown if the CellStyle can't be changed + */ + public static void setBorderTop( short border, Region region, HSSFSheet sheet, HSSFWorkbook workbook ) + throws NestableException { + int colStart = region.getColumnFrom(); + int colEnd = region.getColumnTo(); + int rowIndex = region.getRowFrom(); + HSSFRow row = HSSFCellUtil.getRow( rowIndex, sheet ); + for ( int i = colStart; i <= colEnd; i++ ) { + + HSSFCell cell = HSSFCellUtil.getCell( row, i ); + HSSFCellUtil.setCellStyleProperty( cell, workbook, "borderTop", new Short( border ) ); + } + } + + /** + * Sets the topBorderColor attribute of the HSSFRegionUtil object + * + *@param color The color of the border + *@param region The region that should have the border + *@param workbook The workbook that the region is on. + *@param sheet The sheet that the region is on. + *@exception NestableException Thrown if the CellStyle can't be changed + * properly. + */ + public static void setTopBorderColor( short color, Region region, HSSFSheet sheet, HSSFWorkbook workbook ) + throws NestableException { + int colStart = region.getColumnFrom(); + int colEnd = region.getColumnTo(); + int rowIndex = region.getRowFrom(); + HSSFRow row = HSSFCellUtil.getRow( rowIndex, sheet ); + for ( int i = colStart; i <= colEnd; i++ ) { + HSSFCell cell = HSSFCellUtil.getCell( row, i ); + HSSFCellUtil.setCellStyleProperty( cell, workbook, "topBorderColor", new Short( color ) ); + + } + } + +} +