*I am sorry, I am a stupid.* /I was wrong by downloading the zip file, the
file is right at the bottom of the page! I am sorry!

I tryed class ExampleEventUserModel and it is very good!!! Waww!!!

Now I must change class ExampleEventUserModel to get xlsread(...) method.

Do you have some advices for me?

I post the start point, could you help me too?/

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 

package xls;

import java.io.InputStream;
import java.util.Iterator;

import org.apache.poi.xssf.eventusermodel.XSSFReader;
import org.apache.poi.xssf.eventusermodel.examples.FromHowTo;
import org.apache.poi.xssf.model.SharedStringsTable;
import org.apache.poi.xssf.usermodel.XSSFRichTextString;
import org.apache.poi.openxml4j.opc.Package;
import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.helpers.XMLReaderFactory;

public class ExampleEventUserModel {
        public void processOneSheet(String filename) throws Exception {
                Package pkg = Package.open(filename);
                XSSFReader r = new XSSFReader( pkg );
                SharedStringsTable sst = r.getSharedStringsTable();

                XMLReader parser = fetchSheetParser(sst);

                // rId2 found by processing the Workbook
                // Seems to either be rId# or rSheet#
                InputStream sheet2 = r.getSheet("rId2");
                InputSource sheetSource = new InputSource(sheet2);
                parser.parse(sheetSource);
                sheet2.close();
        }

        public void processAllSheets(String filename) throws Exception {
                Package pkg = Package.open(filename);
                XSSFReader r = new XSSFReader( pkg );
                SharedStringsTable sst = r.getSharedStringsTable();
                
                XMLReader parser = fetchSheetParser(sst);

                Iterator<InputStream> sheets = r.getSheetsData();
                while(sheets.hasNext()) {
                        System.out.println("Processing new sheet:\n");
                        InputStream sheet = sheets.next();
                        InputSource sheetSource = new InputSource(sheet);
                        parser.parse(sheetSource);
                        sheet.close();
                        System.out.println("");
                }
        }

        public XMLReader fetchSheetParser(SharedStringsTable sst) throws
SAXException {
                XMLReader parser =
                        XMLReaderFactory.createXMLReader(
                                        "org.apache.xerces.parsers.SAXParser"
                        );
                ContentHandler handler = new SheetHandler(sst);
                parser.setContentHandler(handler);
                return parser;
        }

        /** 
         * See org.xml.sax.helpers.DefaultHandler javadocs 
         */
        private static class SheetHandler extends DefaultHandler {
                private SharedStringsTable sst;
                private String lastContents;
                private boolean nextIsString;
                
                private SheetHandler(SharedStringsTable sst) {
                        this.sst = sst;
                }
                
                public void startElement(String uri, String localName, String 
name,
                                Attributes attributes) throws SAXException {
                        // c => cell
                        if(name.equals("c")) {
                                // Print the cell reference
                                System.out.print(attributes.getValue("r") + " - 
");
                                // Figure out if the value is an index in the 
SST
                                String cellType = attributes.getValue("t");
                                if(cellType != null && cellType.equals("s")) {
                                        nextIsString = true;
                                } else {
                                        nextIsString = false;
                                }
                        }
                        // Clear contents cache
                        lastContents = "";
                }
                
                public void endElement(String uri, String localName, String 
name)
                                throws SAXException {
                        // Process the last contents as required.
                        // Do now, as characters() may be called more than once
                        if(nextIsString) {
                                int idx = Integer.parseInt(lastContents);
                                lastContents = new 
XSSFRichTextString(sst.getEntryAt(idx)).toString();
            nextIsString = false;
                        }

                        // v => contents of a cell
                        // Output after we've seen the string contents
                        if(name.equals("v")) {
                                System.out.println(lastContents);
                        }
                }

                public void characters(char[] ch, int start, int length)
                                throws SAXException {
                        lastContents += new String(ch, start, length);
                }
        }
        
        public static void main(String[] args) throws Exception {
                FromHowTo howto = new FromHowTo();
                howto.processOneSheet("filename.xlsx");
                howto.processAllSheets("filename.xlsx");
        }
}


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-



--
View this message in context: 
http://apache-poi.1045710.n5.nabble.com/Apache-POI-works-but-it-uses-too-RAM-is-it-a-limit-of-your-library-tp5712425p5712493.html
Sent from the POI - User mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@poi.apache.org
For additional commands, e-mail: user-h...@poi.apache.org

Reply via email to