OLE::Storage_Lite - Simple Class for OLE document interface. |
use OLE::Storage_Lite;
# Initialize.
# From a file my $oOl = OLE::Storage_Lite->new("some.xls");
# From a filehandle object use IO::File; my $oIo = new IO::File; $oIo->open("<iofile.xls"); binmode($oIo); my $oOl = OLE::Storage_Lite->new($oFile);
# Read data my $oPps = $oOl->getPpsTree(1);
# Save Data # To a File $oPps->save("kaba.xls"); #kaba.xls $oPps->save('-'); #STDOUT
# To a filehandle object my $oIo = new IO::File; $oIo->open(">iofile.xls"); bimode($oIo); $oPps->save($oIo);
=head1 DESCRIPTION
OLE::Storage_Lite allows you to read and write an OLE structured file.
OLE::Storage_Lite::PPS is a class representing PPS. OLE::Storage_Lite::PPS::Root, OLE::Storage_Lite::PPS::File and OLE::Storage_Lite::PPS::Dir are subclasses of OLE::Storage_Lite::PPS.
=head2 new()
Constructor.
$oOle = OLE::Storage_Lite->new($sFile);
Creates a OLE::Storage_Lite object for $sFile
. $sFile
must be a correct file name.
The new()
constructor also accepts a valid filehandle. Remember to binmode()
the filehandle first.
=head2 getPpsTree()
$oPpsRoot = $oOle->getPpsTree([$bData]);
Returns PPS as an OLE::Storage_Lite::PPS::Root object. Other PPS objects will be included as its children.
If $bData
is true, the objects will have data in the file.
=head2 getPpsSearch()
$oPpsRoot = $oOle->getPpsTree($raName [, $bData][, $iCase] );
Returns PPSs as OLE::Storage_Lite::PPS objects that has the name specified in $raName
array.
If $bData
is true, the objects will have data in the file.
If $iCase
is true, search is case insensitive.
=head2 getNthPps()
$oPpsRoot = $oOle->getNthPps($iNth [, $bData]);
Returns PPS as OLE::Storage_Lite::PPS
object specified number $iNth
.
If $bData
is true, the objects will have data in the file.
=head2 Asc2Ucs()
$sUcs2 = OLE::Storage_Lite::Asc2Ucs($sAsc>);
Utility function. Just adds 0x00 after every characters in $sAsc
.
=head2 Ucs2Asc()
$sAsc = OLE::Storage_Lite::Ucs2Asc($sUcs2);
Utility function. Just deletes 0x00 after words in $sUcs
.
=head1 OLE::Storage_Lite::PPS
OLE::Storage_Lite::PPS has these properties:
=head1 OLE::Storage_Lite::PPS::Root
OLE::Storage_Lite::PPS::Root has 2 methods.
new()
$oRoot = OLE::Storage_Lite::PPS::Root->new( $raTime1st, $raTime2nd, $raChild);
Constructor.
$raTime1st
, $raTime2nd
are array refs with ($iSec, $iMin, $iHour, $iDay, $iMon, $iYear).
$iSec means seconds, $iMin means minutes. $iHour means hours.
$iDay means day. $iMon is month -1. $iYear is year - 1900.
$raChild
is a array ref of children PPSs.
=head2 save()
$oRoot = $oRoot>->save( $sFile, $bNoAs);
Saves information into C<$sFile>. If C<$sFile> is '-', this will use STDOUT.
The new()
constructor also accepts a valid filehandle. Remember to binmode()
the filehandle first.
If $bNoAs
is defined, this function will use the No of PPSs for saving order.
If $bNoAs
is undefined, this will calculate PPS saving order.
=head1 OLE::Storage_Lite::PPS::Dir
OLE::Storage_Lite::PPS::Dir has 1 method.
new()
$oRoot = OLE::Storage_Lite::PPS::Dir->new( $sName, [, $raTime1st] [, $raTime2nd] [, $raChild>]);
Constructor.
$sName
is a name of the PPS.
$raTime1st
, $raTime2nd
is a array ref as
($iSec, $iMin, $iHour, $iDay, $iMon, $iYear).
$iSec means seconds, $iMin means minutes. $iHour means hours.
$iDay means day. $iMon is month -1. $iYear is year - 1900.
$raChild
is a array ref of children PPSs.
=head1 OLE::Storage_Lite::PPS::File
OLE::Storage_Lite::PPS::File has 3 method.
$oRoot = OLE::Storage_Lite::PPS::File->new($sName, $sData);
$sName
is name of the PPS.
$sData
is data of the PPS.
=head2 newFile()
$oRoot = OLE::Storage_Lite::PPS::File->newFile($sName, $sFile);
This function makes to use file handle for geting and storing data.
$sName
is name of the PPS.
If $sFile
is scalar, it assumes that is a filename.
If $sFile
is an IO::Handle object, it uses that specified handle.
If $sFile
is undef or '', it uses temporary file.
CAUTION: Take care $sFile
will be updated by append
method.
So if you want to use IO::Handle and append a data to it,
you should open the handle with ``r+''.
=head2 append()
$oRoot = $oPps->append($sData);
appends specified data to that PPS.
$sData
is appending data for that PPS.
=head1 CAUTION
A saved file with VBA (a.k.a Macros) by this module will not work correctly. However modules can get the same information from the file, the file occurs a error in application(Word, Excel ...).
=head1 DEPRECATED FEATURES
Older version of OLE::Storage_Lite
autovivified a scalar ref in the new()
constructors into a scalar filehandle. This functionality is still there for backwards compatibility but it is highly recommended that you do not use it. Instead create a filehandle (scalar or otherwise) and pass that in.
=head1 COPYRIGHT
The OLE::Storage_Lite module is Copyright (c) 2000,2001 Kawai Takanori. Japan. All rights reserved.
You may distribute under the terms of either the GNU General Public License or the Artistic License, as specified in the Perl README file.
=head1 ACKNOWLEDGEMENTS
First of all, I would like to acknowledge to Martin Schwartz and his module OLE::Storage.
=head1 AUTHOR
Kawai Takanori kwitknr@cpan.org
This module is currently maintained by John McNamara jmcnamara@cpan.org
=head1 SEE ALSO
OLE::Storage
Documentation for the OLE Compound document has been released by Microsoft under the Open Specification Promise. See http://www.microsoft.com/interop/docs/supportingtechnologies.mspx
The Digital Imaging Group have also detailed the OLE format in the JPEG2000 specification: see Appendix A of http://www.i3a.org/pdf/wg1n1017.pdf
=cut
OLE::Storage_Lite - Simple Class for OLE document interface. |