You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@poi.apache.org by vedgunjan <ve...@yagnaiq.com> on 2007/10/22 18:56:44 UTC

Need help !!!

Hi Experts,

 

I'm new the POI library. In the application that I have been working I need
following help.

 

1.	How to make entire column in the excel sheet as non-editable or
rather how to lock an entire column.

 

2.	Also how to make a row or cell in the excel sheet as non-editable or
lock it.

 

3.	How can I write a formula for the entire column of rows? For example
: 

      I want that each row in column H should have formula which is
something like (corresponding "I" value *   corresponding "J" value)

 

Thanks & Regards

Ved Gunjan.

 

Incubation Center, C -201/ Unit No: 5, Pune IT Park,

Aundh Rd, Pune, India.

 

Meet Me Details:  Tel: 91.20.30223.100 | Fax: 91.20.30223.100 | Cell:
9890015916 



www.yagnaiq.com <http://www.yagnaiq.com/> 

  _____  

"Lack of will power has caused more failure than lack of intelligence or
ability"

 


Re: Need help !!!

Posted by Tim Wilkins <ti...@mediatel.co.uk>.
I don't know how to set columns and rows to be non-editable but I have 
just implemented a formula copy utility which I think is what your 3rd 
point is referring to.

To get this feature to work you will need to checkout the latest POI 
code from the svn repository (http://svn.apache.org/repos/asf) as there 
is a change that Nick Burch made for me to source code to allow access 
to the FormulaParser class.

Here is the main method of my code:

public static String copyFormula(HSSFCell srcCell, HSSFWorkbook 
workbook, short rowOffset, short columnOffset)
throws FormulaUtilsException
{
if (srcCell.getCellType() != HSSFCell.CELL_TYPE_FORMULA)
return null;

FormulaParser parser = 
HSSFFormulaEvaluator.getUnderlyingParser(workbook,srcCell.getCellFormula());
parser.parse();
Ptg[] ptgs = parser.getRPNPtg();

for (int i = 0, iSize = ptgs.length; i < iSize; i++)
{
//we are only interested in cell references
if (ptgs[i] instanceof ReferencePtg)
{
ReferencePtg ptg = (ReferencePtg) ptgs[i];

if ( ptg.isColRelative() )
ptg.setColumn( (short) (ptg.getColumn() + columnOffset));
if ( ptg.isRowRelative() )
ptg.setRow( (short) (ptg.getRow() + rowOffset));
}
else if (ptgs[i] instanceof AreaPtg)
{
AreaPtg ap = (AreaPtg) ptgs[i];

if ( ap.isFirstRowRelative() )
ap.setFirstRow( (short) (ap.getFirstRow() + rowOffset) );
if ( ap.isLastRowRelative() )
ap.setLastRow( (short) (ap.getLastRow() + rowOffset) );
if ( ap.isFirstColRelative() )
ap.setFirstColumn( (short) (ap.getFirstColumn() + columnOffset) );
if ( ap.isLastColRelative() )
ap.setLastColumn( (short) (ap.getLastColumn() + columnOffset) );
}
}

return parser.toFormulaString( ptgs );
}


Basically the method takes a parameter srcCell that is the cell that 
contains the formula that you want to copy. It also take two offset 
parameters that indicate the number of rows and columns to 'move' the 
formula references by. Finally it returns a string representation of the 
new formula.

Please be aware that I have not fully tested this code but it should 
give you an idea of how to implement this functionality.

Hope this helps,

Tim

vedgunjan wrote:
>
> Hi Experts,
>
> I’m new the POI library. In the application that I have been working I 
> need following help.
>
>    1. How to make entire column in the excel sheet as non-editable or
>       rather how to lock an entire column.
>
>    2. Also how to make a row or cell in the excel sheet as
>       non-editable or lock it.
>
>    3. How can I write a formula for the entire column of rows? For
>       example :
>
> I want that each row in column H should have formula which is 
> something like (corresponding “*I*” value * corresponding “*J*” value)
>
> *Thanks & Regards*
>
> **Ved Gunjan****.******
>
> ** **
>
> **Incubation**** Center****, C -201/ Unit No: 5, Pune IT Park,**
>
> **Aundh Rd****, Pune, India****.**
>
> ** **
>
> **Meet Me Details:**** ****Tel: 91.20.30223.100 ****|**** Fax: 
> 91.20.30223.100 ****|**** Cell: 9890015916 **
>
> www.yagnaiq.com <http://www.yagnaiq.com/>__
>
> ------------------------------------------------------------------------
>
> "Lack of will power has caused more failure than lack of intelligence 
> or ability"
>


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@poi.apache.org
For additional commands, e-mail: user-help@poi.apache.org