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);
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.
$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.
$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.
$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.
$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.
$sUcs2 = OLE::Storage_Lite::Asc2Ucs($sAsc>);
Utility function. Just adds 0x00 after every characters in $sAsc.
$sAsc = OLE::Storage_Lite::Ucs2Asc($sUcs2);
Utility function. Just deletes 0x00 after words in $sUcs.
$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.
$oRoot = $oRoot>->save( $sFile, $bNoAs);
Saves information into $sFile. If $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.
$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.
$oRoot = OLE::Storage_Lite::PPS::File->new($sName, $sData);
$sName is name of the PPS.
$oRoot = OLE::Storage_Lite::PPS::File->newFile($sName, $sFile);
This function makes to use file handle for getting 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+''.
$oRoot = $oPps->append($sData);
appends specified data to that PPS.
$sData is appending data for that PPS.
You may distribute under the terms of either the GNU General Public License or the Artistic License, as specified in the Perl README file.
This module is currently maintained by John McNamara jmcnamara@cpan.org
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