---
name: "OLE::Storage_Lite"
section: "3pm"
platform: "linux"
package: "libole-storage-lite-perl"
version: "0.22-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/OLE::Storage_Lite"
---

# OLE::Storage\_Lite(3pm)

Simple Class for OLE document interface.

## NAME

OLE::Storage\_Lite - Simple Class for OLE document interface.

## SYNOPSIS

```
    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);
```

## 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.

### 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.

## 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.

## ACKNOWLEDGEMENTS

First of all, I would like to acknowledge to Martin Schwartz and his module OLE::Storage.

## AUTHOR

Kawai Takanori kwitknr@cpan.org

This module is currently maintained by John McNamara jmcnamara@cpan.org

## 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
