poi-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kim Jacobson" <K...@softartisans.com>
Subject RE: More documents and records decoded [was: RC1 Testing]
Date Fri, 07 Nov 2003 13:57:23 GMT

Could you send me a spreadsheet with the records that you've mentioned? I created a spreadsheet
with a command button, attached VBA code to it and saved it with Excel 2002 (10.3506.35.01)
SP-1. I don't see these records. 

Also, you should try the latest version of POI. My patch for classID issue in POIFS has been
accepted [see Bug 22195]. Now embedded OLE objects should be transferred correctly. 

I would also recommend ExcelWriter product that is available for both Java and COM/.NET platforms
(www.SoftArtisans.com/ExcelWriter). From the description that you gave it should suite your

With best regards,
Kirill/Kim Jacobson

-----Original Message-----
From: Jean-Pierre Paris [mailto:jpparis@waidan.com] 
Sent: Friday, November 07, 2003 2:48 AM
To: POI Developers List
Subject: More documents and records decoded [was: RC1 Testing]


 Here is a rapid sketch of my goal and of the state of my work as
asked by Avik.

 I started to work on poi 1.5.1: my goal is to have an xls template,
add some data in it (say several sheets) and write the xls result.
Unfortunatly, in some case I must include VBA code in the xls
template, and my test cases fail with 1.5.1.

 As it is mandatory for me to cope with VBA, I downloaded 1.5.1 src
and started to dig into. First, I have adapted BiffViewer so that it
print information for all Documents found in the xls file (that is
for example Ctls, ?CompObj, ?SummaryInformation,
?DocumentSummaryInformation, Workbook, and for VBA the following
rirectory structure
For Document with unknown structure, I dump hex values flow using

 After, that I have decoded the structure of some Document or records,
but I only used them in the BiffViewer context (I have not used or
tested the serialize method):
 1. Ctls Document. classical record format: sid (16), len (16),
    value... I wrote the following records, without any interpretation
    of the content. For me it is just a byte flow, but it could be a
    good start for someone who wants to figure out the semantic of
    each byte.
      ComboBoxRecord (0x1D30
      CommandButtonRecord (0x3240)
      CtlXtraRecord (0x200): already extists in Workbook (Dimension),
                             but seems not to be relaoted to
      ListBoxRecord (0x1D20)

 2. Workbook. No need to elaborate about the structure!
    I added those records, but as sayd previously, I can't figure out
    the semantic, those are only bytes flows.
      ControlsRecord (0xEB), ControlsXtraRecord (0xEC)
        Both records contains hierarchical records that mimic the
        classical format but in 32 bits: sid is stored in 4 bytes as
        length does. I have coded 2 records, one for intermediate nodes
        and one for terminal ones.
      ControlsInfoRecord (0x5D)
        This record contains a set of record in the classical 16 bits
        format. I handled those records as UnknownRecord

 3. VBA_PROJECT_CUR.PROJECT. This document contains a set of Dos
    strings (8 bits 0x0D 0x0A terminated). I coded the DosLineRecord,
    but have no clue about the actual content

 4. VBA_PROJECT_CUR.PROJECTwm. This document contains a set of null
    terminated utf8 or utf16 strings. I coded the String8 and

 I have developped all that code OUTSIDE the poi tree and without unit
tests and javadocs. What I have to do before I can publish that for
the community is:
 1. Integrate in the poi src tree, and by the way understand how to
    use Ant as I use make for the moment! Check for compatibility with RC1
    my code is based on 1.5.1
 2. Add JUnit tests. To do that, I have some questions: for example,
    what is the definition of getRecordSize return value. I suppose
    I'll find the answer if I dig into the record test cases
 3. Write down some javadocs

 As it is a work I don't like a lot ;-), I'm willing to do that only if
it is usefull to someone around there. As asked by Avik, I'm also ready
to "stay" in the project as a contributor. I have several ideas of what
I can contribute, but that's another story...

 Hope this help to undestand what I have done (apologies for my
English, which IMHO is not quite as good as I wanted!)

 Regards and again, thanks to all for making poi/hssf working!

Jean-Pierre Paris - Waidan, 300 route des crĂȘtes, 06902 Sophia Antipolis
Tel: (+33)4 93 00 60 43, Fax (+33)4 93 00 60 46

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

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

View raw message