<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
   ====================================================================
   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 V1.3//EN" "../../../dtd/document-v13.dtd">

<document>
    <header>
        <title>Apache POI - HSSF and XSSF Limitations</title>
        <authors>
            <person email="user@poi.apache.org" name="Glen Stampoultzis" id="GJS"/>
        </authors>
    </header>
    <body>
        <section><title>Current HSSF / XSSF main limitations</title>
            <p>
                The intent of this document is to outline some of the known limitations of the
                POI HSSF and XSSF API's.  It is not intended to be complete list of every bug 
                or missing feature of HSSF or XSSF, rather it's purpose is to provide a broad 
                feel for some of the functionality that is missing or broken.
            </p>
            <ul>
                <li>
                    Charts<br/><br/>
                    HSSF has some limited support for creating a handful of very simple Chart types,
                    but largely this isn't supported. HSSF (largely) doesn't support changing Charts.
                    You can however create a chart in Excel using Named ranges, modify the chart data 
                    values using HSSF and write a new spreadsheet out.  This is possible because POI 
                    attempts to keep existing records intact as far as possible.<br/>
                    XSSF has only limited chart support, largely only supporting making some
                    very simple changes.<br/><br/>
                </li>
                <li>
                    Outlines<br/><br/>
                    It is not yet possible to create outlines.  Reading a spreadsheet with outlines
                    may work correctly but has not been tested.  Write support for outlines may
                    be added in the future but it is not currently planned.  Patches are welcome.<br/><br/>
                </li>
                <li>
                    Macros<br/><br/>
                    Macros can not be created.  The are currently no plans to support macros.  Reading
                    workbooks containing macros is supported but attempting to write those workbooks
                    will fail.  This is because macros are stored as extra file sytems within the
                    compound document, and these are not currently kept when the file is rewritten.<br/><br/>
                </li>
                <li>
                    Pivot Tables<br/><br/>
                    HSSF doesn't have support for reading or creating Pivot tables. XSSF has limited
                    support for creating Pivot Tables, and very limited read/change support.
                </li>
            </ul>
        </section>
    </body>
</document>
