> I want to know is there is any existing implementation for any single chart > that works. As i see the code base there is some code for charts both for > binary and xml format. I want to know that the code is in what state? >
There is initial support for charts for the .xlsx format. Have a look at this example: https://svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/ScatterChart.java The example is functional and it is a very good starting point to support more types of charts. Notice how it is implemented: there is a set of common spreadsheet interfaces (Chart, ChartAxis, ChartLegend, etc.) and their concrete implementations in the org.apache.poi.xssf.usermodel.charts.* package. To support new types of charts you will need to follow the pattern: define new interfaces and add the implementation. > Secondly what internal classes are use to interact with files > (reading,writing or changing) both for binary and xml format. > The binary Excel format consists of individual blocks called records. Each record contains specific data for the various contents or features in a document. There are records describing rows, cells, print areas, formulas, charts, etc. In HSSF every record is a subclass of org.apache.poi.hssf.record.Record. See concrete implementations in the org.apache.poi.hssf.record.* namespace. Typically, a record implementation has a constructor that takes a RecordInputStream ( it is called when a document is read) and a serialize(LittleEndianOutput out) method which is called when the document is saved. Some but not all chart-specific records are already supported: ChartTitleFormatRecord, ChartRecord, SeriesTextRecord, etc. Have a look at their implementations. For the OOXML formats POI uses XmlBeans (http://xmlbeans.apache.org) to build XML and all operations that modify the document delegate the actual construction of XML to Xmlbeans. For example, the XSSFSheet object holds the root element of the SpreadsheetML Sheet part (CTWorksheet ) and the piece of code that appends a new row looks as follows: CTRow row = worksheet.getSheetData().addNewRow(); All the heavy lifting happens behind the scene and you don't have to deal with low-level XML. OOXML files are zip archives and the best way to learn OOXML is to unzip a document and view its structure in a XML editor. it is also useful for reverse-engineering: create a spreadsheet with a chart in Excel, unzip the file and see what XML structures were created. > Thirdly please explain a bit the level of detail the proposal/application > should have. > I would like an applicant to demonstrate basic understanding of the problem and provide a rough implementation plan (month 1, month 2, etc.) You should demonstrate that you understand the required amount of work and have technical skills to complete it. Basic understanding of the BIFF8 and SpreadsheetML format are pre-requisites in my opinion. > Lastly the amount of documentation is huge. After going through with Spec > for Open XML (part 1(intro), part3 (primer) and finally markup reference), > it seems that the project has huge scope or i am missing something. The OOXML spec is huge but you don't need to keep it all in your head. Just have a basic understanding how BIFF8 and OOXML documents are organized and how POI works with them. Regards, Yegor --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
