| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| ==================================================================== |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| ==================================================================== |
| --> |
| <!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" "document-v20.dtd"> |
| |
| <document> |
| <header> |
| <title>Hacking HSSF</title> |
| <authors> |
| <person email="user@poi.apache.org" name="Glen Stampoultzis" id="GJS"/> |
| <person email="acoliver@apache.org" name="Andrew Oliver" id="AO"/> |
| </authors> |
| </header> |
| <body> |
| <section><title>Where Can I Find Documentation on Feature X</title> |
| <p> |
| You might find the |
| 'Excel 97 Developer's Kit' (out of print, Microsoft Press, no |
| restrictive covenants, available on Amazon.com) helpful for |
| understanding the file format. |
| </p> |
| <p> |
| Also useful is the <a href="https://sc.openoffice.org/excelfileformat.pdf">open office XLS spec</a>. We |
| are collaborating with the maintainer of the spec so if you think you can add something to their |
| document just send through your changes. |
| </p> |
| </section> |
| <section><title>Help, I Can't Find Feature X Documented Anywhere</title> |
| <ol> |
| <li> |
| Look at OpenOffice.org or Gnumeric sources if its implemented there. |
| </li> |
| <li> |
| Use org.apache.poi.hssf.dev.BiffViewer to view the structure of the |
| file. Experiment by adding one criteria entry at a time. See what it |
| does to the structure, infer behavior and structure from it. Using the |
| unix diff command (or get cygwin from www.cygwin.com for windows) you |
| can figure out a lot very quickly. Unimplemented records show up as |
| 'UNKNOWN' and prints a hex dump. |
| </li> |
| </ol> |
| </section> |
| <section><title>Low-level Record Generation</title> |
| <p> |
| Low level records can be time consuming to created. We created a record |
| generator to help generate some of the simpler tasks. |
| </p> |
| <p> |
| We use XML |
| descriptors to generate the Java code (which sure beats the heck out of |
| the PERL scripts originally used ;-) for low level records. The |
| generator is kinda alpha-ish right now and could use some enhancement, |
| so you may find that to be about 1/2 of the work. Notice this is in |
| org.apache.poi.hssf.record.definitions. |
| </p> |
| </section> |
| <section><title>Important Notice</title> |
| <p>One thing to note: If you are making a large code contribution we need to ensure |
| any participants in this process have never |
| signed a "Non Disclosure Agreement" with Microsoft, and have not |
| received any information covered by such an agreement. If they have |
| they'll not be able to participate in the POI project. For large contributions we |
| may ask you to sign an agreement.</p> |
| </section> |
| <section><title>What Can I Work On?</title> |
| <p>Ask in the dev mailing list for advice.</p> |
| </section> |
| <section><title>What Else Should I Know?</title> |
| <p>Make sure you <a href="site:guidelines">read the contributing section</a> |
| as it contains more generation information about contributing to POI in general.</p> |
| </section> |
| </body> |
| </document> |