You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@poi.apache.org by bu...@apache.org on 2009/04/06 12:14:21 UTC

DO NOT REPLY [Bug 46973] New: IllegalArgumentException when calling Name.isDeleted().

https://issues.apache.org/bugzilla/show_bug.cgi?id=46973

           Summary: IllegalArgumentException when calling
                    Name.isDeleted().
           Product: POI
           Version: 3.5-dev
          Platform: PC
        OS/Version: Windows XP
            Status: NEW
          Severity: normal
          Priority: P2
         Component: HSSF
        AssignedTo: dev@poi.apache.org
        ReportedBy: matthew.knl@gmail.com


I use following codes to read attached "problem.xls" Excel file to list the
named 
ranges. But it throws IllegalArgumentException when calling
namedRange.isDeleted().

--

FileInputStream fis = new FileInputStream("problem.xls");
POIFSFileSystem poifs = new POIFSFileSystem(fis);
HSSFWorkbook excelWB = new HSSFWorkbook(poifs);
for (int i = 0; i < excelWB.getNumberOfNames(); i++)
{
    try
    {
        Name namedRange = excelWB.getNameAt(i);
        if (namedRange.isFunctionName() || namedRange.isDeleted())
        {
            continue;
        }
        System.out.println("name: " + namedRange.getNameName());
    }
    catch (Exception ex)
    {
        logger.error("Read named range failed.");
        logger.error(ex, ex);
        System.out.println(ex);
    }
}

--

Exception details:

java.lang.IllegalArgumentException: ptgs must not be null
    at
org.apache.poi.ss.formula.FormulaRenderer.toFormulaString(FormulaRenderer.java:48)
    at
org.apache.poi.hssf.model.HSSFFormulaParser.toFormulaString(HSSFFormulaParser.java:80)
    at
org.apache.poi.hssf.usermodel.HSSFName.getRefersToFormula(HSSFName.java:192)
    at org.apache.poi.hssf.usermodel.HSSFName.isDeleted(HSSFName.java:201)

--

Please help to check this issue. Thanks!

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

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


DO NOT REPLY [Bug 46973] IllegalArgumentException when calling Name.isDeleted().

Posted by bu...@apache.org.
https://issues.apache.org/bugzilla/show_bug.cgi?id=46973





--- Comment #1 from Matthew <ma...@gmail.com>  2009-04-06 03:15:08 PST ---
Created an attachment (id=23444)
 --> (https://issues.apache.org/bugzilla/attachment.cgi?id=23444)
problem.xls

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

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


DO NOT REPLY [Bug 46973] IllegalArgumentException when calling Name.isDeleted().

Posted by bu...@apache.org.
https://issues.apache.org/bugzilla/show_bug.cgi?id=46973


Josh Micich <jo...@gildedtree.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED




--- Comment #2 from Josh Micich <jo...@gildedtree.com>  2009-04-06 13:07:46 PST ---
It appears that the attached workbook has a defined name "UPSState" with all
other properties uninitialised.  Excel silently ignores the name, and if you
re-save, the name is removed.  It seems like the offending record was created
via POI, using code like this:

Workbook wb = new HSSFWorkbook();
wb.createSheet("Sheet1");
Name n = wb.createName();
n.setNameName("UPSState");
wb.write(new FileOutputStream("bad-name.xls");

It would be a big change to make POI do the same as Excel (delete the name and
adjust all formulas), so it was just fixed to avoid the
IllegalArgumentException.  For uninitialised defined names, isDeleted() will
return false and getRefersToFormula() will return null. 

Fixed in svn r762479 ( https://svn.apache.org/viewcvs.cgi?view=rev&rev=762479 )junits added

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

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