[prev in list] [next in list] [prev in thread] [next in thread] 

List:       poi-dev
Subject:    cvs commit: jakarta-poi/src/documentation/content/xdocs poi-ruby.xml book.xml
From:       avik () apache ! org
Date:       2005-02-18 6:36:09
Message-ID: 20050218063609.82714.qmail () minotaur ! apache ! org
[Download RAW message or body]

avik        2005/02/17 22:36:09

  Modified:    src/documentation skinconf.xml
               src/documentation/content/xdocs book.xml
  Added:       src/documentation/content/xdocs poi-ruby.xml
  Log:
  docs for ruby bindings
  
  Revision  Changes    Path
  1.10      +1 -1      jakarta-poi/src/documentation/skinconf.xml
  
  Index: skinconf.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-poi/src/documentation/skinconf.xml,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- skinconf.xml	9 Apr 2004 13:05:14 -0000	1.9
  +++ skinconf.xml	18 Feb 2005 06:36:09 -0000	1.10
  @@ -99,7 +99,7 @@
     <host-logo></host-logo>
   
     <!-- The following are used to construct a copyright statement -->
  -  <year>2002-2003</year>
  +  <year>2002-2005</year>
     <vendor>The Apache Software Foundation.</vendor>
   
     <!-- Some skins use this to form a 'breadcrumb trail' of links. If you don't
  
  
  
  1.18      +2 -0      jakarta-poi/src/documentation/content/xdocs/book.xml
  
  Index: book.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-poi/src/documentation/content/xdocs/book.xml,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- book.xml	1 Jan 2005 06:59:32 -0000	1.17
  +++ book.xml	18 Feb 2005 06:36:09 -0000	1.18
  @@ -21,6 +21,7 @@
           <menu-item label="HSSF" href="hssf/index.html"/>
           <menu-item label="HWPF" href="hwpf/index.html"/>
           <menu-item label="HPSF" href="hpsf/index.html"/>
  +	<menu-item label="POI-Ruby" href="poi-ruby.html"/>
           <menu-item label="POI-Utils" href="utils/index.html"/>
           <menu-item label="Download" href="ext:download"/>
       </menu>
  @@ -51,6 +52,7 @@
           <menu-item label="Guidelines" href="trans/guidelines.html"/>
           <menu-item label="German (DE)" href="trans/de/index.html"/>
           <menu-item label="Spanish (ES)" href="trans/es/index.html"/>
  +	<menu-item label="French (FR)" href="trans/fr/index.html"/>
           <menu-item label="Japanese (Web)" \
                href="http://jakarta.terra-intl.com/poi/"/>
           <menu-item label="Korean (Web)" \
href="http://jakarta.apache-korea.org/poi/"/>  </menu>
  
  
  
  1.1                  jakarta-poi/src/documentation/content/xdocs/poi-ruby.xml
  
  Index: poi-ruby.xml
  ===================================================================
  <?xml version="1.0" encoding="UTF-8"?>
  <!-- Copyright (C) 2005 The Apache Software Foundation. All rights reserved. -->
  <!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" \
"./dtd/document-v11.dtd">  
  <document>
    <header>
      <title>POI Ruby Bindings</title>
      <authors>
        <person id="AS" name="Avik Sengupta" email="avik@apache.org"/>
      </authors>
    </header>
    
    <body>
      <section><title>Intro</title>
        <p>The POI library can now be compiled as a Ruby extension, allowing the API \
                to be called from
        Ruby language programs. Ruby users can therefore read and write OLE2 \
documents, such as Excel files  with ease
        </p>
        <p>The bindings are generated by compiling POI with <link \
                href="http://gcc.gnu.org/java/">gcj</link>,
        and generating the Ruby wrapper using <link \
                href="http://www.swig.org">SWIG</link>.  The aim is the keep
        the POI api as-is. However, where java standard library objects are used, an \
                effort is made to transform them smoothly 
        into  Ruby objects. Therefore, where the POI API takes an OutputStream, you \
                can pass an IO object. Where the POI works
        java.util.Date or java.util.Calendar object, you can work with a Ruby Time \
object. </p>  </section>
  
  
        <section><title>Getting Started</title>
          <section><title>Pre-Requisites</title>
  	<p>The bindings have been developed with GCC 3.4.3 and Ruby 1.8.2. You are \
unlikely to get correct results with  versions of GCC prior to 3.4 or versions of \
Ruby prior to 1.8. To compile the Ruby extension, you must have   GCC (compiled with \
java language support), Ruby development headers, and SWIG. To run, you will need \
Ruby (obviously!) and  <em>libgcj </em>, presumably from the same version of GCC with \
which you compiled.    </p> 
  	</section>
  	<section><title>CVS</title>
  	<p>
  	The POI-Ruby module sits under the POI <link \
href="http://jakarta.apache.org/site/cvsindex.html">CVS</link> in the \
<em>src/contrib/poi-ruby</em> directory. Running <em>make</em>  inside that directory \
will create a loadable ruby extention <em>poi4r.so</em> in the release subdirectory. \
Tests   are in the <em>tests/</em> subdirectory, and should be run from the \
<em>poi-ruby</em> directory. Please read the tests to figure out the usage.  </p>
  	<p>Note that the makefile, though designed to work accross Linux/OS X/Cygwin, has \
been tested only on linux.   There are likely to be issues on other platform; fixes \
gratefully accepted! </p>  </section>
        <section><title>Binary</title>
  	<p>A version of poi4r.so is available <link \
href="http://www.apache.org/~avik/dist/poi4r.so">here</link>. Its been compiled on a \
linux box  with GCC 3.4.3 and Ruby 1.8.2. It dynamically links to libgcj. No \
guarantees about working on any other box.  </p>  </section>
        </section>
        
  
  
  
      <section>
        <title>Usage</title>
        <p>The following ruby code shows some of the things you can do with POI in \
Ruby</p>  <source>
  	h=Poi4r::HSSFWorkbook.new
  	#Test Sheet Creation
  	s=h.createSheet("Sheet1")
  	
  	#Test setting cell values
  	s=h.getSheetAt(0)
  	r=s.createRow(0)
  	c=r.createCell(0)
  	c.setCellValue(1.5)
  	
  	c=r.createCell(1)
  	c.setCellValue("Ruby")
  	
  	#Test styles
  	st = h.createCellStyle()
  	c=r.createCell(2)
  	st.setAlignment(Poi4r::HSSFCellStyle.ALIGN_CENTER)
  	c.setCellStyle(st)
  	c.setCellValue("centr'd")
  	
  	#Date handling
  	c=r.createCell(3)
  	t1=Time.now
  	c.setCellValue(Time.now)
  	t2= c.getDateCellValue().gmtime
  	
  	st=h.createCellStyle();
  	st.setDataFormat(Poi4r::HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"))
  	c.setCellStyle(st)
  	
  	#Formulas
  	c=r.createCell(4)
  	c.setCellFormula("A1*2")
  	c.getCellFormula()
  	
  	#Writing
  	h.write(File.new("test.xls","w"))
        </source>
        <p>  The <em>tc_base_tests.rb</em> file in the <em>tests</em> sub directory \
                of the source distribution
        contains examples of simple uses of the API. The <link \
                href="hssf/quick-guide.html">quick quide </link> is the best
        place to learn HSSF API use. (Note however that none of the Drawing features \
                are implemented in the Ruby binding.)
         See also the <link href="apidocs/overview-summary.html">POI API \
documentation</link>  for more details.   </p>
      </section>
  
      <section>
        <title>Future Directions</title>
        	<section><title>TODO's</title>
      	<ul>
  	<li>Implement support for reading Excel files (easy)</li>
  	<li>Expose POIFS API to read raw OLE2 files from Ruby</li>
  	<li>Expose HPSF API to read property streams </li>  
  	<li>Tests... Tests... Tests...</li> 
  	</ul>
  	</section>
  	<section><title>Limitations</title>
      	<ul>
  	<li>Check operations in 64bit machines - Java primitive types are fixed \
irrespective of machine type, unlike C/C++ types. The wrapping code   that converts \
C/C++ primitive types to/from Java types is making assumptions on type sizes that MAY \
be incorrect on wide architectures. </li>  <li>The current implementation is with the \
                POI 2.0 release. The 2.5 release adds support for Excel drawing \
                primitives, and 
        thus has a dependency on java AWT. Since AWT is not very mature in gcj, \
                leaving it out seemed to be the safer option.</li>
        <li>Packaging - The current make file makes no effort to install the \
                extension into the standard ruby directories. This should probably be
        packaged as a <link href="http://www.rubygems.org">gem</link>.</li>
  	</ul>
  	</section>
        
        </section>
      
    </body>
    <footer>
      <legal>
        Copyright 2005 The Apache Software Foundation or its licensors, as \
applicable.  $Revision: 1.1 $ $Date: 2005/02/18 06:36:09 $
      </legal>
    </footer>
  </document>
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: poi-dev-unsubscribe@jakarta.apache.org
Mailing List:    http://jakarta.apache.org/site/mail2.html#poi
The Apache Jakarta POI Project: http://jakarta.apache.org/poi/


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic