ASF Bugzilla – Attachment 34357 Details for
Bug 60219
[PATCH] FormulaParser can't parse external references when sheet name is quoted
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Alternative patch to previous one
patch.txt (text/plain), 3.82 KB, created by
IgnacioHR
on 2016-10-11 10:52:05 UTC
(
hide
)
Description:
Alternative patch to previous one
Filename:
MIME Type:
Creator:
IgnacioHR
Created:
2016-10-11 10:52:05 UTC
Size:
3.82 KB
patch
obsolete
>Index: src/java/org/apache/poi/ss/formula/FormulaParser.java >=================================================================== >--- src/java/org/apache/poi/ss/formula/FormulaParser.java (revision 1763803) >+++ src/java/org/apache/poi/ss/formula/FormulaParser.java (working copy) >@@ -1119,6 +1119,17 @@ > return sb.toString(); > } > } >+ >+ private String getBookName() { >+ StringBuilder sb = new StringBuilder(); >+ GetChar(); >+ while (look != ']') { >+ sb.append(look); >+ GetChar(); >+ } >+ GetChar(); >+ return sb.toString(); >+ } > > /** > * Note - caller should reset {@link #_pointer} upon <code>null</code> result >@@ -1127,22 +1138,18 @@ > private SheetIdentifier parseSheetName() { > String bookName; > if (look == '[') { >- StringBuilder sb = new StringBuilder(); >- GetChar(); >- while (look != ']') { >- sb.append(look); >- GetChar(); >- } >- GetChar(); >- bookName = sb.toString(); >+ bookName = getBookName(); > } else { > bookName = null; > } > > if (look == '\'') { >+ Match('\''); >+ >+ if (look == '[') >+ bookName = getBookName(); >+ > StringBuffer sb = new StringBuffer(); >- >- Match('\''); > boolean done = look == '\''; > while(!done) { > sb.append(look); >Index: src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java >=================================================================== >--- src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java (revision 1763803) >+++ src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java (working copy) >@@ -1848,10 +1848,20 @@ > assertEquals("'[$http://gagravarr.org/FormulaRefs.xls]Sheet1'!B1", row.getCell(1).getCellFormula()); > assertEquals(112.0, row.getCell(1).getNumericCellValue(), 0); > >+ // Link our new workbook >+ Workbook externalWb1 = new HSSFWorkbook(); >+ externalWb1.createSheet("Sheet1"); >+ wb1.linkExternalWorkbook("$http://gagravarr.org/FormulaRefs2.xls", externalWb1); >+ > // Change 4 > row.getCell(1).setCellFormula("'[$http://gagravarr.org/FormulaRefs2.xls]Sheet1'!B2"); > row.getCell(1).setCellValue(123.0); > >+ // Link our new workbook >+ Workbook externalWb2 = new HSSFWorkbook(); >+ externalWb2.createSheet("Sheet1"); >+ wb1.linkExternalWorkbook("$http://example.com/FormulaRefs.xls", externalWb2); >+ > // Add 5 > row = s.createRow(5); > row.createCell(1, CellType.FORMULA); >@@ -1858,7 +1868,6 @@ > row.getCell(1).setCellFormula("'[$http://example.com/FormulaRefs.xls]Sheet1'!B1"); > row.getCell(1).setCellValue(234.0); > >- > // Re-test > HSSFWorkbook wb2 = writeOutAndReadBack(wb1); > wb1.close(); >@@ -1883,8 +1892,7 @@ > assertEquals("[Formulas2.xls]Sheet1!B2", row.getCell(1).getCellFormula()); > assertEquals(112.0, row.getCell(1).getNumericCellValue(), 0); > >- // TODO - Fix these so they work... >- /*row = s.getRow(4); >+ row = s.getRow(4); > assertEquals(CellType.FORMULA, row.getCell(1).getCellTypeEnum()); > assertEquals("'[$http://gagravarr.org/FormulaRefs2.xls]Sheet1'!B2", row.getCell(1).getCellFormula()); > assertEquals(123.0, row.getCell(1).getNumericCellValue(), 0); >@@ -1892,7 +1900,7 @@ > row = s.getRow(5); > assertEquals(CellType.FORMULA, row.getCell(1).getCellTypeEnum()); > assertEquals("'[$http://example.com/FormulaRefs.xls]Sheet1'!B1", row.getCell(1).getCellFormula()); >- assertEquals(234.0, row.getCell(1).getNumericCellValue(), 0);*/ >+ assertEquals(234.0, row.getCell(1).getNumericCellValue(), 0); > > wb2.close(); > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 60219
:
34334
|
34342
|
34354
| 34357