Bug 50244

Summary: Problem reading Excel document
Product: POI Reporter: Dirk Schoenberger <dsc>
Component: HSSFAssignee: POI Developers List <dev>
Status: RESOLVED FIXED    
Severity: normal CC: sanjaysaini31
Priority: P2    
Version: 3.13-FINAL   
Target Milestone: ---   
Hardware: PC   
OS: Windows Vista   
Attachments: proposed fix
vba script that attempts to create a problem file
BiffViewer dump of the problematic record
proposed fix (improved)

Description Dirk Schoenberger 2010-11-10 06:49:18 UTC
While reading an Excel document I get the following exception

org.apache.poi.hssf.record.RecordFormatException: Unhandled Continue Record followining class org.apache.poi.hssf.record.NameRecord
at org.apache.poi.hssf.record.RecordFactoryInputStream.readNextRecord(RecordFactoryInputStream.java:345)
at org.apache.poi.hssf.record.RecordFactoryInputStream.nextRecord(RecordFactoryInputStream.java:236)
at org.apache.poi.hssf.record.RecordFactory.createRecords(RecordFactory.java:442)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:263)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:188)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:170)
at com.arlanis.udc.core.step.adapter.excel.util.ExcelUtils.getSheets(ExcelUtils.java:289)
at com.arlanis.udc.ui.step.adapter.excel.job.FetchSheetNamesJob.run(FetchSheetNamesJob.java:78)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

(unfortunately I cannot attach the problematic document - internal, confidential etc)
This is with latest 3.8 nightly build from http://encore.torchbox.com/poi-svn-build/

Attached is a patch which solves the problem for me
Comment 1 Dirk Schoenberger 2010-11-10 06:51:51 UTC
Created attachment 26278 [details]
proposed fix
Comment 2 Yegor Kozlov 2010-11-10 07:26:20 UTC
The proposed fix is dodgy. I'd rather not apply it without a junut test and a sample file.

Do you know the origin of the problem file> What software / version of Excel created it? Try to re-save the problem file in Excel. Does the problem persist? 

Can you obfuscate the sensitive data and upload the file? 

Yegor
Comment 3 Dirk Schoenberger 2010-11-10 08:45:33 UTC
> Do you know the origin of the problem file> What software / version of Excel
> created it? Try to re-save the problem file in Excel. Does the problem persist? 

No idea about which Excel version originally created the file. The problem persist if I read the file, change and save as a new file in Excel 2003

> Can you obfuscate the sensitive data and upload the file? 

I have a variant of the file which has obfuscated the date, where the problem persists. I have to get an OK to publish it. This may take some time.
Comment 4 Dirk Schoenberger 2010-11-12 10:00:59 UTC
Sorry, I have not got permission to publish the problematic file.
We have tried internally to reproduce a similar document but to no avail.

The problem ssems to be that there exist a name record which is too long, so a continue record had to be added. After this pattern was first created, all subsequent open/save processes just copied the record. It is not clear about how the record first entered the system (older office software, erroreous scripting with insufficient checking or whatever)

It is also not clear if the document is valid at all. Different software reads the file differently. Some throw errors, some silently ignore the data etc. It is not possible to actually edit the name directly, so I assume that the data is not allowed (name value longer than 255 characters)
Comment 5 Yegor Kozlov 2010-11-12 10:15:52 UTC
The max size of a Excel record is 8KB and it seems to be not enough in your case. 

Open the problematic file and find names with long formulas and descriptions. Can you post the longest formula or at least tell us its length? 

Run org.apache.poi.hssf.dev.BiffViewer. Does it dump name records? Can you post those bits?  

Yegor
Comment 6 Dirk Schoenberger 2010-11-12 10:47:47 UTC
I send the tail of a BiffViewer run. The mentioned record is the problematic part.
If I remove this name the document loads fine without changes to POI

...........
Offset=0x00004F70(20336) recno=609 sid=0x0018 size=0x0024(36)
[NAME]
    .option flags           = 0x0000
    .keyboard shortcut      = 0x00
    .length of the name     = 14
    .extSheetIx(1-based, 0=Global)= 0
    .sheetTabIx             = 3
    .Menu text length       = 0
    .Description text length= 0
    .Help topic text length = 0
    .Status bar text length = 0
    .NameIsMultibyte        = false
    .Name (Unicode text)    = wCompareValue.
    .Formula (nTokens=1):
       org.apache.poi.hssf.record.formula.Ref3DPtg [sheetIx=10 ! $F$1006]R
    .Menu text       = 
    .Description text= 
    .Help topic text = 
    .Status bar text = 
[/NAME]

Offset=0x00004F98(20376) recno=610 sid=0x0018 size=0x18A2(6306)
[NAME]
    .option flags           = 0x0000
    .keyboard shortcut      = 0x00
    .length of the name     = 16
    .extSheetIx(1-based, 0=Global)= 0
    .sheetTabIx             = 3
    .Menu text length       = 0
    .Description text length= 0
    .Help topic text length = 0
    .Status bar text length = 0
    .NameIsMultibyte        = false
    .Name (Unicode text)    = wDataDatenSerie.
    .Formula (nTokens=1):
       [ArrayPtg]
nRows = 696
nCols = 1
  {97.65625;101.875;97.1875000000001;102.8125;96.71875;99.0625;102.34375;101.40625;98.59375;98.125;100;97.65625;97.65625;97.65625;99.5312500000001;99.0625;97.1875000000001;99.0625;98.125;98.59375;101.875;98.59375;99.0625;100.46875;101.40625;98.125;100;100.46875;100.9375;99.5312500000001;100;100.9375;99.5312500000001;102.34375;101.40625;100;99.0625;100;96.71875;100;97.1875000000001;98.125;99.5312500000001;102.34375;98.125;98.125;100.9375;100.46875;101.875;98.59375;99.5312500000001;100;100;99.5312500000001;101.40625;101.875;100.46875;100.46875;100;99.5312500000001;101.875;101.875;100;100.46875;100;100.46875;102.8125;100.46875;100.9375;101.40625;100.9375;100.9375;101.875;101.40625;102.34375;104.21875;101.40625;99.0625;100.9375;103.28125;99.0625;100;103.28125;98.59375;99.5312500000001;100.9375;100;100.9375;97.65625;97.1875000000001;98.125;101.875;99.0625;101.40625;104.21875;97.65625;101.875;102.34375;100.46875;100.46875;104.6875;99.5312500000001;100.9375;100.46875;100.9375;101.40625;102.8125;104.6875;102.34375;102.34375;102.8125;98.59375;104.21875;100;101.875;104.21875;102.34375;101.40625;102.34375;100.9375;100.9375;104.21875;99.0625;101.40625;100.9375;101.40625;101.40625;103.75;100;102.8125;100;100.9375;102.8125;100;102.34375;98.59375;98.125;96.71875;100;99.0625;97.1875000000001;98.125;98.59375;99.5312500000001;97.1875000000001;99.5312500000001;98.125;97.65625;99.5312500000001;96.25;101.40625;99.0625;100;99.0625;101.40625;99.5312500000001;100;96.25;99.5312500000001;100;100;97.65625;98.125;99.0625;98.125;100;97.1875000000001;98.125;99.0625;100;98.125;100;100.46875;99.5312500000001;100.46875;97.65625;98.125;100;100.46875;99.0625;97.1874999999999;97.65625;101.40625;95.8437499999999;100;99.0624999999999;98.1249999999999;100.46875;96.7187499999999;100;97.65625;99.0624999999999;99.0624999999999;100;98.5937499999999;96.7187499999999;98.5937499999999;99.5312499999999;99.5312499999999;99.5312499999999;96.7187499999999;100.9375;100.9375;96.7187499999999;99.5312499999999;98.1249999999999;97.1874999999999;100;99.5312499999999;101.40625;97.1874999999999;100;100;97.1874999999999;99.0624999999999;95.4374999999999;99.0624999999999;97.65625;99.0624999999999;95.8437499999999;99.5312499999999;96.2499999999999;97.1874999999999;97.65625;96.2499999999999;100.46875;102.8125;100;100.46875;100.46875;100.9375;99.0624999999999;99.0624999999999;99.0624999999999;101.40625;102.8125;99.0624999999999;98.5937499999999;104.6875;101.875;99.5312499999999;99.5312499999999;98.1249999999999;103.28125;100.9375;99.5312499999999;103.75;100.9375;101.875;102.8125;101.875;101.40625;102.34375;101.40625;100;98.5937499999999;100.9375;103.28125;101.40625;103.28125;98.5937499999999;100.46875;99.0624999999999;100.9375;100.9375;102.8125;100;100.9375;100;99.0624999999999;100.46875;103.28125;100.9375;100.46875;101.40625;100;101.875;99.5312499999999;101.40625;100.46875;102.34375;102.34375;99.5312499999999;102.8125;100.46875;101.875;101.40625;100.9375;102.34375;101.40625;100.46875;100.46875;102.8125;103.28125;99.5312499999999;98.5937499999999;100;102.34375;102.8125;100.9375;100;100.9375;100;100;102.8125;98.1249999999999;101.875;103.28125;101.875;99.5312499999999;102.8125;99.0624999999999;99.0624999999999;99.0624999999999;97.65625;99.0624999999999;99.0624999999999;99.5312499999999;99.0624999999999;101.875;99.0624999999999;99.0624999999999;100.46875;100.46875;99.0624999999999;100;100.9375;99.5312499999999;99.0624999999999;97.65625;97.1874999999999;97.1874999999999;97.1874999999999;98.5937499999999;100;99.0624999999999;98.1249999999999;100.9375;101.875;100.9375;99.5312499999999;99.5312499999999;100.9375;100.46875;100;96.7187499999999;101.40625;98.5937499999999;99.5312499999999;96.7187499999999;100;100.46875;99.0624999999999;100;96.78125;100.9375;100;98.5937500000001;98.5937500000001;99.53125;101.875;98.125;100.46875;98.125;100.9375;100;99.0625;98.5937500000001;97.65625;98.125;100.46875;97.65625;99.53125;100;97.1875;99.53125;100;97.65625;100.9375;101.875;99.0625;98.125;99.53125;100.46875;98.5937500000001;98.125;97.65625;99.53125;98.125;97.65625;100;98.125;98.5937500000001;99.53125;98.5937500000001;98.125;100.46875;99.0625;98.5937500000001;99.53125;100;100.46875;102.8125;99.53125;98.125;101.875;100.46875;99.53125;100.46875;104.6875;103.75;100.9375;100.9375;100.46875;103.28125;102.34375;101.40625;100.46875;102.34375;100.9375;100;97.1875;97.65625;101.875;100.46875;100.9375;100;99.53125;100.9375;99.53125;98.5937500000001;100.46875;101.875;101.40625;100.46875;96.78125;103.75;101.40625;101.40625;100.9375;101.40625;102.34375;100;100.9375;101.40625;103.75;100.46875;102.34375;101.875;101.875;101.875;103.28125;107.96875;103.75;102.34375;99.53125;104.21875;100;101.40625;102.34375;106.09375;100;103.75;103.28125;102.34375;104.6875;100;102.34375;100.9375;104.6875;104.21875;100.9375;102.8125;101.40625;100.9375;100.9375;100.46875;103.28125;100;99.53125;100;103.28125;100.9375;100;98.5937500000001;100;101.40625;101.875;102.8125;97.65625;98.5937500000001;101.875;97.65625;100.9375;100.46875;100;100;98.5937500000001;96.375;97.1875;98.125;97.65625;98.125;96.78125;97.65625;98.5937500000001;99.53125;97.65625;97.65625;98.125;95.15625;98.125;98.5937500000001;96.375;99.0625;96.78125;97.65625;100.9375;100;99.0625;98.5937500000001;96.78125;99.53125;99.0625;97.65625;106.09375;99.125;97.5;97.5;100;95.46875;100;100;99.53125;97.90625;97.90625;96.6875;99.125;97.90625;95.46875;99.53125;98.71875;97.09375;97.5;98.71875;98.71875;100;97.09375;98.71875;102.34375;97.90625;101.875;96.28125;97.5;96.6875;96.28125;97.5;93.84375;98.3125;97.09375;94.65625;97.5;95.0625;95.875;93.84375;97.90625;95.875;97.90625;97.5;96.28125;95.875;100.46875;97.90625;98.71875;97.90625;98.71875;101.875;98.71875;98.71875;98.3125;99.125;98.3125;98.3125;99.53125;97.90625;100.9375;100;98.3125;102.34375;100.9375;101.875;100;99.53125;97.90625;103.28125;103.28125;100.9375;99.53125;102.8125;100.9375;99.125;101.40625;100;99.125;100.9375;101.875;96.6875;100;100.9375;99.53125;101.40625;98.3125;100.46875;98.71875;97.5;100;101.40625;98.71875;100;100.46875;100;101.40625;98.3125;99.53125;100;100;100;100.9375;102.8125;99.125;101.40625;99.125;99.53125;100;104.21875;102.34375;100.46875;100.9375;101.875;101.40625;100;100;102.34375;102.34375;99.125;101.40625;100;100.46875;102.34375;101.40625;99.53125;100.9375;101.875;99.53125;99.125;101.40625;101.40625;99.53125;102.8125;99.125;101.875;101.875;100;99.125;99.125;101.40625;103.28125;101.875;99.125;102.8125;102.34375;98.3125;100.46875;101.875;101.875;104.21875;100.46875;101.875;97.09375;101.875;101.40625;99.125;100;101.40625;97.5;101.40625;102.34375;101.875;102.8125;98.71875;100.9375;99.53125;101.40625;100.9375;104.21875;101.40625}A
    .Menu text       = 
    .Description text= 
    .Help topic text = 
    .Status bar text = 
[/NAME]

Offset=0x0000683E(26686) recno=611 sid=0x0018 size=0x1E21(7713)
java.lang.RuntimeException: Buffer overrun
	at org.apache.poi.util.LittleEndianByteArrayInputStream.checkPosition(LittleEndianByteArrayInputStream.java:47)
	at org.apache.poi.util.LittleEndianByteArrayInputStream.readByte(LittleEndianByteArrayInputStream.java:55)
	at org.apache.poi.hssf.record.constant.ConstantValueParser.readAConstantValue(ConstantValueParser.java:58)
	at org.apache.poi.hssf.record.constant.ConstantValueParser.parse(ConstantValueParser.java:52)
	at org.apache.poi.hssf.record.formula.ArrayPtg$Initial.finishReading(ArrayPtg.java:261)
	at org.apache.poi.hssf.record.formula.Ptg.readTokens(Ptg.java:70)
	at org.apache.poi.ss.formula.Formula.getTokens(Formula.java:85)
	at org.apache.poi.hssf.record.NameRecord.toString(NameRecord.java:540)
	at org.apache.poi.hssf.dev.BiffViewer.createRecords(BiffViewer.java:97)
	at org.apache.poi.hssf.dev.BiffViewer.main(BiffViewer.java:416)
	at com.arlanis.exceltest.Main.main(Main.java:32)
Comment 7 Dirk Schoenberger 2010-12-02 05:11:02 UTC
Just wanted to ask if there are any news on this bug. Currently I maintain my patch in my own POI version, but I don't think this is optimal.

The root of the problem, as far as I see is that the Excel file is a real ancient file (i.e. Excel/BIFF 5 or some such). I read that the maximum record length was much shorter in earlier Excel versions. At least the length of my 
Name record exceeds the maximum length of the (old) Excel file format, so that's where the Continue record comes from.

However, I have not been able to create such a problematic file from scratch. I think it is a rather old file which was created in times / versions with much simpler validation rules.

Best regards
Dirk
Comment 8 Nick Burch 2010-12-02 06:55:46 UTC
In the file you're not allowed to share, is it only text that's private, or is it formulas+numbers+etc? If it's only the text strings, it's fairly easy to munge the file so that the text cells have dummy text in them. If it's formulas, number cells, comments etc that'd need protecting, then that's probably a bit much to munge by hand
Comment 9 Dirk Schoenberger 2010-12-02 07:01:07 UTC
> In the file you're not allowed to share, is it only text that's private, or is
> it formulas+numbers+etc? If it's only the text strings, it's fairly easy to
> munge the file so that the text cells have dummy text in them. If it's
> formulas, number cells, comments etc that'd need protecting, then that's
> probably a bit much to munge by hand

I think it is general paranoia ;) I already changed any visible text to dummy values, but could still get no permission. Possibly the customer (or at least our contact) doesn't know the document contents itself any longer (it is a rather old file) and cannot or doesn't want to take any risks ;(

It doesn't really help that there exist no easy way in Excel to show all contents...

Dirk
Comment 10 Nick Burch 2010-12-02 07:05:05 UTC
(In reply to comment #9)
> It doesn't really help that there exist no easy way in Excel to show all
> contents...

BiffViewer ought to be able to do that for you, certainly if you patch works and is applied it should be able to! :)

Without a file to test against though, I think we're all a little reluctant to apply the patch, plus there's then no way to ensure we don't accidentally break
it again in the future...
Comment 11 Dirk Schoenberger 2010-12-02 08:55:15 UTC
> 
> BiffViewer ought to be able to do that for you, certainly if you patch works
> and is applied it should be able to! :)
> 

Yes and no. For some developers / hackers the output of BiffViewer might suffice.
I don't think the typical manager / secretary / data entry person (which is unfortunately my contact in this case) can be convinced that this goobledigook is actually the content of their precious Excel file ;)

However, I have some more output from BiffViewer

Offset=0x00000000(0) recno=1 sid=0x0809 size=0x0010(16)
[BOF RECORD]
    .version  = 0x0600
    .type     = 0x0005 (workbook)
    .build    = 0x1FE9
    .buildyear= 1997
    .history  = 0x0000C0C9
    .reqver   = 0x00000306
[/BOF RECORD]

Offset=0x00000014(20) recno=2 sid=0x00E1 size=0x0002(2)
[INTERFACEHDR]
    .codepage = 0x04B0
[/INTERFACEHDR]

Offset=0x0000001A(26) recno=3 sid=0x00C1 size=0x0002(2)
[MMS]
    .addMenu        = 0
    .delMenu        = 0
[/MMS]

Offset=0x00000020(32) recno=4 sid=0x00E2 size=0x0000(0)
[INTERFACEEND/]

Offset=0x00000024(36) recno=5 sid=0x005C size=0x0070(112)
[WRITEACCESS]
    .name = Dirk
[/WRITEACCESS]

Offset=0x00000098(152) recno=6 sid=0x0042 size=0x0002(2)
[CODEPAGE]
    .codepage        = 4b0
[/CODEPAGE]

Offset=0x0000009E(158) recno=7 sid=0x0161 size=0x0002(2)
[DSF]
    .options = 0x0000
[/DSF]

Offset=0x000000A4(164) recno=8 sid=0x01C0 size=0x0000(0)
[EXCEL9FILE] (0x1C0)
[/EXCEL9FILE]

...


so I think I was right about that the file was rather old (1997) and from ancient Excel version. However this doesn't help me about how to create a sample Excel file which shows the problem ;)
Comment 12 Yegor Kozlov 2010-12-02 10:46:58 UTC
It is clear why the exception happens - the formula consists of a very long array that doesn't fit in the NameRecord and the array's tail is stored in a ContinueRecord. But I don't understand how this array was saved. 
I tried to reproduced it in Excel 2003 and Excel 2007 with no luck. 

The length of a Excel formula is limited to 1024 characters, Excel silently truncates longer strings. You can't input an array of 696 elements in the Name dialog.

I tried to set such a long array via VBA but it didn't work either. Excel truncates long VBA arrays to 256 values. Try to run the attached vbs script that I used for testing. 

To apply the proposed fix we need a test case - either a sample file or a description how to create it. Without additional info this bug will stay as "needinfo"

Regards,
Yegor
Comment 13 Yegor Kozlov 2010-12-02 10:48:15 UTC
Created attachment 26365 [details]
vba script that attempts to create a problem file
Comment 14 Dirk Schoenberger 2010-12-02 11:37:00 UTC
Just some ideas:

- could this be some external component library work? I know about the limitations of the Excel solution, but there seems to be a whole lot of third party libraries which allow for larger data (however, I have this not set seet for name definitions, but for things like diagrams)

- could this be some legacy mechanism like DDE/OLE (basically the data is really referenced in another file, but a copy of the data is stored in the Excel file in case the referenced file is lost)

- could this be a number format problem (basically you set a array of float values (4 bytes per value IIRC), but on save the array was "expanded" because in the Excel file the string representations are stored, which are longer than 4 bytes per value)

Best regards
Dirk
Comment 15 Yegor Kozlov 2010-12-03 11:26:48 UTC
Please post the same dump, but run BiffViewer with --biffhex --noint  options.
It should show raw hex dump of each BIFF record. I'm interested in the record at  Offset=0x0000683E(26686).

Yegor
Comment 16 Dirk Schoenberger 2010-12-03 11:47:39 UTC
Created attachment 26371 [details]
BiffViewer dump of the problematic record
Comment 17 Dirk Schoenberger 2010-12-03 11:48:35 UTC
I attached the dump of the problematic record and the following record (which creates the ContinueRecord problem)
Comment 18 Yegor Kozlov 2010-12-05 10:20:45 UTC
I think I figured out what was wrong. The problematic NameRecord is wDataGruppeSerie. containing an array of 696 string elelements:

[NAME]
    .option flags           = 0x0000
    .keyboard shortcut      = 0x00
    .length of the name     = 17
    .extSheetIx(1-based, 0=Global)= 0
    .sheetTabIx             = 3
    .Menu text length       = 0
    .Description text length= 0
    .Help topic text length = 0
    .Status bar text length = 0
    .NameIsMultibyte        = false
    .Name (Unicode text)    = wDataGruppeSerie.
    .Formula (nTokens=1):
       [ArrayPtg]
nRows = 696
nCols = 1
  {"1.T20.001";"1.T20.001";"1.T20.001";"1.T20.002";"1.T20.002";"1.T20.002";"1.T20.003";"1.T20.003";"1.T20.003";"1.T20.013";"1.T20.013";"1.T20.013";"1.T20.014";"1.T20.014";"1.T20.014";"1.T20.015";"1.T20.015";"1.T20.015";"1.T20.025";"1.T20.025";"1.T20.025";"1.T20.026";"1.T20.026";"1.T20.026";"1.T20.027";"1.T20.027";"1.T20.027";"1.T20.037";"1.T20.037";"1.T20.037";"1.T20.038";"1.T20.038";"1.T20.038";"1.T20.039";"1.T20.039";"1.T20.039";"1.T20.049";"1.T20.049";"1.T20.049";"1.T20.050";"1.T20.050";"1.T20.050";"1.T20.051";"1.T20.051";"1.T20.051";"1.T20.061";"1.T20.061";"1.T20.061";"1.T20.062";"1.T20.062";"1.T20.062";"1.T20.063";"1.T20.063";"1.T20.063";"1.T20.073";"1.T20.073";"1.T20.073";"1.T20.074";"1.T20.074";"1.T20.074";"1.T20.075";"1.T20.075";"1.T20.075";"1.T20.085";"1.T20.085";"1.T20.085";"1.T20.086";"1.T20.086";"1.T20.086";"1.T20.087";"1.T20.087";"1.T20.087";"1.T20.097";"1.T20.097";"1.T20.097";"1.T20.098";"1.T20.098";"1.T20.098";"1.T20.099";"1.T20.099";"1.T20.099";"1.T20.109";"1.T20.109";"1.T20.109";"1.T20.110";"1.T20.110";"1.T20.110";"1.T20.111";"1.T20.111";"1.T20.111";"1.T20.121";"1.T20.121";"1.T20.121";"1.T20.122";"1.T20.122";"1.T20.122";"1.T20.123";"1.T20.123";"1.T20.123";"1.T20.133";"1.T20.133";"1.T20.133";"1.T20.134";"1.T20.134";"1.T20.134";"1.T20.135";"1.T20.135";"1.T20.135";"1.T20.145";"1.T20.145";"1.T20.145";"1.T20.146";"1.T20.146";"1.T20.146";"1.T20.147";"1.T20.147";"1.T20.147";"1.T20.157";"1.T20.157";"1.T20.157";"1.T20.158";"1.T20.158";"1.T20.158";"1.T20.159";"1.T20.159";"1.T20.159";"1.T20.169";"1.T20.169";"1.T20.169";"1.T20.170";"1.T20.170";"1.T20.170";"1.T20.171";"1.T20.171";"1.T20.171";"1.T60.009";"1.T60.009";"1.T60.009";"1.T60.010";"1.T60.010";"1.T60.010";"1.T60.011";"1.T60.011";"1.T60.011";"1.T60.021";"1.T60.021";"1.T60.021";"1.T60.022";"1.T60.022";"1.T60.022";"1.T60.023";"1.T60.023";"1.T60.023";"1.T60.033";"1.T60.033";"1.T60.033";"1.T60.034";"1.T60.034";"1.T60.034";"1.T60.035";"1.T60.035";"1.T60.035";"1.T60.045";"1.T60.045";"1.T60.045";"1.T60.046";"1.T60.046";"1.T60.046";"1.T60.047";"1.T60.047";"1.T60.047";"1.T60.057";"1.T60.057";"1.T60.057";"1.T60.058";"1.T60.058";"1.T60.058";"1.T60.059";"1.T60.059";"1.T60.059";"1.T60.060";"1.T60.060";"1.T60.060";"1.T60.050";"1.T60.050";"1.T60.050";"1.T60.049";"1.T60.049";"1.T60.049";"1.T60.048";"1.T60.048";"1.T60.048";"1.T60.038";"1.T60.038";"1.T60.038";"1.T60.037";"1.T60.037";"1.T60.037";"1.T60.036";"1.T60.036";"1.T60.036";"1.T60.026";"1.T60.026";"1.T60.026";"1.T60.025";"1.T60.025";"1.T60.025";"1.T60.024";"1.T60.024";"1.T60.024";"1.T60.014";"1.T60.014";"1.T60.014";"1.T60.013";"1.T60.013";"1.T60.013";"1.T60.012";"1.T60.012";"1.T60.012";"1.T60.002";"1.T60.002";"1.T60.002";"1.T60.001";"1.T60.001";"1.T60.001";"1.T20.172";"1.T20.172";"1.T20.172";"1.T20.162";"1.T20.162";"1.T20.162";"1.T20.161";"1.T20.161";"1.T20.161";"1.T20.160";"1.T20.160";"1.T20.160";"1.T20.150";"1.T20.150";"1.T20.150";"1.T20.149";"1.T20.149";"1.T20.149";"1.T20.148";"1.T20.148";"1.T20.148";"1.T20.138";"1.T20.138";"1.T20.138";"1.T20.137";"1.T20.137";"1.T20.137";"1.T20.136";"1.T20.136";"1.T20.136";"1.T20.126";"1.T20.126";"1.T20.126";"1.T20.125";"1.T20.125";"1.T20.125";"1.T20.124";"1.T20.124";"1.T20.124";"1.T20.114";"1.T20.114";"1.T20.114";"1.T20.113";"1.T20.113";"1.T20.113";"1.T20.112";"1.T20.112";"1.T20.112";"1.T20.102";"1.T20.102";"1.T20.102";"1.T20.101";"1.T20.101";"1.T20.101";"1.T20.100";"1.T20.100";"1.T20.100";"1.T20.090";"1.T20.090";"1.T20.090";"1.T20.089";"1.T20.089";"1.T20.089";"1.T20.088";"1.T20.088";"1.T20.088";"1.T20.078";"1.T20.078";"1.T20.078";"1.T20.077";"1.T20.077";"1.T20.077";"1.T20.076";"1.T20.076";"1.T20.076";"1.T20.066";"1.T20.066";"1.T20.066";"1.T20.065";"1.T20.065";"1.T20.065";"1.T20.064";"1.T20.064";"1.T20.064";"1.T20.054";"1.T20.054";"1.T20.054";"1.T20.053";"1.T20.053";"1.T20.053";"1.T20.052";"1.T20.052";"1.T20.052";"1.T20.042";"1.T20.042";"1.T20.042";"1.T20.041";"1.T20.041";"1.T20.041";"1.T20.040";"1.T20.040";"1.T20.040";"1.T20.030";"1.T20.030";"1.T20.030";"1.T20.029";"1.T20.029";"1.T20.029";"1.T20.028";"1.T20.028";"1.T20.028";"1.T20.018";"1.T20.018";"1.T20.018";"1.T20.017";"1.T20.017";"1.T20.017";"1.T20.016";"1.T20.016";"1.T20.016";"1.T20.006";"1.T20.006";"1.T20.006";"1.T20.005";"1.T20.005";"1.T20.005";"1.T20.004";"1.T20.004";"1.T20.004";"1.T20.007";"1.T20.007";"1.T20.007";"1.T20.008";"1.T20.008";"1.T20.008";"1.T20.009";"1.T20.009";"1.T20.009";"1.T20.019";"1.T20.019";"1.T20.019";"1.T20.020";"1.T20.020";"1.T20.020";"1.T20.021";"1.T20.021";"1.T20.021";"1.T20.031";"1.T20.031";"1.T20.031";"1.T20.032";"1.T20.032";"1.T20.032";"1.T20.033";"1.T20.033";"1.T20.033";"1.T20.043";"1.T20.043";"1.T20.043";"1.T20.044";"1.T20.044";"1.T20.044";"1.T20.045";"1.T20.045";"1.T20.045";"1.T20.055";"1.T20.055";"1.T20.055";"1.T20.056";"1.T20.056";"1.T20.056";"1.T20.057";"1.T20.057";"1.T20.057";"1.T20.067";"1.T20.067";"1.T20.067";"1.T20.068";"1.T20.068";"1.T20.068";"1.T20.069";"1.T20.069";"1.T20.069";"1.T20.079";"1.T20.079";"1.T20.079";"1.T20.080";"1.T20.080";"1.T20.080";"1.T20.081";"1.T20.081";"1.T20.081";"1.T20.091";"1.T20.091";"1.T20.091";"1.T20.092";"1.T20.092";"1.T20.092";"1.T20.093";"1.T20.093";"1.T20.093";"1.T20.103";"1.T20.103";"1.T20.103";"1.T20.104";"1.T20.104";"1.T20.104";"1.T20.105";"1.T20.105";"1.T20.105";"1.T20.115";"1.T20.115";"1.T20.115";"1.T20.116";"1.T20.116";"1.T20.116";"1.T20.117";"1.T20.117";"1.T20.117";"1.T20.127";"1.T20.127";"1.T20.127";"1.T20.128";"1.T20.128";"1.T20.128";"1.T20.129";"1.T20.129";"1.T20.129";"1.T20.139";"1.T20.139";"1.T20.139";"1.T20.140";"1.T20.140";"1.T20.140";"1.T20.141";"1.T20.141";"1.T20.141";"1.T20.151";"1.T20.151";"1.T20.151";"1.T20.152";"1.T20.152";"1.T20.152";"1.T20.153";"1.T20.153";"1.T20.153";"1.T20.163";"1.T20.163";"1.T20.163";"1.T20.164";"1.T20.164";"1.T20.164";"1.T20.165";"1.T20.165";"1.T20.165";"1.T60.003";"1.T60.003";"1.T60.003";"1.T60.004";"1.T60.004";"1.T60.004";"1.T60.005";"1.T60.005";"1.T60.005";"1.T60.015";"1.T60.015";"1.T60.015";"1.T60.016";"1.T60.016";"1.T60.016";"1.T60.017";"1.T60.017";"1.T60.017";"1.T60.027";"1.T60.027";"1.T60.027";"1.T60.028";"1.T60.028";"1.T60.028";"1.T60.029";"1.T60.029";"1.T60.029";"1.T60.039";"1.T60.039";"1.T60.039";"1.T60.040";"1.T60.040";"1.T60.040";"1.T60.041";"1.T60.041";"1.T60.041";"1.T60.051";"1.T60.051";"1.T60.051";"1.T60.052";"1.T60.052";"1.T60.052";"1.T60.053";"1.T60.053";"1.T60.053";"1.T60.056";"1.T60.056";"1.T60.056";"1.T60.055";"1.T60.055";"1.T60.055";"1.T60.054";"1.T60.054";"1.T60.054";"1.T60.044";"1.T60.044";"1.T60.044";"1.T60.043";"1.T60.043";"1.T60.043";"1.T60.042";"1.T60.042";"1.T60.042";"1.T60.032";"1.T60.032";"1.T60.032";"1.T60.031";"1.T60.031";"1.T60.031";"1.T60.030";"1.T60.030";"1.T60.030";"1.T60.020";"1.T60.020";"1.T60.020";"1.T60.019";"1.T60.019";"1.T60.019";"1.T60.018";"1.T60.018";"1.T60.018";"1.T60.008";"1.T60.008";"1.T60.008";"1.T60.007";"1.T60.007";"1.T60.007";"1.T60.006";"1.T60.006";"1.T60.006";"1.T20.168";"1.T20.168";"1.T20.168";"1.T20.167";"1.T20.167";"1.T20.167";"1.T20.166";"1.T20.166";"1.T20.166";"1.T20.156";"1.T20.156";"1.T20.156";"1.T20.155";"1.T20.155";"1.T20.155";"1.T20.154";"1.T20.154";"1.T20.154";"1.T20.144";"1.T20.144";"1.T20.144";"1.T20.143";"1.T20.143";"1.T20.143";"1.T20.142";"1.T20.142";"1.T20.142";"1.T20.132";"1.T20.132";"1.T20.132";"1.T20.131";"1.T20.131";"1.T20.131";"1.T20.130";"1.T20.130";"1.T20.130";"1.T20.120";"1.T20.120";"1.T20.120";"1.T20.119";"1.T20.119";"1.T20.119";"1.T20.118";"1.T20.118";"1.T20.118";"1.T20.108";"1.T20.108";"1.T20.108";"1.T20.107";"1.T20.107";"1.T20.107";"1.T20.106";"1.T20.106";"1.T20.106";"1.T20.096";"1.T20.096";"1.T20.096";"1.T20.095";"1.T20.095";"1.T20.095";"1.T20.094";"1.T20.094";"1.T20.094";"1.T20.084";"1.T20.084";"1.T20.084";"1.T20.083";"1.T20.083";"1.T20.083";"1.T20.082";"1.T20.082";"1.T20.082";"1.T20.072";"1.T20.072";"1.T20.072";"1.T20.071";"1.T20.071";"1.T20.071";"1.T20.070";"1.T20.070";"1.T20.070";"1.T20.060";"1.T20.060";"1.T20.060";"1.T20.059";"1.T20.059";"1.T20.059";"1.T20.058";"1.T20.058";"1.T20.058";"1.T20.048";"1.T20.048";"1.T20.048";"1.T20.047";"1.T20.047";"1.T20.047";"1.T20.046";"1.T20.046";"1.T20.046";"1.T20.036";"1.T20.036";"1.T20.036";"1.T20.035";"1.T20.035";"1.T20.035";"1.T20.034";"1.T20.034";"1.T20.034";"1.T20.024";"1.T20.024";"1.T20.024";"1.T20.023";"1.T20.023";"1.T20.023";"1.T20.022";"1.T20.022";"1.T20.022";"1.T20.012";"1.T20.012";"1.T20.012";"1.T20.011";"1.T20.011";"1.T20.011";"1.T20.010";"1.T20.010";"1.T20.010"}A
    .Menu text       = 
    .Description text= 
    .Help topic text = 
    .Status bar text = 
[/NAME]

Previously I thought that the problem was caused by an array of numbers. Strings are different, they really can produce continue records while being serialized. 

I fixed the problem, but did not yet commit it. Can you please apply the attached patch to your local POI trunk and test it against your file set? 

Yegor
Comment 19 Yegor Kozlov 2010-12-05 10:22:30 UTC
Created attachment 26375 [details]
proposed fix (improved)
Comment 20 Dirk Schoenberger 2010-12-13 05:35:43 UTC
(In reply to comment #19)
> Created an attachment (id=26375) [details]
> proposed fix (improved)

Sorry for the late reply.
I tried to apply your attached patch. Besides some small problems (there seem to be a missing status.xml somewhere in my snapshot), the patch went well and I was able to read the document.

Looks good to me

Best regards
Dirk
Comment 21 Yegor Kozlov 2010-12-14 13:19:12 UTC
Fixed in r1049202

Regards,
Yegor
Comment 22 Sanjay saini 2016-02-13 16:18:14 UTC
I'm getting exception during reading Excel file 

org.apache.poi.hssf.record.RecordFormatException: Expected size 18 but got (0)
	at org.apache.poi.hssf.record.CommonObjectDataSubRecord.<init>(CommonObjectDataSubRecord.java:86)
	at org.apache.poi.hssf.record.SubRecord.createSubRecord(SubRecord.java:49)
	at org.apache.poi.hssf.record.ObjRecord.<init>(ObjRecord.java:93)
	at sun.reflect.GeneratedConstructorAccessor9.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at org.apache.poi.hssf.record.RecordFactory$ReflectionConstructorRecordCreator.create(RecordFactory.java:84)
	at org.apache.poi.hssf.record.RecordFactory.createSingleRecord(RecordFactory.java:334)
	at org.apache.poi.hssf.record.RecordFactoryInputStream.readNextRecord(RecordFactoryInputStream.java:310)
	at org.apache.poi.hssf.record.RecordFactoryInputStream.nextRecord(RecordFactoryInputStream.java:276)
	at org.apache.poi.hssf.record.RecordFactory.createRecords(RecordFactory.java:478)
	at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:343)
	at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:400)
	at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:381)
Comment 23 Dominik Stadler 2016-02-13 20:04:53 UTC
Please report a new bug with a sample file and sample code as the issue discussed here is very old and likely not related as the error message is not the same.