OLE::Storage_Lite3pm
Simple class for ole document interface.
Usage
use OLE::Storage_Lite;# Initialize.# From a filemy $oOl = OLE::Storage_Lite->new("some.xls");# From a filehandle objectuse IO::File;my $oIo = new IO::File;$oIo->open("<iofile.xls");binmode($oIo);my $oOl = OLE::Storage_Lite->new($oFile);# Read datamy $oPps = $oOl->getPpsTree(1);# Save Data# To a File$oPps->save("kaba.xls"); #kaba.xls$oPps->save('-'); #STDOUT# To a filehandle objectmy $oIo = new IO::File;$oIo->open(">iofile.xls");bimode($oIo);$oPps->save($oIo);
Overview
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.
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.
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.
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.
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.
Asc2Ucs()
$sUcs2 = OLE::Storage_Lite::Asc2Ucs($sAsc>);
Utility function. Just adds 0x00 after every characters in $sAsc.
Ucs2Asc()
$sAsc = OLE::Storage_Lite::Ucs2Asc($sUcs2);
Utility function. Just deletes 0x00 after words in $sUcs.
OLE::Storage_Lite::PPS
OLE::Storage_Lite::PPS has these properties:
No
|
Order number in saving. |
|---|---|
Name
|
Its name in UCS2 (a.k.a Unicode). |
Type
|
Its type (1:Dir, 2:File (Data), 5: Root) |
PrevPps
|
Previous pps (as No) |
NextPps
|
Next pps (as No) |
DirPps
|
Dir pps (as No). |
Time1st
|
Timestamp 1st in array ref as similar format of localtime. |
Time2nd
|
Timestamp 2nd in array ref as similar format of localtime. |
StartBlock
|
Start block number |
Size
|
Size of the pps |
Data
|
Its data |
Child
|
Its child PPSs in array ref |
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.
save()
$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.
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.
OLE::Storage_Lite::PPS::File
OLE::Storage_Lite::PPS::File has 3 method.
new
$oRoot = OLE::Storage_Lite::PPS::File->new($sName, $sData);
$sName is name of the PPS.
$sData is data of the PPS.
newFile()
$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+".
append()
$oRoot = $oPps->append($sData);
appends specified data to that PPS.
$sData is appending data for that PPS.
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 ...).
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.
Acknowledgements
First of all, I would like to acknowledge to Martin Schwartz and his module OLE::Storage.
Releases
12 releases since Debian 3.0 (Woody); the text changed 9 times.