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 2016/01/07 07:35:28 UTC
[Bug 58818] New: Cell comment not readed(return null)
https://bz.apache.org/bugzilla/show_bug.cgi?id=58818
Bug ID: 58818
Summary: Cell comment not readed(return null)
Product: POI
Version: 3.13-FINAL
Hardware: PC
OS: Linux
Status: NEW
Severity: normal
Priority: P2
Component: HSSF
Assignee: dev@poi.apache.org
Reporter: 64svv@rambler.ru
Created attachment 33418
--> https://bz.apache.org/bugzilla/attachment.cgi?id=33418&action=edit
template for process
File created by MS Excel 2007.
I can't to read comment at A1.
System.out.println(wb.getSheetAt(0).getCellComment(0, 0)); => null
System.out.println(wb.getSheetAt(0).getRow(0).getCell(0).getCellComment());
=>null
Sometimes, after edit and resave the file - cell comment read correctly.
--
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
[Bug 58818] Cell comment not readed(return null)
Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=58818
Javen O'Neal <on...@apache.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |NEEDINFO
--- Comment #1 from Javen O'Neal <on...@apache.org> ---
I tried the following using POI 3.14 beta 1
InputStream fis = FileInputStream("bug58818.xls");
Workbook wb = HSSFWorkbook(fis);
fis.close();
Sheet sh = wb.getSheetAt(0);
sh.getCellComments() -> returns empty Map
sh.getRow(0).getCell(0).getCellComment(); -> returns null
sh.getCellComment(0, 0); -> returns null
Opening the file in Excel 2013, I found a comment in cell A1 with the text
`jx:area(lastCell = "C25")\n`. I was able to reproduce your problem and this is
a valid bug.
The problem is that the comment doesn't have a position
(HSSFComment.hasPosition returns false).
I modified HSSFSheet.findCellCommentLocations to print
comment.getString().getString() on each HSSFComment it finds in the drawing
patriarch, and then POI found the cell comment. Disabling the check for
hasPosition() will throw a NPE at comment.getRow() or comment.getColumn().
private void findCellCommentLocations(HSSFShapeContainer container,
Map<CellAddress, HSSFComment> locations) {
for (Object object : container.getChildren()) {
HSSFShape shape = (HSSFShape) object;
if (shape instanceof HSSFComment) {
// recursively search down the drawing patriarch tree
findCellCommentLocations((HSSFShapeGroup) shape, locations);
continue;
}
if (shape instanceof HSSFComment) {
HSSFComment comment = (HSSFComment) shape;
+ System.out.println(comment.getString().getString());
if (comment.hasPosition()) {
locations.put(new CellAddress(comment.getRow(),
comment.getColumn()), comment);
}
+ else {
+ // found unanchored comment. How should this be handled?
+ // does comment contain any information that might be relevant
here?
+ locations.put(CellAddress.A1, comment);
+ }
HSSFComment.hasPosition() is false here because the HSSFComment object (created
with the constructor HSSFComment(EscherContainerRecord, ObjectRecord,
TextObjectRecord, NoteRecord)) sets NoteRecord as null. hasPosition and
getRow/getColumn rely on this NoteRecord to identify the location.
There are two likely explanations here:
* data for creating a NoteRecord exists, but the NoteRecord object is not
passed to the constructor of HSSFComment
* the Excel file does not have a NoteRecord for some cell comments. When this
is the case, Excel uses A1 as the default, implied location of the comment. For
behavior parity, POI would need to default cell comments to A1 if no position
is specified.
HSSFComment(EscherContainerRecord spContainer, ObjRecord objRecord,
TextObjectRecord textObjectRecord, NoteRecord _note)
EscherContainerRecord spContainer
org.apache.poi.ddf.EscherContainerRecord (SpContainer):
isContainer: true
version: 0x000F
instance: 0x0000
recordId: 0xF004
numchildren: 5
children:
Child 0:
org.apache.poi.ddf.EscherSpRecord:
RecordId: 0xF00A
Version: 0x0002
ShapeType: 0x00CA
ShapeId: 1027
Flags: HAVEANCHOR|HASSHAPETYPE (0x00000A00)
Child 1:
org.apache.poi.ddf.EscherOptRecord:
isContainer: false
version: 0x0003
instance: 0x000E
recordId: 0xF00B
numchildren: 0
properties:
propNum: 128, RAW: 0x0080, propName: text.textid, complex: false,
blipId: false, value: 62207824 (0x03B53750)
propNum: 133, RAW: 0x0085, propName: text.wraptext, complex: false,
blipId: false, value: 1 (0x00000001)
propNum: 139, RAW: 0x008B, propName: text.bidir, complex: false,
blipId: false, value: 2 (0x00000002)
propNum: 191, RAW: 0x00BF, propName: text.sizetexttofitshape, complex:
false, blipId: false, value: 655368 (0x000A0008)
propNum: 344, RAW: 0x0158, propName: unknown, complex: false, blipId:
false, value: 0 (0x00000000)
propNum: 385, RAW: 0x0181, propName: fill.fillcolor, complex: false,
blipId: false, value: 14811135 (0x00E1FFFF)
propNum: 387, RAW: 0x0183, propName: fill.fillbackcolor, complex:
false, blipId: false, value: 14811135 (0x00E1FFFF)
propNum: 389, RAW: 0x0185, propName: fill.crmod, complex: false,
blipId: false, value: 268435700 (0x100000F4)
propNum: 447, RAW: 0x01BF, propName: fill.nofillhittest, complex:
false, blipId: false, value: 1048592 (0x00100010)
propNum: 451, RAW: 0x01C3, propName: linestyle.crmod, complex: false,
blipId: false, value: 268435700 (0x100000F4)
propNum: 513, RAW: 0x0201, propName: shadowstyle.color, complex: false,
blipId: false, value: 0 (0x00000000)
propNum: 515, RAW: 0x0203, propName: shadowstyle.crmod, complex: false,
blipId: false, value: 268435700 (0x100000F4)
propNum: 575, RAW: 0x023F, propName: shadowstyle.shadowobscured,
complex: false, blipId: false, value: 196611 (0x00030003)
propNum: 959, RAW: 0x03BF, propName: groupshape.print, complex: false,
blipId: false, value: 131072 (0x00020000)
Child 2:
org.apache.poi.ddf.EscherClientAnchorRecord:
RecordId: 0xF010
Version: 0x0000
Instance: 0x0000
Flag: 3
Col1: 1
DX1: 169
Row1: 0
DY1: 30
Col2: 2
DX2: 832
Row2: 4
DY2: 196
Extra Data:
No Data
Child 3:
org.apache.poi.ddf.EscherClientDataRecord:
RecordId: 0xF011
Version: 0x0000
Instance: 0x0000
Extra Data:
No Data
Child 4:
org.apache.poi.ddf.EscherTextboxRecord:
isContainer: false
version: 0x0000
instance: 0x0000
recordId: 0xF00D
numchildren: 0
ObjectRecord
[OBJ]
SUBRECORD: [ftCmo]
.objectType = 0x0019 (25 )
.objectId = 0x00000003 (3 )
.option = 0x4011 (16401 )
.locked = true
.printable = true
.autofill = false
.autoline = true
.reserved1 = 0x03B53750 (62207824 )
.reserved2 = 0x032FCC60 (53464160 )
.reserved3 = 0x00000000 (0 )
[/ftCmo]
SUBRECORD: [ftNts ]
size = 22
reserved = [41, 68, 11, C0, EC, 21, 65, 46, 86, B6, E6, 6B, EF, 8E, 10, 2B,
00, 00, 10, 00, 00, 00]
[/ftNts ]
SUBRECORD: [ftEnd]
[/ftEnd]
[/OBJ]
TextObjectRecord
[TXO]
.options = 0x0212
.isHorizontal = 1
.isVertical = 1
.textLocked = true
.textOrientation= 0x0000
.reserved4 = 0x0000
.reserved5 = 0x0000
.reserved6 = 0x0000
.textLength = 0x001A
.reserved7 = 0x00000000
.string = jx:area(lastCell = "C25")
.textrun = 6
.textrun = 24
[/TXO]
NoteRecord
null
This is the stack trace that identifies how the HSSFComment was created:
File "<stdin>", line 1, in <module>
at
org.apache.poi.hssf.usermodel.HSSFComment.<init>(HSSFComment.java:62)
at
org.apache.poi.hssf.usermodel.HSSFShapeFactory.createShapeTree(HSSFShapeFactory.java:108)
at
org.apache.poi.hssf.usermodel.HSSFPatriarch.buildShapeTree(HSSFPatriarch.java:540)
at
org.apache.poi.hssf.usermodel.HSSFPatriarch.<init>(HSSFPatriarch.java:87)
at
org.apache.poi.hssf.usermodel.HSSFSheet.getPatriarch(HSSFSheet.java:1989)
at
org.apache.poi.hssf.usermodel.HSSFSheet.getDrawingPatriarch(HSSFSheet.java:1941)
at
org.apache.poi.hssf.usermodel.HSSFSheet.getCellComments(HSSFSheet.java:2348)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
In HSSFShapeFactory.java line 108:
The _note argument to the HSSFComment constructor is null, which equals
agg.getNoteRecordByObj(objRecord)). Either getNoteRecordByObj is misbehaving or
there are duplicates in the `for (EscherRecord record :
container.getChildRecords())` that are screwing up the lookup.
Savchenko, do you have any files where POI doesn't recognized a cell comment
NOT located at A1?
--
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
[Bug 58818] Cell comment not readed(return null)
Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=58818
--- Comment #4 from Savchenko Vitaliy <64...@rambler.ru> ---
> Savchenko, do you have any files where POI doesn't recognized a cell comment
> NOT located at A1?
No, I have not.
I found no problems with the other cells
--
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
[Bug 58818] Cell comment not readed(return null)
Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=58818
Savchenko Vitaliy <64...@rambler.ru> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEEDINFO |NEW
--
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
[Bug 58818] Cell comment not readed(return null)
Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=58818
--- Comment #5 from Savchenko Vitaliy <64...@rambler.ru> ---
Any news?
--
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
[Bug 58818] Cell comment not readed(return null)
Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=58818
--- Comment #2 from Javen O'Neal <on...@apache.org> ---
Created attachment 33508
--> https://bz.apache.org/bugzilla/attachment.cgi?id=33508&action=edit
fix EscherAggregate.createAggregate
It seems like the the break statement in createAggregate [2] leaves some
records unread. In attachment 33418, the NoteRecord has object id 3, and is
skipped by the break statement. Removing the break statement fixes the
described error (HSSFSheet.getCellComments) but fails a unit test [1].
[1] src/testcases/org/apache/poi/hssf/model/TestDrawingAggregate.java
[2]
> // any NoteRecords that follow the drawing block must be aggregated and and saved in the tailRec collection
> while (loc < records.size()) {
> if (sid(records, loc) == NoteRecord.sid) {
> NoteRecord r = (NoteRecord) records.get(loc);
> agg.addTailRecord(r);
> }
> else {
> break;
> }
> loc++;
> }
--
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
[Bug 58818] Cell comment not readed(return null)
Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=58818
--- Comment #3 from Javen O'Neal <on...@apache.org> ---
Created attachment 33509
--> https://bz.apache.org/bugzilla/attachment.cgi?id=33509&action=edit
failed junit
--
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
[Bug 58818] Cell comment not readed(return null)
Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=58818
--- Comment #6 from Munna <mu...@gmail.com> ---
Nice post this post is about Windows 10 operating system. Since this website
provides us complete information on windows 10 operating system.
https://windows10download.xyz/
--
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