From: <prn...@us...> - 2011-02-16 21:52:30
|
Revision: 8120 http://octave.svn.sourceforge.net/octave/?rev=8120&view=rev Author: prnienhuis Date: 2011-02-16 21:52:20 +0000 (Wed, 16 Feb 2011) Log Message: ----------- Updated for io-1.0.14; layout improved. Modified Paths: -------------- trunk/octave-forge/main/io/doc/READ-ODS.html trunk/octave-forge/main/io/doc/READ-XLS.html Modified: trunk/octave-forge/main/io/doc/READ-ODS.html =================================================================== --- trunk/octave-forge/main/io/doc/READ-ODS.html 2011-02-15 22:02:21 UTC (rev 8119) +++ trunk/octave-forge/main/io/doc/READ-ODS.html 2011-02-16 21:52:20 UTC (rev 8120) @@ -1,625 +1,457 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> -<HTML> -<HEAD> - <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252"> - <TITLE></TITLE> - <META NAME="GENERATOR" CONTENT="OpenOffice.org 3.2 (Win32)"> - <META NAME="AUTHOR" CONTENT="Philip Nienhuis"> - <META NAME="CREATED" CONTENT="20091229;22213000"> - <META NAME="CHANGEDBY" CONTENT="Philip Nienhuis"> - <META NAME="CHANGED" CONTENT="20101114;18275600"> - <META NAME="Info 1" CONTENT=""> - <META NAME="Info 2" CONTENT=""> - <META NAME="Info 3" CONTENT=""> - <META NAME="Info 4" CONTENT=""> - <META NAME="CHANGEDBY" CONTENT="Philip Nienhuis"> - <META NAME="CHANGEDBY" CONTENT="Philip Nienhuis"> - <META NAME="CHANGEDBY" CONTENT="Philip Nienhuis"> - <META NAME="CHANGEDBY" CONTENT="Philip Nienhuis"> - <META NAME="CHANGEDBY" CONTENT="Philip Nienhuis"> - <META NAME="CHANGEDBY" CONTENT="Philip Nienhuis"> - <META NAME="CHANGEDBY" CONTENT="Philip Nienhuis"> - <META NAME="CHANGEDBY" CONTENT="Philip Nienhuis"> - <META NAME="CHANGEDBY" CONTENT="Philip Nienhuis"> - <META NAME="CHANGEDBY" CONTENT="Philip Nienhuis"> - <META NAME="CHANGEDBY" CONTENT="Philip Nienhuis"> - <META NAME="CHANGEDBY" CONTENT="Philip Nienhuis"> - <META NAME="CHANGEDBY" CONTENT="Philip Nienhuis"> - <META NAME="CHANGEDBY" CONTENT="Philip Nienhuis"> -</HEAD> -<BODY LANG="en-US" DIR="LTR"> -<P ALIGN=CENTER><U><FONT FACE="Arial, sans-serif"><FONT SIZE=4><B>ODS -support for Octave</B></U></FONT></FONT><P ALIGN=CENTER> -<BR> -<P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=2>Copyright -© 2009, 2010 Philip Nienhuis <prnienhuis at users.sf.net></FONT></FONT><P ALIGN=CENTER> -<BR> -<P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=2>This -version November 14, 2010</FONT></FONT><DL> - <DT><P> - <BR> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2><I>(ODS = Open +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> +<html><head> + <meta http-equiv="CONTENT-TYPE" content="text/html; charset=windows-1252"> + + <title></title><meta name="GENERATOR" content="OpenOffice.org 3.2 (Win32)"> + <meta name="AUTHOR" content="Philip Nienhuis"> + <meta name="CREATED" content="20091229;22213000"> + <meta name="CHANGEDBY" content="Philip Nienhuis"> + <meta name="CHANGED" content="20101114;18275600"> + <meta name="Info 1" content=""> + <meta name="Info 2" content=""> + <meta name="Info 3" content=""> + <meta name="Info 4" content=""> + <meta name="CHANGEDBY" content="Philip Nienhuis"> + <meta name="CHANGEDBY" content="Philip Nienhuis"> + <meta name="CHANGEDBY" content="Philip Nienhuis"> + <meta name="CHANGEDBY" content="Philip Nienhuis"> + <meta name="CHANGEDBY" content="Philip Nienhuis"> + <meta name="CHANGEDBY" content="Philip Nienhuis"> + <meta name="CHANGEDBY" content="Philip Nienhuis"> + <meta name="CHANGEDBY" content="Philip Nienhuis"> + <meta name="CHANGEDBY" content="Philip Nienhuis"> + <meta name="CHANGEDBY" content="Philip Nienhuis"> + <meta name="CHANGEDBY" content="Philip Nienhuis"> + <meta name="CHANGEDBY" content="Philip Nienhuis"> + <meta name="CHANGEDBY" content="Philip Nienhuis"> + <meta name="CHANGEDBY" content="Philip Nienhuis"></head> + +<body dir="ltr" lang="en-US"> +<p align="center"><u><font face="Arial, sans-serif"><font size="4"><b>ODS +support for Octave</b></font></font></u></p><p align="center"><font face="Arial, sans-serif"><font size="2">Copyright +\xA9 2009 - 2011 Philip Nienhuis <prnienhuis at users.sf.net></font></font></p><p align="center"><font face="Arial, sans-serif"><font size="2">This +version February 16, 2011</font></font></p> + <p><font face="Arial, sans-serif"><font size="2"><i>(ODS = Open Document Format spreadsheet data format, used by e.g., - OpenOffice.org.)</I></FONT></FONT><DT><P> - <BR> - <DT><P><BR> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2><U><B>Files - content</B></U></FONT></FONT><DT><P> - <BR> - <DL> - <DL> - <DL> - <DL> - <DD><P ALIGN=LEFT><FONT FACE="Arial, sans-serif"><FONT SIZE=2><I><B>odsread.m</B></I></FONT></FONT></DL> - </DL> - </DL> - </DL> - <DT><P> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>No-hassle read script + OpenOffice.org.)</i></font></font></p><p><font face="Arial, sans-serif"><font size="2"><i></i></font></font></p><dl><dt><p align="left"><font face="Arial, sans-serif"><font size="2"><u><b>Files + content</b></u></font></font></p></dt><dt><p align="left"><font face="Arial, sans-serif"><font size="2"><i><b>odsread.m</b></i><br>No-hassle read script for reading from an ODS file and parsing the numeric and text data - into separate arrays.</FONT></FONT><DT><P> - <BR> - <DL> - <DL> - <DL> - <DL> - <DD><P ALIGN=LEFT><FONT FACE="Arial, sans-serif"><FONT SIZE=2><I><B>odswrite.m</B></I></FONT></FONT></DL> - </DL> - </DL> - </DL> - <DT><P> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>No-hassle write script - for writing to an ODS file.</FONT></FONT><DT><P> - <BR> - <DL> - <DL> - <DL> - <DL> - <DD><P ALIGN=LEFT><FONT FACE="Arial, sans-serif"><FONT SIZE=2><I><B>odsopen.m</B></I></FONT></FONT><DD><P ALIGN=LEFT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>Get a file pointer - to an ODS spreadsheet file.</FONT></FONT></DL> - </DL> - </DL> - </DL> - <DT><P> - <BR> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2><I><B>ods2oct.m</B></I></FONT></FONT><DT><P> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>Read raw data from an - ODS spreadsheet file using the file pointer handed by odsopen.</FONT></FONT><DT><P> - <BR> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2><I><B>oct2ods.m</B></I></FONT></FONT><DT><P> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>Write data to an ODS - spreadsheet file using the file pointer handed by odsopen.</FONT></FONT><DT><P> - <BR> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2><I><B>odsclose.m</B></I></FONT></FONT><DT><P> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>Close file handle made + into separate arrays.<br></font></font></p></dt><dt><p><font face="Arial, sans-serif"><font size="2"><i><b>odswrite.m</b></i><br>No-hassle write script + for writing to an ODS file.</font></font></p></dt><dt><font face="Arial, sans-serif"><font size="2"><i><b>odsopen.m</b></i></font></font> </dt><dt><font face="Arial, sans-serif"><font size="2">Get a file pointer + to an ODS spreadsheet file.</font></font></dt><dl><dl><dl> + </dl> + </dl> + </dl> + <dt><p><font face="Arial, sans-serif"><font size="2"><i><b>ods2oct.m</b></i><br>Read raw data from an + ODS spreadsheet file using the file pointer handed by odsopen.</font></font></p></dt><dt><p><font face="Arial, sans-serif"><font size="2"><i><b>oct2ods.m</b></i><br>Write data to an ODS + spreadsheet file using the file pointer handed by odsopen.</font></font></p></dt><dt><p><font face="Arial, sans-serif"><font size="2"><i><b>odsclose.m</b></i><br>Close file handle made by odsopen and -if data have been transfered to a spreadsheet- save - data.</FONT></FONT><DT><P> - <BR> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2><I><B>odsfinfo.m</B></I></FONT></FONT><DT><P> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>Explore sheet names and - optionally estimated data size of ods files with unknown content.</FONT></FONT><DT><P> - <BR> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2><I><B>calccelladdress.m</B></I></FONT></FONT><DT><P> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>Utility function needed - for jOpenDocument class.</FONT></FONT><DT><P> - <BR> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2><I><B>parsecell.m</B></I></FONT></FONT><DT><P> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>(contained in Excel + data.</font></font></p></dt><dt><p><font face="Arial, sans-serif"><font size="2"><i><b>odsfinfo.m</b></i><br>Explore sheet names and + optionally estimated data size of ods files with unknown content.</font></font></p></dt><dt><p><font face="Arial, sans-serif"><font size="2"><i><b>calccelladdress.m</b></i><br>Utility function needed + for jOpenDocument class.</font></font></p></dt><dt><p><font face="Arial, sans-serif"><font size="2"><i><b>parsecell.m</b></i><br>(contained in Excel xlsread scripts, but works also for ods support) parse raw data - (cell array) into separate numeric array and text (cell) array.)</FONT></FONT><DT> - <BR> - <DT><FONT FACE="Arial, sans-serif"><FONT SIZE=2><B>spsh_chkrange.m</B></FONT></FONT><DT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2><B>spsh_prstype.m</B></FONT></FONT><DT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2><B>getusedrange.m</B></FONT></FONT><DT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2><B>calccelladdress.m</B></FONT></FONT><DT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2><B>parse_sp_range.m</B></FONT></FONT><DT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>Support files called by - the scripts and not meant for direct invocation by users.</FONT></FONT><DT><P> - <BR> - <DT><P><BR> - <DT><P><BR> -</DL> -<P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=4><U><B>REQUIRED -SUPPORT SOFTWARE</B></U></FONT></FONT><DL> - <DL> - <DL> - <DL> - <DL> - <DD><P ALIGN=LEFT> - <BR> - <DD><P ALIGN=LEFT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>For - Windows (MingW):</FONT></FONT></DL> - </DL> - </DL> - </DL> -</DL> -<UL> - <LI><P ALIGN=LEFT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>octave with java package - (>= 1.2.6) with latest svn fixes applied</FONT></FONT></UL> -<DL> - <DT><P><BR> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2>For Linux:</FONT></FONT></DL> -<UL> - <LI><P ALIGN=LEFT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>octave with java package - (>= 1.2.5; earlier versions not tested)</FONT></FONT></UL> -<DL> - <DT><P><BR> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2>For ODS access, + (cell array) into separate numeric array and text (cell) array.)</font></font></p></dt><dt style="font-style: italic;"><font face="Arial, sans-serif"><font size="2"><b>spsh_chkrange.m</b></font></font></dt><dt style="font-style: italic;"> + <font face="Arial, sans-serif"><font size="2"><b>spsh_prstype.m</b></font></font></dt><dt style="font-style: italic;"> + <font face="Arial, sans-serif"><font size="2"><b>getusedrange.m</b></font></font></dt><dt style="font-style: italic;"> + <font face="Arial, sans-serif"><font size="2"><b>calccelladdress.m</b></font></font></dt><dt style="font-style: italic;"> + <font face="Arial, sans-serif"><font size="2"><b>parse_sp_range.m</b></font></font></dt><dt> + <font face="Arial, sans-serif"><font size="2">Support files called by + the scripts and not meant for direct invocation by users.</font></font></dt><dd></dd></dl> +<p align="center"><font face="Arial, sans-serif"><font size="4"><u><b>REQUIRED +SUPPORT SOFTWARE</b></u></font></font></p><dl> + <dl> + <dl> + <dl> + <dl> + </dl></dl></dl></dl></dl><font style="font-weight: bold; font-style: italic;" face="Arial, sans-serif"><font size="2">For + Windows (MingW):</font></font><dl><dl><dl><dl> + </dl> + </dl> + </dl> +</dl> +<ul> + <li><p align="left"> + <font face="Arial, sans-serif"><font size="2">octave with java package + (>= 1.2.8)</font></font></p></li></ul> +<dl style="font-style: italic; font-weight: bold;"> + <dt><p><font face="Arial, sans-serif"><font size="2">For Linux:</font></font></p></dt></dl> +<ul> + <li><p align="left"> + <font face="Arial, sans-serif"><font size="2">octave with java package + (>= 1.2.8)</font></font></p></li></ul> + <p><font face="Arial, sans-serif"><font size="2">For ODS access, you'll need to choose at least one of the following java class files - collections:</FONT></FONT></DL> -<UL> - <LI><P ALIGN=LEFT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>(currently the preferred - option) <B>odfdom.jar</B> (<U>only</U> versions <B>0.7.5</B> and - <B>0.8.6</B> work OK!) & <B>xercesImpl.jar</B>. Get them here:</FONT></FONT><LI><P ALIGN=LEFT> - <A HREF="http://odftoolkit.org/projects/odfdom/downloads/directory/previous-versions%252Freleases"><FONT FACE="Arial, sans-serif"><FONT SIZE=2>http://odftoolkit.org/projects/odfdom/downloads/directory/previous-versions%252Freleases</FONT></FONT></A><LI><P LANG="zxx" ALIGN=LEFT> - <FONT COLOR="#000080"><FONT FACE="Arial, sans-serif"><FONT SIZE=2><U>http://odftoolkit.org/projects/odfdom/downloads/directory/current-version</U></FONT></FONT></FONT><LI><P ALIGN=LEFT> - <A HREF="http://xerces.apache.org/mirrors.cgi"><FONT FACE="Arial, sans-serif"><FONT SIZE=2>http://xerces.apache.org/mirrors.cgi</FONT></FONT></A></UL> -<DL> - <DT><P><BR> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2>and/or</FONT></FONT><DT><P> - <BR> -</DL> -<UL> - <LI><P ALIGN=LEFT><FONT FACE="Arial, sans-serif"><FONT SIZE=2><B>jopendocument</B></FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2><version></FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2><B>.jar</B></FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>. - Get it from <A HREF="http://www.jopendocument.org/">http://www.jopendocument.org</A></FONT></FONT><P ALIGN=LEFT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>(jOpenDocument 1.2 - (final) is the most recent one and recommended for Octave)</FONT></FONT></UL> -<DL> - <DT><P><BR> -</DL> -<UL> - <P ALIGN=LEFT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>These</FONT></FONT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>must be referenced with + collections:</font></font></p> +<ul> + <li><p align="left"> + <font face="Arial, sans-serif"><font size="2">(currently the preferred + option) <b>odfdom.jar</b> (<u>only</u> versions <b>0.7.5</b> and + <b>0.8.6</b> work OK!) & <b>xercesImpl.jar</b>. Get them here:</font></font></p></li><li><p align="left"> + <a href="http://odftoolkit.org/projects/odfdom/downloads/directory/previous-versions%252Freleases"><font face="Arial, sans-serif"><font size="2">http://odftoolkit.org/projects/odfdom/downloads/directory/previous-versions%252Freleases</font></font></a></p></li><li><p align="left" lang="zxx"> + <font color="#000080"><font face="Arial, sans-serif"><font size="2"><u>http://odftoolkit.org/projects/odfdom/downloads/directory/current-version</u></font></font></font></p></li><li><p align="left"> + <a href="http://xerces.apache.org/mirrors.cgi"><font face="Arial, sans-serif"><font size="2">http://xerces.apache.org/mirrors.cgi</font></font></a></p></li></ul> +<dl> + <dt><p><br><font face="Arial, sans-serif"><font size="2">and/or</font></font></p></dt></dl> +<ul> + <li><p align="left"><font face="Arial, sans-serif"><font size="2"><b>jopendocument</b></font></font><font face="Arial, sans-serif"><font size="2"><version></font></font><font face="Arial, sans-serif"><font size="2"><b>.jar</b></font></font><font face="Arial, sans-serif"><font size="2">. + Get it from <a href="http://www.jopendocument.org/">http://www.jopendocument.org</a></font></font></p><p align="left"> + <font face="Arial, sans-serif"><font size="2">(jOpenDocument 1.2 + (final) is the most recent one and recommended for Octave)</font></font></p></li></ul><dl><dt><p><font face="Arial, sans-serif"><font size="2">These must be referenced with full pathnames in your javaclasspath. Hint: add it in ./share/octave/<version>/m/startup/octaverc using appropriate - javaaddpath statements.</FONT></FONT></UL> -<DL> - <DT><P><BR> - <DT><P><BR> -</DL> -<P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=4><U><B>USAGE</B></U></FONT></FONT><DL> - <DT><P> - <BR> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2>(see “help - ods<function_filename>” in octave terminal.)</FONT></FONT><DT><P> - <BR> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2><B>odsread</B></FONT></FONT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>is a sort of analog to - xlsread and works more or less the same. </FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2><B>odsread - </B></FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>is a - mere wrapper for the functions </FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2><B>odsopen</B></FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>, - </FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2><B>ods2oct,</B></FONT></FONT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>and </FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2><B>odsclose</B></FONT></FONT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>that do file access and - the actual reading, plus </FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2><B>parsecell</B></FONT></FONT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>for post-processing.</FONT></FONT><DT><P> - <BR> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2><B>odswrite</B></FONT></FONT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>works similar to + javaaddpath statements</font></font> + </p></dt><dt><p><br> +</p></dt></dl> +<p align="center"><font face="Arial, sans-serif"><font size="4"><u><b>USAGE</b></u></font></font></p> + <p><font face="Arial, sans-serif"><font size="2">(see \x93help + ods<function_filename>\x94 in octave terminal.)</font></font></p><p><font face="Arial, sans-serif"><font size="2"><b>odsread</b></font></font> + <font face="Arial, sans-serif"><font size="2">is a sort of analog to + xlsread and works more or less the same. </font></font><font face="Arial, sans-serif"><font size="2"><b>odsread + </b></font></font><font face="Arial, sans-serif"><font size="2">is a + mere wrapper for the functions </font></font><font face="Arial, sans-serif"><font size="2"><b>odsopen</b></font></font><font face="Arial, sans-serif"><font size="2">, + </font></font><font face="Arial, sans-serif"><font size="2"><b>ods2oct,</b></font></font> + <font face="Arial, sans-serif"><font size="2">and </font></font><font face="Arial, sans-serif"><font size="2"><b>odsclose</b></font></font> + <font face="Arial, sans-serif"><font size="2">that do file access and + the actual reading, plus </font></font><font face="Arial, sans-serif"><font size="2"><b>parsecell</b></font></font> + <font face="Arial, sans-serif"><font size="2">for post-processing.</font></font></p><p><font face="Arial, sans-serif"><font size="2"><b>odswrite</b></font></font> + <font face="Arial, sans-serif"><font size="2">works similar to xlswrite. It too is a wrapper for scripts which do the actual work - and invoke other scripts, a.o. </FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2><B>oct2ods</B></FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>.</FONT></FONT><DT><P> - <BR> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2><B>odsfinfo</B></FONT></FONT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>can be used to explore + and invoke other scripts, a.o. </font></font><font face="Arial, sans-serif"><font size="2"><b>oct2ods</b></font></font><font face="Arial, sans-serif"><font size="2">.</font></font></p><p><font face="Arial, sans-serif"><font size="2"><b>odsfinfo</b></font></font> + <font face="Arial, sans-serif"><font size="2">can be used to explore odsfiles with unknown content for sheet names and to get an - impression of the data content sizes.</FONT></FONT><DT><P> - <BR> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2>When you need - data from just one sheet, <B>odsread</B> is for you. </FONT></FONT> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2>But when you need + impression of the data content sizes.</font></font></p><font face="Arial, sans-serif"><font size="2">When you need + data from just one sheet, <b>odsread</b> is for you.</font></font><font face="Arial, sans-serif"><font size="2"> But when you need data from multiple sheets in the same spreadsheet file, or if you want to process spreadsheet data by limited-size chunks at a time, - <B>odsopen</B> / <B>ods2oct</B> [/<B>parsecell</B>] / … / - <B>odsclose</B> sequences provides for much more speed and + <b>odsopen</b> / <b>ods2oct</b> [/<b>parsecell</b>] / \x85 / + <b>odsclose</b> sequences provides for much more speed and flexibility as the spreadsheet needs to be read just once rather - than repeatedly for each call to <B>odsread</B>.</FONT></FONT><DT><P> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>Same reasoning goes for - <B>odswrite</B>.</FONT></FONT><DT><P> - <BR> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2>Also, if you use - <B>odsopen</B> / …../, you can process multiple spreadsheets - simultaneously – just use <B>odsopen</B> repeatedly to get - multiple spreadsheet file pointers.</FONT></FONT><DT><P> - <BR> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2>Moreover, after + than repeatedly for each call to <b>odsread</b>.</font></font><dl><dt><p> + <font face="Arial, sans-serif"><font size="2">Same reasoning goes for + <b>odswrite</b>.</font></font></p></dt><dt><p><font face="Arial, sans-serif"><font size="2">Also, if you use + <b>odsopen</b> / \x85../, you can process multiple spreadsheets + simultaneously \x96 just use <b>odsopen</b> repeatedly to get + multiple spreadsheet file pointers.</font></font></p></dt><dt><p><font face="Arial, sans-serif"><font size="2">Moreover, after adding data to an existing spreadsheet file, you can fiddle with the filename in the ods file pointer struct to save the data into - another, possibly new spreadsheet file.</FONT></FONT><DT><P> - <BR> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2>If you use - <B>odsopen</B> / <B>ods2oct</B> / … / <B>oct2ods</B> / …. - / <B>odsclose</B>, DO NOT FORGET to invoke <B>odsclose</B> in the + another, possibly new spreadsheet file.</font></font></p></dt><dt><p><font face="Arial, sans-serif"><font size="2">If you use + <b>odsopen</b> / <b>ods2oct</b> / \x85 / <b>oct2ods</b> / \x85. + / <b>odsclose</b>, DO NOT FORGET to invoke <b>odsclose</b> in the end. The file pointers can contain an enormous amount of data and - may needlessly keep precious memory allocated.</FONT></FONT><DT> - <BR> - <DT><BR> -</DL> -<P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=4><U><B>SPREADSHEET -FORMULA SUPPORT</B></U></FONT></FONT><DL> - <DT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2><BR>When using the OTK - interface you can:</FONT></FONT></DL> -<UL> - <LI> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>(When reading, <B>od</B><B>s2oct</B>) + may needlessly keep precious memory allocated.</font></font></p></dt><dt><br> +</dt></dl> +<p align="center"><font face="Arial, sans-serif"><font size="4"><u><b>SPREADSHEET +FORMULA SUPPORT</b></u></font></font></p><dl> + <dt> + <font face="Arial, sans-serif"><font size="2">When using the OTK + interface you can:</font></font></dt></dl> +<ul> + <li> + <font face="Arial, sans-serif"><font size="2">(When reading, <b>od</b><b>s2oct</b>) either read spreadsheet formula results, or the literal formula text - strings;</FONT></FONT><LI> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>(When writing, <B>oct2</B><B>od</B><B>s</B>) + strings;</font></font></li><li> + <font face="Arial, sans-serif"><font size="2">(When writing, <b>oct2</b><b>od</b><b>s</b>) either enter formulas in the worksheet as formulas, or enter them as - literal text strings.</FONT></FONT></UL> -<DL> - <DT><BR> - <DT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>In short, you can + literal text strings.</font></font></li></ul> + <font face="Arial, sans-serif"><font size="2">In short, you can enter spreadsheet formulas and in a later stage read them back, - change them and re-enter them in the worksheet.</FONT></FONT><DT> - <BR> - <DT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>The behaviour is - controlled by an option structure </FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2><B>options</B></FONT></FONT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>(as last argument to - </FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2><B>oct2ods</B></FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>.m - and </FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2><B>ods2oct</B></FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>.m) - which for now has only one (logical) field:</FONT></FONT><DT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2><B>options.formulas_as_text</B></FONT></FONT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>= 0 (the default) - implies enter formulas as formulas and read back formula results</FONT></FONT><DT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2><B>options.formulas_as_text - </B></FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>=1 (or + change them and re-enter them in the worksheet.</font></font><font face="Arial, sans-serif"><font size="2"> The behaviour is + controlled by an option structure </font></font><font face="Arial, sans-serif"><font size="2"><b>options</b></font></font> + <font face="Arial, sans-serif"><font size="2">(as last argument to + </font></font><font face="Arial, sans-serif"><font size="2"><b>oct2ods</b></font></font><font face="Arial, sans-serif"><font size="2">.m + and </font></font><font face="Arial, sans-serif"><font size="2"><b>ods2oct</b></font></font><font face="Arial, sans-serif"><font size="2">.m) + which for now has only one (logical) field:</font></font><ul><li> + <font face="Arial, sans-serif"><font size="2"><b>options.formulas_as_text</b></font></font> + <font face="Arial, sans-serif"><font size="2">= 0 (the default) + implies enter formulas as formulas and read back formula results</font></font></li><li> + <font face="Arial, sans-serif"><font size="2"><b>options.formulas_as_text + </b></font></font><font face="Arial, sans-serif"><font size="2">=1 (or any positive integer) means enter formulas as text strings and read - them back as text strings.</FONT></FONT><DT> - <BR> - <DT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>Be aware that + them back as text strings.</font></font></li></ul><dl><dt><font face="Arial, sans-serif"><font size="2">Be aware that there's no formula evaluator in ODS java, not even a formula validator. So if you create formulas in your spreadsheet using - </FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2><B>oct2ods</B></FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2> - or </FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2><B>odswrite</B></FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>, + </font></font><font face="Arial, sans-serif"><font size="2"><b>oct2ods</b></font></font><font face="Arial, sans-serif"><font size="2"> + or </font></font><font face="Arial, sans-serif"><font size="2"><b>odswrite</b></font></font><font face="Arial, sans-serif"><font size="2">, do not expect meaningful results when reading those files later on - </FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2><B>unless</B></FONT></FONT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>you open them in - OpenOffice.org Calc and write them back to disk.</FONT></FONT><DT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>You can write all kind + </font></font><font face="Arial, sans-serif"><font size="2"><b>unless</b></font></font> + <font face="Arial, sans-serif"><font size="2">you open them in + OpenOffice.org Calc and write them back to disk.</font></font></dt><dt> + <font face="Arial, sans-serif"><font size="2">You can write all kind of junk as a formula into a spreadsheet cell. There's not much validity checking built into odfdom.jar. I didn't bother to try OpenOffice.org Calc to read such faulty spreadsheets, so I don't know what will happen with spreadsheets containing invalid formulas. But using the above options, you can at least repair them using - octave....</FONT></FONT><DT><P> - <BR> - <DT><P><BR> -</DL> -<P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=4><U><B>GOTCHAS</B></U></FONT></FONT><P ALIGN=CENTER> -<BR> -<DL> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2>I know of one big + octave....</font></font></dt><dd></dd></dl> +<p align="center"><font face="Arial, sans-serif"><font size="4"><u><b>GOTCHAS</b></u></font></font></p><dl> + <dt><p><font face="Arial, sans-serif"><font size="2">I know of one big gotcha: i.e. reading dates (& time). A less obvious one is Java - memory pool allocation size.</FONT></FONT><DT><P> - <BR> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2><B>Date and time - in ODS</B></FONT></FONT><DT><P> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>Octave (as does Matlab) + memory pool allocation size.</font></font></p></dt><dt><p><font face="Arial, sans-serif"><font size="2"><b>Date and time + in ODS</b></font></font></p></dt><dt><p> + <font face="Arial, sans-serif"><font size="2">Octave (as does Matlab) stores dates as a number representing the number of days since January 1, 0 (and as an aside ignores a.o. Pope Gregorius' - intervention in 1582 when 10 days were simply skipped).</FONT></FONT><DT><P> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>OpenOffice.org stores - dates as text strings like “yyyy-mm-dd”.</FONT></FONT><DT><P> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>MS-Excel stores dates as + intervention in 1582 when 10 days were simply skipped).</font></font></p></dt><dt><p> + <font face="Arial, sans-serif"><font size="2">OpenOffice.org stores + dates as text strings like \x93yyyy-mm-dd\x94.</font></font></p></dt><dt><p> + <font face="Arial, sans-serif"><font size="2">MS-Excel stores dates as a number representing the number of days since January 1, 1900 (and - as an aside, erroneously assumes 1900 to be a leap year).</FONT></FONT><DT><P> - <BR> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2>Now, converting + as an aside, erroneously assumes 1900 to be a leap year).</font></font></p></dt><dt><p><font face="Arial, sans-serif"><font size="2">Now, converting OpenOffice.org date cell values (actually, character strings flagged - by “date” attributes) into Octave looks pretty + by \x93date\x94 attributes) into Octave looks pretty straightforward. But when the ODS spreadsheet was originally an Excel spreadsheet converted by OpenOffice.org, the date cells can either be OOo date values (i.e.,strings) OR old numerical values - from the Excel spreadsheet. </FONT></FONT> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2>So: you should - carefully check what happens to date cells.</FONT></FONT><DT><P> - <BR> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2>As octave has no - ”date” or “time” data type, octave date - values (usually numerical data) are simply transferred as “floats” + from the Excel spreadsheet. </font></font> + </p></dt><dt><p><font face="Arial, sans-serif"><font size="2">So: you should + carefully check what happens to date cells.</font></font></p></dt><dt><p><font face="Arial, sans-serif"><font size="2">As octave has no + \x94date\x94 or \x93time\x94 data type, octave date + values (usually numerical data) are simply transferred as \x93floats\x94 to ODS spreadsheets. You'll have to convert the values into dates - yourself from within OpenOffice.org.</FONT></FONT><DT><P> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>While adding data and + yourself from within OpenOffice.org.</font></font></p></dt><dt><p> + <font face="Arial, sans-serif"><font size="2">While adding data and time values has been implemented in the write scripts, the wait is for clever solutions to distinguish dates from floats in octave cell - arrays.</FONT></FONT><DT><P> - <BR> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2><B>Java memory - pool allocation size</B></FONT></FONT><DT><P> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>The Java virtual machine + arrays.</font></font></p></dt><dt><p><font face="Arial, sans-serif"><font size="2"><b>Java memory + pool allocation size</b></font></font></p></dt><dt><p> + <font face="Arial, sans-serif"><font size="2">The Java virtual machine (JVM) initializes one big chunk of your computer's RAM in which all Java classes and methods etc. are to be loaded: the Java memory - pool. It does this because Java has a very sophisticated “garbage - collection” system. At least on Windows, the initial size is + pool. It does this because Java has a very sophisticated \x93garbage + collection\x94 system. At least on Windows, the initial size is 2MB and the maximum size is 64MB. On Linux this allocated size is much bigger. This part of memory is where the Java-based ODS octave routines (and the Java-based ods routines) live and keep their - variables etc.</FONT></FONT><DT><P> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>For transferring large + variables etc.</font></font></p></dt><dt><p> + <font face="Arial, sans-serif"><font size="2">For transferring large pieces of information to and from spreadsheets you might hit the limits of this pool. E.g. to be able to handle I/O of an array of - around 50,000 cells I needed a memory pool size of 512 MB.</FONT></FONT><DT><P> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>The memory size can be - increased by inserting a file called “java.opts” + around 50,000 cells I needed a memory pool size of 512 MB.</font></font></p></dt><dt><p> + <font face="Arial, sans-serif"><font size="2">The memory size can be + increased by inserting a file called \x93java.opts\x94 (without quotes) in the directory ./share/octave/packages/java-<version> (where the script file - javaclasspath.m is located), containing just the following lines:</FONT></FONT><DT><P> - <FONT FACE="Courier New, monospace"><FONT SIZE=2><B>-Xms16m</B></FONT></FONT><DT><P> - <FONT FACE="Courier New, monospace"><FONT SIZE=2><B>-Xmx512m</B></FONT></FONT><DT><P> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>(where 16 = initial + javaclasspath.m is located), containing just the following lines:</font></font></p></dt><dt><p> + <font face="Courier New, monospace"><font size="2"><b>-Xms16m<br>-Xmx512m</b></font></font></p></dt><dt><p> + <font face="Arial, sans-serif"><font size="2">(where 16 = initial size, 512 = maximum size (in this example), m stands for Megabyte. - This number is system-dependent).</FONT></FONT><DT><P> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>After processing a large + This number is system-dependent).</font></font></p></dt><dt><p> + <font face="Arial, sans-serif"><font size="2">After processing a large chunk of spreadsheet information you might notice that octave's memory footprint does not shrink so it looks like Java's memory pool does not shrink back; but rest assured, the memory footprint is the - <I>allocated</I> (reserved) memory size, not the actual used size. + <i>allocated</i> (reserved) memory size, not the actual used size. After the JVM has done its garbage collection, only the so-called - “working set” of the memory allocation is really in use + \x93working set\x94 of the memory allocation is really in use and that is a trimmed-down part of the memory allocation pool. On Windows systems it often suffices to minimize the octave terminal - for a few seconds to get a more reasonable memory footprint.</FONT></FONT><DT><P> - <BR> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2><B>Reading cells - containing errors</B></FONT></FONT><DT><P> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>Spreadsheet cells + for a few seconds to get a more reasonable memory footprint.</font></font></p></dt><dt><p><font face="Arial, sans-serif"><font size="2"><b>Reading cells + containing errors</b></font></font></p></dt><dt><p> + <font face="Arial, sans-serif"><font size="2">Spreadsheet cells containing erroneous stuff are transferred to Octave as NaNs. But not all errors can be catched. Cells showing #Value# in OpenOffice.org Calc often contain invalid formulas but may have a 0 (null) value stored in the value fields. It is impossible to catch this as there is no run-time formula evaluator (yet) in ODF Toolkit - nor jOpenDocument (like there is in Apache POI for Excel).</FONT></FONT><DT><P> - <BR> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2>Smaller gotcha's - (only with jOpenDocument 1.2b2, <B>fixed</B> in <B>1.2b3+</B> and - <B>1.2 final</B>):</FONT></FONT></DL> -<UL> - <LI><P ALIGN=LEFT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>While reading, empty + nor jOpenDocument (like there is in Apache POI for Excel).</font></font></p></dt><dt><p><font face="Arial, sans-serif"><font size="2">Smaller gotcha's + (only with jOpenDocument 1.2b2, <b>fixed</b> in <b>1.2b3+</b> and + <b>1.2 final</b>):</font></font></p></dt></dl> +<ul> + <li><p align="left"> + <font face="Arial, sans-serif"><font size="2">While reading, empty cells are sometimes not skipped but interpreted with numerical value - 0 (zero).</FONT></FONT><LI><P ALIGN=LEFT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>A valid range MUST be + 0 (zero).</font></font></p></li><li><p align="left"> + <font face="Arial, sans-serif"><font size="2">A valid range MUST be specified, I haven't found a way to discover the actual occupied rows and columns (jOpenDocument can give the physical ones (= - capacity) but that doesn't help).</FONT></FONT></UL> -<DL> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2>NOT fixed in - version 1.2 final:</FONT></FONT></DL> -<UL> - <LI><P ALIGN=LEFT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>jOpenDocument doesn't + capacity) but that doesn't help).</font></font></p></li></ul> +<dl> + <dt><p><font face="Arial, sans-serif"><font size="2">NOT fixed in + version 1.2 final:</font></font></p></dt></dl> +<ul> + <li><p align="left"> + <font face="Arial, sans-serif"><font size="2">jOpenDocument doesn't set the so-called <office:value-type='string'> attribute in cells containing text; as a consequence ODF Toolkit will treat them - as empty cells. Ooo will read them OK.</FONT></FONT></UL> -<DL> - <DT><P><BR> - <DT><P><BR> -</DL> -<P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=4><U><B>MATLAB -COMPATIBILITY</B></U></FONT></FONT><DL> - <DT><P> - <BR> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2>AFAIK there's no + as empty cells. Ooo will read them OK.</font></font></p></li></ul> + <p><br> +</p> +<p align="center"><font face="Arial, sans-serif"><font size="4"><u><b>MATLAB +COMPATIBILITY</b></u></font></font></p> + <p><font face="Arial, sans-serif"><font size="2">AFAIK there's no similar functionality in Matlab (yet?), only for reading and then - very limited.</FONT></FONT><DT><P> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>o<B>dsread</B> is fairly - function-compatible to <B>xlsread</B>, however.</FONT></FONT><DT><P> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>Same goes for <B>odswrite</B>, - <B>odsfinfo</B> and <B>xlsfinfo</B> – however <B>ods</B><B>f</B><B>info</B> - has better functionality IMO.</FONT></FONT><DT><P> - <BR> - <DT><P><BR> -</DL> -<P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=4><U><B>COMPARISON -OF INTERFACES</B></U></FONT></FONT><DL> - <DT><P> - <BR> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2>The ODFtoolkit is + very limited.<br>o<b>dsread</b> is fairly + function-compatible to <b>xlsread</b>, however.</font></font></p><p><font face="Arial, sans-serif"><font size="2">Same goes for <b>odswrite</b>, + <b>odsfinfo</b> and <b>xlsfinfo</b> \x96 however <b>ods</b><b>f</b><b>info</b> + has better functionality IMO.</font></font></p><br> +<p align="center"><font face="Arial, sans-serif"><font size="4"><u><b>COMPARISON +OF INTERFACES</b></u></font></font></p> + <p><font face="Arial, sans-serif"><font size="2">The ODFtoolkit is the one that gives the best (but slow) results at present. However, parsing xml trees into rectangular arrays is not quite straightforward and the other way round is a real nightmare; odftoolkit up til 0.7.5. did little to hide the gory details for the - developers.</FONT></FONT><DT><P> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>While reading ODS is + developers.</font></font></p><dl><dt><p> + <font face="Arial, sans-serif"><font size="2">While reading ODS is still OK, writing implies checking whether cells already exist explicitly (in table:table-cells) or implicitly (in number-columns-repeated or number-rows-repeated nodes) or not at all yet in which case you'll need to add various types of parent nodes. - Inserting new cells (“nodes”) or deleting nodes implies + Inserting new cells (\x93nodes\x94) or deleting nodes implies rebuilding possibly large parts of the tree in memory - nothing for the faint-of-heart. Only with ODFToolkit (odfdom) 0.8.6 things have - been simplified for developers.</FONT></FONT><DT><P> - <BR> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2>The jOpenDocument + been simplified for developers.</font></font></p></dt><dt><p><font face="Arial, sans-serif"><font size="2">The jOpenDocument interface is the most promising, as it does shield the xml tree details and presents developers something which looks like a - spreadsheet model.</FONT></FONT><DT><P> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>However, unfortunately + spreadsheet model.<br>However, unfortunately the developers decided to shield essential methods by making them 'protected' (e.g. the vital getCellType). JopenDocument does support writing. But OTOH many obvious methods are still lacking and formula - support is absent.</FONT></FONT><DT><P> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>And last (but not least) + support is absent.<br>And last (but not least) the jOpenDocument developers state that their development is primarily driven by requests from customers who pay for support. I do sympathize with this business model but for octave needs this may - hamper progress for a while.</FONT></FONT><DT><P> - <BR> - <DT><BR> -</DL> -<P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=4><U><B>TROUBLESHOOTING</B></U></FONT></FONT><P ALIGN=CENTER> -<BR> -<DL> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2>Some hints for - troubleshooting ODS support are given here. </FONT></FONT> - <DT><P><BR> -</DL> -<OL> - <LI><P ALIGN=LEFT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>Check - if </FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>J</FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>ava - works. Do a </FONT></FONT><FONT FACE="Courier New, monospace"><FONT SIZE=2>pkg - list </FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>and - see</FONT></FONT><P> - a. <FONT FACE="Arial, sans-serif"><FONT SIZE=2>If there's a </FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>J</FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>ava - package mentioned (then it's installed). If not, install it.</FONT></FONT></P> - <P><FONT FACE="Arial, sans-serif"><FONT SIZE=2>b. If there's an + hamper progress for a while.</font></font></p></dt><dd></dd></dl> +<p align="center"><font face="Arial, sans-serif"><font size="4"><u><b>TROUBLESHOOTING</b></u></font></font></p><dl> + <dt><p><font face="Arial, sans-serif"><font size="2">Some hints for + troubleshooting ODS support are given here. </font></font> + </p></dt></dl> +<ol> + <li><p align="left"><font face="Arial, sans-serif"><font size="2">Check + if </font></font><font face="Arial, sans-serif"><font size="2">J</font></font><font face="Arial, sans-serif"><font size="2">ava + works. Do a </font></font><font face="Courier New, monospace"><font size="2">pkg + list </font></font><font face="Arial, sans-serif"><font size="2">and + see</font></font></p><p> + a. <font face="Arial, sans-serif"><font size="2">If there's a </font></font><font face="Arial, sans-serif"><font size="2">J</font></font><font face="Arial, sans-serif"><font size="2">ava + package mentioned (then it's installed). If not, install it.</font></font></p> + <p><font face="Arial, sans-serif"><font size="2">b. If there's an asterisk on the java package line (then the package is loaded). If - not, do a </FONT></FONT><FONT FACE="Courier New, monospace"><FONT SIZE=2>pkg - rebuild-auto java</FONT></FONT></P> -</OL> -<DL> - <DL> - <DD><P ALIGN=LEFT><BR> - </DL> -</DL> -<OL START=2> - <LI><P ALIGN=LEFT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>Check - </FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>J</FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>ava - memory settings. Try </FONT></FONT><FONT FACE="Courier New, monospace"><FONT SIZE=2>javamem</FONT></FONT><P> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>a. If it works, check if + not, do a </font></font><font face="Courier New, monospace"><font size="2">pkg + rebuild-auto java</font></font></p> +</li></ol> + +<ol start="2"> + <li><p align="left"><font face="Arial, sans-serif"><font size="2">Check + </font></font><font face="Arial, sans-serif"><font size="2">J</font></font><font face="Arial, sans-serif"><font size="2">ava + memory settings. Try </font></font><font face="Courier New, monospace"><font size="2">javamem</font></font></p><p> + <font face="Arial, sans-serif"><font size="2">a. If it works, check if it reports sufficiently large max memory (had better be 200 MiB, the - bigger the better)</FONT></FONT></P> - <P ALIGN=LEFT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>b. If it - doesn't work, do:</FONT></FONT> - <OL TYPE=a><P ALIGN=LEFT> - <FONT FACE="Courier New, monospace"><FONT SIZE=2>rt = java_invoke - ('java.lang.Runtime', 'getRuntime')</FONT></FONT><P ALIGN=LEFT> - <FONT FACE="Courier New, monospace"><FONT SIZE=2>rt.gc</FONT></FONT><P ALIGN=LEFT> - <FONT FACE="Courier New, monospace"><FONT SIZE=2>rt.maxMemory - ().doubleValue () / 1024 / 1024</FONT></FONT><P ALIGN=LEFT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>The last command will - show MaxMemory in MiB.</FONT></FONT></OL> - <P ALIGN=LEFT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>c. In case - you have insufficient memory, see in “GOTCHAS”, “Java - memory pool allocation size”, how to increase java's memory - pre-reservation.</FONT></FONT><LI><P ALIGN=LEFT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>Check if all classes - (.jarfiles) are in class path. Do a '</FONT></FONT><FONT FACE="Courier New, monospace"><FONT SIZE=2>javaclasspath</FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>' - (under unix/linux, do '</FONT></FONT><FONT FACE="Courier New, monospace"><FONT SIZE=2>tmp - = javaclasspath; strsplit (tmp,”:”)</FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>' - (w/o quotes). See above under “REQUIRED SUPPORT SOFTWARE” - what classes should be mentioned.</FONT></FONT><P ALIGN=LEFT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>If classes (.jar files) - ar</FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>e</FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2> + bigger the better)</font></font></p> + <p align="left"><font face="Arial, sans-serif"><font size="2">b. If it + doesn't work, do:</font></font> + </p><ol type="a"><p align="left"> + <font face="Courier New, monospace"><font size="2">rt = java_invoke + ('java.lang.Runtime', 'getRuntime')</font></font></p><p align="left"> + <font face="Courier New, monospace"><font size="2">rt.gc</font></font></p><p align="left"> + <font face="Courier New, monospace"><font size="2">rt.maxMemory + ().doubleValue () / 1024 / 1024</font></font></p><p align="left"> + <font face="Arial, sans-serif"><font size="2">The last command will + show MaxMemory in MiB.</font></font></p></ol> + <p align="left"><font face="Arial, sans-serif"><font size="2">c. In case + you have insufficient memory, see in \x93GOTCHAS\x94, \x93Java + memory pool allocation size\x94, how to increase java's memory + pre-reservation.</font></font></p></li><li><p align="left"> + <font face="Arial, sans-serif"><font size="2">Check if all classes + (.jarfiles) are in class path. Do a '</font></font><font face="Courier New, monospace"><font size="2">jcp = javaclasspath</font></font><font face="Arial, sans-serif"><font size="2"> (-all)' (under unix/linux, do '</font></font><font face="Courier New, monospace"><font size="2">jcp + = javaclasspath; strsplit (jcp,\x94:\x94)</font></font><font face="Arial, sans-serif"><font size="2">' + (w/o quotes). See above under \x93REQUIRED SUPPORT SOFTWARE\x94 + what classes should be mentioned.</font></font></p><p align="left"> + <font face="Arial, sans-serif"><font size="2">If classes (.jar files) + ar</font></font><font face="Arial, sans-serif"><font size="2">e</font></font><font face="Arial, sans-serif"><font size="2"> missing, download and put them somewhere and add them to the javaclass path with their fully qualified pathname (in quotes) using - </FONT></FONT><FONT FACE="Courier New, monospace"><FONT SIZE=2>javaaddpath()</FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>.</FONT></FONT></OL> -<DL> - <DT><P><BR> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2>Once all classes + </font></font><font face="Courier New, monospace"><font size="2">javaaddpath()</font></font><font face="Arial, sans-serif"><font size="2">.</font></font></p></li></ol> + <p><font face="Arial, sans-serif"><font size="2">Once all classes are present and in the javaclasspath, the ods interfaces should just work. The only remaining showstoppers are insufficient write privileges for the working directory, a wrecked up octave or some - other problems outside octave.</FONT></FONT><DT><P> - <BR> -</DL> -<OL START=4> - <LI><P ALIGN=LEFT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>Try - opening an ods file: </FONT></FONT> - <P ALIGN=LEFT><FONT FACE="Courier New, monospace"><FONT SIZE=2>ods1 - = odsopen ('test.ods', 1, 'otk')</FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>. + other problems outside octave.</font></font></p> +<ol start="4"> + <li><p align="left"><font face="Arial, sans-serif"><font size="2">Try + opening an ods file: </font></font> + </p><p align="left"><font face="Courier New, monospace"><font size="2">ods1 + = odsopen ('test.ods', 1, 'otk')</font></font><font face="Arial, sans-serif"><font size="2">. If this works and ods1 is a struct with various fields containing - objects, ODF toolkit interface (OTK) works. Do an </FONT></FONT><FONT FACE="Courier New, monospace"><FONT SIZE=2>ods1 - = odsclose (ods1)</FONT></FONT> <FONT FACE="Arial, sans-serif"><FONT SIZE=2>to - close the file.</FONT></FONT><P ALIGN=LEFT> - <FONT FACE="Courier New, monospace"><FONT SIZE=2>ods2 = odsopen - ('test.ods', 1, 'jod')</FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>. + objects, ODF toolkit interface (OTK) works. Do an </font></font><font face="Courier New, monospace"><font size="2">ods1 + = odsclose (ods1)</font></font> <font face="Arial, sans-serif"><font size="2">to + close the file.</font></font></p><p align="left"> + <font face="Courier New, monospace"><font size="2">ods2 = odsopen + ('test.ods', 1, 'jod')</font></font><font face="Arial, sans-serif"><font size="2">. If this works and ods2 is a struct with various fields containing - objects, jOpenDocument interface (JOD) works as well. Do </FONT></FONT><FONT FACE="Courier New, monospace"><FONT SIZE=2>ods2 - = odsclose (ods2)</FONT></FONT> <FONT FACE="Arial, sans-serif"><FONT SIZE=2>to - close the file.</FONT></FONT></OL> -<DL> - <DT><P><BR> - <DT><P><BR> -</DL> -<P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=4><U><B>DEVELOPMENT</B></U></FONT></FONT><DL> - <DT><P> - <BR> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2>As with the Excel + objects, jOpenDocument interface (JOD) works as well. Do </font></font><font face="Courier New, monospace"><font size="2">ods2 + = odsclose (ods2)</font></font> <font face="Arial, sans-serif"><font size="2">to + close the file.</font></font></p></li></ol> + <p><br> +</p> +<p align="center"><font face="Arial, sans-serif"><font size="4"><u><b>DEVELOPMENT</b></u></font></font></p> + <p><font face="Arial, sans-serif"><font size="2">As with the Excel r/w stuff, adding new interfaces should be easy and straightforward. - Add relevant stanzas in <B>odsopen</B>, <B>odsclose, odsfinfo</B> & - <B>getusedrange</B> and add new subfunctions (for the real work) to - <B>getusedrange_</B><INTF>, <B>oct2ods</B> and <B>ods2oct</B>.</FONT></FONT><DT><P> - <BR> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2>Suggestions for - future development:</FONT></FONT></DL> -<UL> - <LI><P ALIGN=LEFT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>Reliable and easy ODS - write support (maybe when jOpenDocument is more mature)</FONT></FONT><LI><P ALIGN=LEFT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>Speeding up (ODS is 10 X + Add relevant stanzas in <b>odsopen</b>, <b>odsclose, odsfinfo</b> & + <b>getusedrange</b> and add new subfunctions (for the real work) to + <b>getusedrange_</b><INTF>, <b>oct2ods</b> and <b>ods2oct</b>.</font></font></p><p><font face="Arial, sans-serif"><font size="2">Suggestions for + future development:</font></font></p> + <ul><li><font face="Arial, sans-serif"><font size="2">Reliable and easy ODS + write support (maybe when jOpenDocument is more mature)</font></font></li></ul><ul><li><p align="left"> + <font face="Arial, sans-serif"><font size="2">Speeding up (ODS is 10 X slower than e.g. OOXML !!!). jOpenDocument is much faster but still - immature</FONT></FONT><LI><P ALIGN=LEFT> - “<FONT FACE="Arial, sans-serif"><FONT SIZE=2>Passing function - handle” a la Matlab's </FONT></FONT><FONT FACE="Arial, sans-serif"><FONT SIZE=2><B>xlsread</B></FONT></FONT><LI><P ALIGN=LEFT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>Adding styles (borders, - cell lay-out, font, etc.)</FONT></FONT></UL> -<DL> - <DT><P><BR> - <DT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>Some notes on the - choice for Java:</FONT></FONT></DL> -<OL> - <LI> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>It saves a LOT of + immature</font></font></p></li><li><p align="left"> + \x93<font face="Arial, sans-serif"><font size="2">Passing function + handle\x94 a la Matlab's </font></font><font face="Arial, sans-serif"><font size="2"><b>xlsread</b></font></font></p></li><li><p align="left"> + <font face="Arial, sans-serif"><font size="2">Adding styles (borders, + cell lay-out, font, etc.)</font></font></p></li></ul> + <font face="Arial, sans-serif"><font size="2">Some notes on the + choice for Java:</font></font> +<ol> + <li> + <font face="Arial, sans-serif"><font size="2">It saves a LOT of development time to use ready-baked Java classes rather than developing your own routines and thus effectively reinvent the - wheel.</FONT></FONT><LI> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>A BIG advantage is that - a Java-based solution is platform-independent (“portable”).</FONT></FONT><LI> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>But Java is known to be + wheel.</font></font></li><li> + <font face="Arial, sans-serif"><font size="2">A BIG advantage is that + a Java-based solution is platform-independent (\x93portable\x94).</font></font></li><li> + <font face="Arial, sans-serif"><font size="2">But Java is known to be not very conservative with resources, especially not when processing - XML-based formats.</FONT></FONT></OL> -<DL> - <DT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>So Java is a + XML-based formats.</font></font></li></ol> +<dl> + <dt><font face="Arial, sans-serif"><font size="2">So Java is a compromise between portability and rapid development time versus - capacity (and speed).</FONT></FONT><DT> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>But IMO data sets larger - than 5.10<SUP>5</SUP> cells should not be kept in spreadsheets - anyway. Use real databases for such data sets.</FONT></FONT><DT> - <BR> - <DT><FONT FACE="Arial, sans-serif"><FONT SIZE=2><B>ODFDOM versions</B></FONT></FONT><DT> - <BR> - <DT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>I have tried various + capacity (and speed).</font></font></dt><dt> + <font face="Arial, sans-serif"><font size="2">But IMO data sets larger + than 5.10<sup>5</sup> cells should not be kept in spreadsheets + anyway. Use real databases for such data sets.</font></font></dt><dt> + <br> + </dt><dt><font face="Arial, sans-serif"><font size="2"><b>ODFDOM versions</b></font></font></dt><dt> + <br> + </dt><dt><font face="Arial, sans-serif"><font size="2">I have tried various odfdom version. As to 0.8 & 0.8.5, while the API has been simplified enormously (finally one can address cells by spreadsheet address rather than find out yourself by parsing the table-column/-row/-cell structure), many irrecoverable bugs have - been introduced :-(( </FONT></FONT> - <DT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>In addition - processing ODS files became significantly slower (up to 7 times!).</FONT></FONT><DT> - <BR> - <DT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>End of August 2010 I - have implemented support for odfdom-0.8.6.jar – that version + been introduced :-(( </font></font> + </dt><dt><font face="Arial, sans-serif"><font size="2">In addition + processing ODS files became significantly slower (up to 7 times!).</font></font></dt><dt> + <br> + </dt><dt><font face="Arial, sans-serif"><font size="2">End of August 2010 I + have implemented support for odfdom-0.8.6.jar \x96 that version is at last sufficiently reliable to use. The few remaining bugs and limitations could easily be worked around by diving in the older - TableTable API.</FONT></FONT><DT> - <BR> - <DT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>So at the moment - (November 2010 = last I looked) only odfdom versions <B>0.7.5</B> - and <B>0.8.6</B> are supported.</FONT></FONT><DT> - <BR> - <DT><FONT FACE="Arial, sans-serif"><FONT SIZE=2>If you want to - experiment with odfdom 0.8 & 0.8.5, you can try:</FONT></FONT></DL> -<UL> - <LI> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>odsopen.m (revision - 7157)</FONT></FONT><LI> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>ods2oct.m (revision - 7158)</FONT></FONT><LI> - <FONT FACE="Arial, sans-serif"><FONT SIZE=2>oct2ods.m (revision - 7159)</FONT></FONT></UL> -<DL> - <DT><BR> - <DT><P><FONT FACE="Arial, sans-serif"><FONT SIZE=2>Enjoy!</FONT></FONT><DD> - <BR> - <DD><P ALIGN=CENTER><FONT FACE="Arial, sans-serif"><FONT SIZE=2>Philip - Nienhuis, November 14, 2010</FONT></FONT><DD><P ALIGN=CENTER> - <BR> -</DL> -</BODY> -</HTML> \ No newline at end of file + TableTable API.</font></font></dt><dt> + <font face="Arial, sans-serif"><font size="2">So at the moment + (January 2011 = last I looked) only odfdom versions <b>0.7.5</b> + and <b>0.8.6</b> are supported. Ihaven't tried the odfdom-0.8.7 snapshot.</font></font></dt><dt> + <br> + </dt><dt><font face="Arial, sans-serif"><font size="2">If you want to + experiment with odfdom 0.8 & 0.8.5, you can try:</font></font></dt></dl> +<ul> + <li> + <font face="Arial, sans-serif"><font size="2">odsopen.m (revision + 7157)</font></font></li><li> + <font face="Arial, sans-serif"><font size="2">ods2oct.m (revision + 7158)</font></font></li><li> + <font face="Arial, sans-serif"><font size="2">oct2ods.m (revision + 7159)</font></font></li></ul> + <p><font face="Arial, sans-serif"><font size="2">Enjoy!</font></font></p><p align="center"><font face="Arial, sans-serif"><font size="2">Philip + Nienhuis, February 16, 2011</font></font></p><dl><dd><p align="center"> + <br> +</p></dd></dl> +</body></html> \ No newline at end of file Modified: trunk/octave-forge/main/io/doc/READ-XLS.html =================================================================== --- trunk/octave-forge/main/io/doc/READ-XLS.html 2011-02-15 22:02:21 UTC (rev 8119) +++ trunk/octave-forge/main/io/doc/READ-XLS.html 2011-02-16 21:52:20 UTC (rev 8120) @@ -1,591 +1,529 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> -<HTML> -<HEAD> - <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252"> - <TITLE></TITLE> - <META NAME="GENERATOR" CONTENT="OpenOffice.org 3.2 (Win32)"> - <META NAME="AUTHOR" CONTENT="Philip Nienhuis"> - <META NAME="CREATED" CONTENT="20091211;17230700"> - <META NAME="CHANGEDBY" CONTENT="Philip Nienhuis"> - <META NAME="CHANGED" CONTENT="20101114;18083900"> - <META NAME="Info 1" CONTENT=""> - <META NAME="Info 2" CONTENT=""> - <META NAME="Info 3" CONTENT=""> - <META NAME="Info 4" CONTENT=""> - <META NAME="CHANGEDBY" CONTENT="Philip N... [truncated message content] |