mirror of
https://github.com/apache/poi.git
synced 2026-02-27 20:40:08 +08:00
670 lines
23 KiB
HTML
670 lines
23 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<html>
|
|
<head>
|
|
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
|
<meta content="Apache Forrest" name="Generator">
|
|
<meta name="Forrest-version" content="0.9">
|
|
<meta name="Forrest-skin-name" content="pelt">
|
|
<title>POI Ruby Bindings</title>
|
|
<link type="text/css" href="../skin/basic.css" rel="stylesheet">
|
|
<link media="screen" type="text/css" href="../skin/screen.css" rel="stylesheet">
|
|
<link media="print" type="text/css" href="../skin/print.css" rel="stylesheet">
|
|
<link type="text/css" href="../skin/profile.css" rel="stylesheet">
|
|
<script src="../skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="../skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="../skin/fontsize.js" language="javascript" type="text/javascript"></script>
|
|
<link rel="shortcut icon" href="../images/favicon.ico">
|
|
</head>
|
|
<body onload="init()">
|
|
<script type="text/javascript">ndeSetTextSize();</script>
|
|
<div id="top">
|
|
<!--+
|
|
|breadtrail
|
|
+-->
|
|
<div class="breadtrail">
|
|
<a href="https://www.apache.org">Apache Software Foundation</a> > <a href="https://poi.apache.org">Apache POI</a><script src="../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script>
|
|
</div>
|
|
<!--+
|
|
|header
|
|
+-->
|
|
<div class="header">
|
|
<!--+
|
|
|start group logo
|
|
+-->
|
|
<div class="grouplogo">
|
|
<a href="https://www.apache.org"><img class="logoImage" alt="Apache Software Foundation" src="../images/group-logo.png" title="The Apache Software Foundation is a cornerstone of the modern Open Source software ecosystem – supporting some of the most widely used and important software solutions powering today's Internet economy."></a>
|
|
</div>
|
|
<!--+
|
|
|end group logo
|
|
+-->
|
|
<!--+
|
|
|start Project Logo
|
|
+-->
|
|
<div class="projectlogo">
|
|
<a href="https://poi.apache.org"><img class="logoImage" alt="Apache POI" src="../images/project-header.png" title="Apache POI is well-known in the Java field as a library for reading and writing Microsoft Office file formats, such as Excel, PowerPoint, Word, Visio, Publisher and Outlook. It supports both the older (OLE2) and new (OOXML - Office Open XML) formats."></a>
|
|
</div>
|
|
<!--+
|
|
|end Project Logo
|
|
+-->
|
|
<!--+
|
|
|start Search
|
|
+-->
|
|
<div class="searchbox">
|
|
<form action="https://www.google.com/search" method="get" class="roundtopsmall">
|
|
<input value="poi.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google">
|
|
<input name="Search" value="Search" type="submit">
|
|
</form>
|
|
</div>
|
|
<!--+
|
|
|end search
|
|
+-->
|
|
<!--+
|
|
|start Tabs
|
|
+-->
|
|
<ul id="tabs">
|
|
<li>
|
|
<a class="unselected" href="../index.html">Home</a>
|
|
</li>
|
|
<li>
|
|
<a class="unselected" href="../help/index.html">Help</a>
|
|
</li>
|
|
<li>
|
|
<a class="unselected" href="../components/index.html">Component APIs</a>
|
|
</li>
|
|
<li>
|
|
<a class="unselected" href="../devel/index.html">Getting Involved</a>
|
|
</li>
|
|
</ul>
|
|
<!--+
|
|
|end Tabs
|
|
+-->
|
|
</div>
|
|
</div>
|
|
<div id="main">
|
|
<div id="publishedStrip">
|
|
<!--+
|
|
|start Subtabs
|
|
+-->
|
|
<div id="level2tabs"></div>
|
|
<!--+
|
|
|end Endtabs
|
|
+-->
|
|
<script type="text/javascript"><!--
|
|
document.write("Last Published: " + document.lastModified);
|
|
// --></script>
|
|
</div>
|
|
<!--+
|
|
|breadtrail
|
|
+-->
|
|
<div class="breadtrail">
|
|
|
|
|
|
</div>
|
|
<!--+
|
|
|start Menu, mainarea
|
|
+-->
|
|
<!--+
|
|
|start Menu
|
|
+-->
|
|
<div id="menu">
|
|
<div onclick="SwitchMenu('menu_1.1', '../skin/')" id="menu_1.1Title" class="menutitle">Overview</div>
|
|
<div id="menu_1.1" class="menuitemgroup">
|
|
<div class="menuitem">
|
|
<a href="../index.html">Home</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../download.html">Download</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../changes.html">Changelog</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../apidocs/index.html">Javadocs</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../text-extraction.html">Text Extraction</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../encryption.html">Encryption support</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../security.html">Secure processing</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../casestudies.html">Case Studies</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../related-projects.html">Related projects</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../legal.html">Legal</a>
|
|
</div>
|
|
</div>
|
|
<div onclick="SwitchMenu('menu_1.2', '../skin/')" id="menu_1.2Title" class="menutitle">Apache Wide</div>
|
|
<div id="menu_1.2" class="menuitemgroup">
|
|
<div class="menuitem">
|
|
<a href="https://www.apache.org/">Apache Software Foundation</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="https://www.apache.org/licenses/">License</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="https://www.apache.org/security/">Security</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy</a>
|
|
</div>
|
|
</div>
|
|
<div onclick="SwitchMenu('menu_1.3', '../skin/')" id="menu_1.3Title" class="menutitle">Component APIs</div>
|
|
<div id="menu_1.3" class="menuitemgroup">
|
|
<div class="menuitem">
|
|
<a href="../components/index.html">Overview</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../apidocs/index.html">Javadocs</a>
|
|
</div>
|
|
<div onclick="SwitchMenu('menu_1.3.3', '../skin/')" id="menu_1.3.3Title" class="menutitle">Excel (HSSF/XSSF)</div>
|
|
<div id="menu_1.3.3" class="menuitemgroup">
|
|
<div class="menuitem">
|
|
<a href="../components/spreadsheet/index.html">Overview</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/spreadsheet/quick-guide.html">Quick Guide</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/spreadsheet/how-to.html">HOWTO</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/spreadsheet/converting.html">HSSF to SS Converting</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/spreadsheet/formula.html">Formula Support</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/spreadsheet/eval.html">Formula Evaluation</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/spreadsheet/eval-devguide.html">Eval Dev Guide</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/spreadsheet/examples.html">Examples</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/spreadsheet/use-case.html">Use Case</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/spreadsheet/diagrams.html">Pictorial Docs</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/spreadsheet/limitations.html">Limitations</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/spreadsheet/user-defined-functions.html">User Defined Functions</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/spreadsheet/excelant.html">ExcelAnt Tests</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/spreadsheet/hacking-hssf.html">Hacking HSSF</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/spreadsheet/record-generator.html">Record Generator</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/spreadsheet/chart.html">Charts</a>
|
|
</div>
|
|
</div>
|
|
<div onclick="SwitchMenu('menu_1.3.4', '../skin/')" id="menu_1.3.4Title" class="menutitle">PowerPoint (HSLF/XSLF)</div>
|
|
<div id="menu_1.3.4" class="menuitemgroup">
|
|
<div class="menuitem">
|
|
<a href="../components/slideshow/index.html">Overview</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/slideshow/quick-guide.html">Quick Guide</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/slideshow/how-to-shapes.html">HSLF Cookbook</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/slideshow/xslf-cookbook.html">XSLF Cookbook</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/slideshow/ppt-wmf-emf-renderer.html">Render SL/WMF/EMF</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/slideshow/ppt-file-format.html">PPT File Format</a>
|
|
</div>
|
|
</div>
|
|
<div onclick="SwitchMenu('menu_1.3.5', '../skin/')" id="menu_1.3.5Title" class="menutitle">Word (HWPF/XWPF)</div>
|
|
<div id="menu_1.3.5" class="menuitemgroup">
|
|
<div class="menuitem">
|
|
<a href="../components/document/index.html">Overview</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/document/quick-guide.html">HWPF Quick Guide</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/document/quick-guide-xwpf.html">XWPF Quick Guide</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/document/docoverview.html">HWPF Format</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/document/projectplan.html">HWPF Project plan</a>
|
|
</div>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/hsmf/index.html">Outlook (HSMF)</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/diagram/index.html">Visio (HDGF+XDGF)</a>
|
|
</div>
|
|
<div onclick="SwitchMenu('menu_1.3.8', '../skin/')" id="menu_1.3.8Title" class="menutitle">Publisher (HPBF)</div>
|
|
<div id="menu_1.3.8" class="menuitemgroup">
|
|
<div class="menuitem">
|
|
<a href="../components/hpbf/index.html">Overview</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/hpbf/file-format.html">File Format</a>
|
|
</div>
|
|
</div>
|
|
<div onclick="SwitchMenu('menu_1.3.9', '../skin/')" id="menu_1.3.9Title" class="menutitle">OLE2 Filesystem (POIFS)</div>
|
|
<div id="menu_1.3.9" class="menuitemgroup">
|
|
<div class="menuitem">
|
|
<a href="../components/poifs/index.html">Overview</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/poifs/how-to.html">How To</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/poifs/embeded.html">Embedded Documents</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/poifs/fileformat.html">File System Documentation</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/poifs/usecases.html">Use Cases</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/poifs/design.html">Design</a>
|
|
</div>
|
|
</div>
|
|
<div onclick="SwitchMenu('menu_1.3.10', '../skin/')" id="menu_1.3.10Title" class="menutitle">OLE2 Document Props (HPSF)</div>
|
|
<div id="menu_1.3.10" class="menuitemgroup">
|
|
<div class="menuitem">
|
|
<a href="../components/hpsf/index.html">Overview</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/hpsf/how-to.html">How To</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/hpsf/thumbnails.html">Thumbnails</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/hpsf/internals.html">Internals</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/hpsf/todo.html">To Do</a>
|
|
</div>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/hmef/index.html">TNEF (HMEF) for winmail.dat</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/oxml4j/index.html">OpenXML4J (OOXML)</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/logging.html">Logging framework</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../components/configuration.html">Configuration</a>
|
|
</div>
|
|
</div>
|
|
<div onclick="SwitchMenu('menu_1.4', '../skin/')" id="menu_1.4Title" class="menutitle">Help</div>
|
|
<div id="menu_1.4" class="menuitemgroup">
|
|
<div class="menuitem">
|
|
<a href="../help/index.html">Mailing Lists</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../help/faq.html">FAQ</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="https://bz.apache.org/bugzilla/buglist.cgi?product=POI">Bug Database</a>
|
|
</div>
|
|
</div>
|
|
<div onclick="SwitchMenu('menu_1.5', '../skin/')" id="menu_1.5Title" class="menutitle">Getting Involved</div>
|
|
<div id="menu_1.5" class="menuitemgroup">
|
|
<div class="menuitem">
|
|
<a href="../devel/index.html">How To Build</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../devel/nightly.html">Nightly Builds</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../devel/subversion.html">Subversion Repository</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../devel/guidelines.html">Contribution Guidelines</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../devel/who.html">Who We Are</a>
|
|
</div>
|
|
<div onclick="SwitchMenu('menu_1.5.6', '../skin/')" id="menu_1.5.6Title" class="menutitle">Planning Documents</div>
|
|
<div id="menu_1.5.6" class="menuitemgroup">
|
|
<div class="menuitem">
|
|
<a href="../devel/plan/index.html">Overview</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../devel/plan/vision10.html">1.0 Vision</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../devel/plan/vision20.html">2.0 Vision</a>
|
|
</div>
|
|
</div>
|
|
<div onclick="SwitchMenu('menu_1.5.7', '../skin/')" id="menu_1.5.7Title" class="menutitle">References</div>
|
|
<div id="menu_1.5.7" class="menuitemgroup">
|
|
<div class="menuitem">
|
|
<a href="../devel/references/index.html">Overview</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../devel/references/logocontest.html">Logo Submissions</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="https://sc.openoffice.org/excelfileformat.pdf">XLS spec [PDF]</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="https://xml.apache.org/cocoon/">Apache Cocoon</a>
|
|
</div>
|
|
</div>
|
|
<div onclick="SwitchMenu('menu_1.5.8', '../skin/')" id="menu_1.5.8Title" class="menutitle">Resolutions</div>
|
|
<div id="menu_1.5.8" class="menuitemgroup">
|
|
<div class="menuitem">
|
|
<a href="../devel/resolutions/index.html">Overview</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../devel/resolutions/res001.html">Minimal Coding Standards</a>
|
|
</div>
|
|
</div>
|
|
<div onclick="SwitchMenu('menu_1.5.9', '../skin/')" id="menu_1.5.9Title" class="menutitle">History</div>
|
|
<div id="menu_1.5.9" class="menuitemgroup">
|
|
<div class="menuitem">
|
|
<a href="../devel/history/index.html">The early years</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../devel/history/changes-3x.html">Changelog 3.x</a>
|
|
</div>
|
|
<div class="menuitem">
|
|
<a href="../devel/history/changes-pre3x.html">Changelog 0-2.x</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="credit"></div>
|
|
<div id="roundbottom">
|
|
<img style="display: none" class="corner" height="15" width="15" alt="" src="../skin/images/rc-b-l-15-1body-2menu-3menu.png"></div>
|
|
<!--+
|
|
|alternative credits
|
|
+-->
|
|
<div id="credit2">
|
|
<a href="https://donate.apache.org/"><img border="0" title="Support Apache" alt="Support Apache - logo" src="../images/support-asf.png" style="width: 125px;height: 125px;"></a><a href="https://www.apache.org/foundation/press/kit/#poweredby"><img border="0" title="powered by POI" alt="powered by POI - logo" src="../images/poweredby-poi-logo.png" style="width: 125px;height: 125px;"></a>
|
|
</div>
|
|
</div>
|
|
<!--+
|
|
|end Menu
|
|
+-->
|
|
<!--+
|
|
|start content
|
|
+-->
|
|
<div id="content">
|
|
<h1>POI Ruby Bindings</h1>
|
|
<div id="front-matter"></div>
|
|
|
|
<a name="Intro"></a>
|
|
<h2 class="boxed">Intro</h2>
|
|
<div class="section">
|
|
<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 <a href="https://gcc.gnu.org/java/">gcj</a>,
|
|
and generating the Ruby wrapper using <a href="https://www.swig.org">SWIG</a>. 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>
|
|
</div>
|
|
|
|
|
|
|
|
<a name="Getting+Started"></a>
|
|
<h2 class="boxed">Getting Started</h2>
|
|
<div class="section">
|
|
<a name="Pre-Requisites"></a>
|
|
<h3 class="boxed">Pre-Requisites</h3>
|
|
<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>
|
|
<a name="Subversion"></a>
|
|
<h3 class="boxed">Subversion</h3>
|
|
<p>
|
|
The POI-Ruby module sits under the POI <a href="https://github.com/apache/poi/tree/trunk/src/contrib/poi-ruby/">Subversion</a>
|
|
<a href="https://github.com/apache/poi/tree/trunk/src/contrib/poi-ruby/">(viewvc)</a>. Running <em>make</em>
|
|
inside that directory will create a loadable ruby extension <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 across Linux/OS X/Cygwin, has been tested only on linux.
|
|
There are likely to be issues on other platform; fixes gratefully accepted! </p>
|
|
<a name="Binary"></a>
|
|
<h3 class="boxed">Binary</h3>
|
|
<p>A version of poi4r.so is available <a href="https://www.apache.org/~avik/dist/poi4r.so">here</a> (broken 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>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<a name="Usage"></a>
|
|
<h2 class="boxed">Usage</h2>
|
|
<div class="section">
|
|
<p>The following ruby code shows some of the things you can do with POI in Ruby</p>
|
|
<div class="code">
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody"></span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody">h=Poi4r::HSSFWorkbook.new</span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody">#Test Sheet Creation</span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody">s=h.createSheet("Sheet1")</span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody"></span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody">#Test setting cell values</span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody">s=h.getSheetAt(0)</span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody">r=s.createRow(0)</span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody">c=r.createCell(0)</span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody">c.setCellValue(1.5)</span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody"></span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody">c=r.createCell(1)</span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody">c.setCellValue("Ruby")</span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody"></span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody">#Test styles</span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody">st = h.createCellStyle()</span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody">c=r.createCell(2)</span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody">st.setAlignment(Poi4r::HSSFCellStyle.ALIGN_CENTER)</span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody">c.setCellStyle(st)</span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody">c.setCellValue("centr'd")</span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody"></span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody">#Date handling</span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody">c=r.createCell(3)</span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody">t1=Time.now</span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody">c.setCellValue(Time.now)</span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody">t2= c.getDateCellValue().gmtime</span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody"></span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody">st=h.createCellStyle();</span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody">st.setDataFormat(Poi4r::HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"))</span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody">c.setCellStyle(st)</span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody"></span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody">#Formulas</span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody">c=r.createCell(4)</span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody">c.setCellFormula("A1*2")</span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody">c.getCellFormula()</span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody"></span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody">#Writing</span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody">h.write(File.new("test.xls","w"))</span>
|
|
</div>
|
|
<div class="codeline">
|
|
<span class="lineno"></span><span class="codebody"> </span>
|
|
</div>
|
|
</div>
|
|
<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 <a href="spreadsheet/quick-guide.html">quick guide </a> 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 <a href="../apidocs/index.html">POI API documentation</a> for more details.
|
|
</p>
|
|
</div>
|
|
|
|
|
|
<a name="Future+Directions"></a>
|
|
<h2 class="boxed">Future Directions</h2>
|
|
<div class="section">
|
|
<a name="TODO%27s"></a>
|
|
<h3 class="boxed">TODO's</h3>
|
|
<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>
|
|
<a name="Limitations"></a>
|
|
<h3 class="boxed">Limitations</h3>
|
|
<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 <a href="https://www.rubygems.org">gem</a>.</li>
|
|
|
|
</ul>
|
|
</div>
|
|
|
|
|
|
<p align="right">
|
|
<font size="-2">by Avik Sengupta</font>
|
|
</p>
|
|
</div>
|
|
<!--+
|
|
|end content
|
|
+-->
|
|
<div class="clearboth"> </div>
|
|
</div>
|
|
<div id="footer">
|
|
<!--+
|
|
|start bottomstrip
|
|
+-->
|
|
<div class="lastmodified">
|
|
<script type="text/javascript"><!--
|
|
document.write("Last Published: " + document.lastModified);
|
|
// --></script>
|
|
</div>
|
|
<div class="copyright">
|
|
Copyright ©
|
|
2001-2025 <a href="https://www.apache.org/">The Apache Software Foundation</a>
|
|
<br>
|
|
Apache, Apache POI, the Apache feather logo, and the Apache POI
|
|
logos are trademarks of The Apache Software Foundation.
|
|
</div>
|
|
<div id="feedback">
|
|
Send feedback about the website to:
|
|
<a id="feedbackto" href="mailto:dev@poi.apache.org?subject=Feedback%C2%A0components/poi-ruby.html">dev@poi.apache.org</a>
|
|
</div>
|
|
<!--+
|
|
|end bottomstrip
|
|
+-->
|
|
</div>
|
|
</body>
|
|
</html>
|