LotusSpreadsheet Class Reference

This class parses Microsoft Works spreadsheet file. More...

#include <LotusSpreadsheet.h>

Public Member Functions

 LotusSpreadsheet (LotusParser &parser)
 constructor
 ~LotusSpreadsheet ()
 destructor
void cleanState ()
 clean internal state
void updateState ()
 update internal state (must be called one time before sending data)
void setListener (WKSContentListenerPtr &listen)
 sets the listener
void setLastSpreadsheetId (int id)
 set the last spreadsheet number ( default 0)
bool getLeftTopPosition (Vec2i const &cell, int spreadsheet, Vec2f &pos)
 returns the left top position of a cell

Protected Member Functions

int version () const
 return the file version
bool hasSomeSpreadsheetData () const
 returns true if some spreadsheet are defined
void sendSpreadsheet (int sheetId)
 send the data
librevenge::RVNGString getSheetName (int id) const
 returns the name of the id's spreadsheet
void sendRowContent (LotusSpreadsheetInternal::Spreadsheet const &sheet, int row, LotusSpreadsheetInternal::Table123Styles const *table123Styles)
 send the cell data in a row
void sendCellContent (LotusSpreadsheetInternal::Cell const &cell, LotusSpreadsheetInternal::Style const &style, int numRepeated=1)
 send the cell data
void sendText (RVNGInputStreamPtr &input, long endPos, LotusSpreadsheetInternal::Style const &style) const
 try to send a formated text
void sendTextNote (RVNGInputStreamPtr &input, WPSEntry const &entry) const
 try to send a note
bool readSheetName (std::shared_ptr< WPSStream > stream)
 reads a sheet name: zone 0x23
bool readSheetName1B (std::shared_ptr< WPSStream > stream, long endPos)
 reads a sheet name: zone 0x1b 36b0
bool readCellsFormat801 (std::shared_ptr< WPSStream > stream, WPSVec3i const &minC, WPSVec3i const &maxC, int typeZone)
 reads a cell zone formats: zone 801, lotus 123
bool readColumnDefinition (std::shared_ptr< WPSStream > stream)
 reads the columns definitions
bool readColumnSizes (std::shared_ptr< WPSStream > stream)
 reads the column sizes ( in char )
bool readRowFormats (std::shared_ptr< WPSStream > stream)
 reads the row formats
bool readRowFormat (std::shared_ptr< WPSStream > stream, LotusSpreadsheetInternal::Style &style, int &numCell, long endPos)
 reads a cell's row format
bool readRowSizes (std::shared_ptr< WPSStream > stream, long endPos)
 reads the row size ( in pt*32 )
bool readCell (std::shared_ptr< WPSStream > stream)
 reads a cell
bool readCellName (std::shared_ptr< WPSStream > stream)
 reads a cell or list of cell name
bool readSheetHeader (std::shared_ptr< WPSStream > stream)
 try to read a sheet header: 0xc3
bool readExtraRowFormats (std::shared_ptr< WPSStream > stream)
 try to read an extra row format: 0xc5
bool readCell (WPSStream &stream, int sId, bool isList, WKSContentListener::FormulaInstruction &instr)
bool readFormula (WPSStream &stream, long endPos, int sId, bool newFormula, std::vector< WKSContentListener::FormulaInstruction > &formula, std::string &error)

Static Protected Member Functions

static bool readNote (std::shared_ptr< WPSStream > stream, long endPos)
 try to read a note: subZone id 9065
static bool parseVariable (std::string const &variable, WKSContentListener::FormulaInstruction &instr)
static std::string getDebugStringForText (std::string const &text)
 small debug function used to print text with format sequence

Private Member Functions

 LotusSpreadsheet (LotusSpreadsheet const &orig)=delete
LotusSpreadsheetoperator= (LotusSpreadsheet const &orig)=delete

Private Attributes

std::shared_ptr< WKSContentListenerm_listener
LotusParserm_mainParser
 the listener (if set)
std::shared_ptr< LotusStyleManagerm_styleManager
 the style manager
std::shared_ptr< LotusSpreadsheetInternal::Statem_state
 the internal state

Friends

class LotusParser
class LotusSpreadsheetInternal::SubDocument

Detailed Description

This class parses Microsoft Works spreadsheet file.

Constructor & Destructor Documentation

◆ LotusSpreadsheet() [1/2]

LotusSpreadsheet::LotusSpreadsheet ( LotusParser & parser)
explicit

constructor

Referenced by LotusSpreadsheet(), and operator=().

◆ ~LotusSpreadsheet()

LotusSpreadsheet::~LotusSpreadsheet ( )

destructor

◆ LotusSpreadsheet() [2/2]

LotusSpreadsheet::LotusSpreadsheet ( LotusSpreadsheet const & orig)
privatedelete

Member Function Documentation

◆ cleanState()

void LotusSpreadsheet::cleanState ( )

clean internal state

◆ getDebugStringForText()

std::string LotusSpreadsheet::getDebugStringForText ( std::string const & text)
staticprotected

small debug function used to print text with format sequence

Referenced by readCell(), and readNote().

◆ getLeftTopPosition()

bool LotusSpreadsheet::getLeftTopPosition ( Vec2i const & cell,
int spreadsheet,
Vec2f & pos )

returns the left top position of a cell

◆ getSheetName()

librevenge::RVNGString LotusSpreadsheet::getSheetName ( int id) const
protected

returns the name of the id's spreadsheet

Referenced by readCell(), readFormula(), and sendSpreadsheet().

◆ hasSomeSpreadsheetData()

bool LotusSpreadsheet::hasSomeSpreadsheetData ( ) const
protected

returns true if some spreadsheet are defined

◆ operator=()

LotusSpreadsheet & LotusSpreadsheet::operator= ( LotusSpreadsheet const & orig)
privatedelete

◆ parseVariable()

bool LotusSpreadsheet::parseVariable ( std::string const & variable,
WKSContentListener::FormulaInstruction & instr )
staticprotected

Referenced by readFormula().

◆ readCell() [1/2]

bool LotusSpreadsheet::readCell ( std::shared_ptr< WPSStream > stream)
protected

reads a cell

Referenced by readFormula().

◆ readCell() [2/2]

bool LotusSpreadsheet::readCell ( WPSStream & stream,
int sId,
bool isList,
WKSContentListener::FormulaInstruction & instr )
protected

◆ readCellName()

bool LotusSpreadsheet::readCellName ( std::shared_ptr< WPSStream > stream)
protected

reads a cell or list of cell name

◆ readCellsFormat801()

bool LotusSpreadsheet::readCellsFormat801 ( std::shared_ptr< WPSStream > stream,
WPSVec3i const & minC,
WPSVec3i const & maxC,
int typeZone )
protected

reads a cell zone formats: zone 801, lotus 123

◆ readColumnDefinition()

bool LotusSpreadsheet::readColumnDefinition ( std::shared_ptr< WPSStream > stream)
protected

reads the columns definitions

◆ readColumnSizes()

bool LotusSpreadsheet::readColumnSizes ( std::shared_ptr< WPSStream > stream)
protected

reads the column sizes ( in char )

◆ readExtraRowFormats()

bool LotusSpreadsheet::readExtraRowFormats ( std::shared_ptr< WPSStream > stream)
protected

try to read an extra row format: 0xc5

◆ readFormula()

bool LotusSpreadsheet::readFormula ( WPSStream & stream,
long endPos,
int sId,
bool newFormula,
std::vector< WKSContentListener::FormulaInstruction > & formula,
std::string & error )
protected

Referenced by readCell().

◆ readNote()

bool LotusSpreadsheet::readNote ( std::shared_ptr< WPSStream > stream,
long endPos )
staticprotected

try to read a note: subZone id 9065

◆ readRowFormat()

bool LotusSpreadsheet::readRowFormat ( std::shared_ptr< WPSStream > stream,
LotusSpreadsheetInternal::Style & style,
int & numCell,
long endPos )
protected

reads a cell's row format

Referenced by readRowFormats().

◆ readRowFormats()

bool LotusSpreadsheet::readRowFormats ( std::shared_ptr< WPSStream > stream)
protected

reads the row formats

◆ readRowSizes()

bool LotusSpreadsheet::readRowSizes ( std::shared_ptr< WPSStream > stream,
long endPos )
protected

reads the row size ( in pt*32 )

◆ readSheetHeader()

bool LotusSpreadsheet::readSheetHeader ( std::shared_ptr< WPSStream > stream)
protected

try to read a sheet header: 0xc3

◆ readSheetName()

bool LotusSpreadsheet::readSheetName ( std::shared_ptr< WPSStream > stream)
protected

reads a sheet name: zone 0x23

◆ readSheetName1B()

bool LotusSpreadsheet::readSheetName1B ( std::shared_ptr< WPSStream > stream,
long endPos )
protected

reads a sheet name: zone 0x1b 36b0

◆ sendCellContent()

void LotusSpreadsheet::sendCellContent ( LotusSpreadsheetInternal::Cell const & cell,
LotusSpreadsheetInternal::Style const & style,
int numRepeated = 1 )
protected

send the cell data

Referenced by sendRowContent().

◆ sendRowContent()

void LotusSpreadsheet::sendRowContent ( LotusSpreadsheetInternal::Spreadsheet const & sheet,
int row,
LotusSpreadsheetInternal::Table123Styles const * table123Styles )
protected

send the cell data in a row

Note
this function does not call openSheetRow, closeSheetRow

Referenced by sendSpreadsheet().

◆ sendSpreadsheet()

void LotusSpreadsheet::sendSpreadsheet ( int sheetId)
protected

send the data

◆ sendText()

void LotusSpreadsheet::sendText ( RVNGInputStreamPtr & input,
long endPos,
LotusSpreadsheetInternal::Style const & style ) const
protected

try to send a formated text

Referenced by sendCellContent().

◆ sendTextNote()

void LotusSpreadsheet::sendTextNote ( RVNGInputStreamPtr & input,
WPSEntry const & entry ) const
protected

try to send a note

◆ setLastSpreadsheetId()

void LotusSpreadsheet::setLastSpreadsheetId ( int id)

set the last spreadsheet number ( default 0)

◆ setListener()

void LotusSpreadsheet::setListener ( WKSContentListenerPtr & listen)
inline

sets the listener

◆ updateState()

void LotusSpreadsheet::updateState ( )

update internal state (must be called one time before sending data)

◆ version()

int LotusSpreadsheet::version ( ) const
protected

return the file version

Referenced by readCellsFormat801(), readFormula(), and readRowFormat().

◆ LotusParser

◆ LotusSpreadsheetInternal::SubDocument

Member Data Documentation

◆ m_listener

std::shared_ptr<WKSContentListener> LotusSpreadsheet::m_listener
private

◆ m_mainParser

LotusParser& LotusSpreadsheet::m_mainParser
private

◆ m_state

◆ m_styleManager

std::shared_ptr<LotusStyleManager> LotusSpreadsheet::m_styleManager
private

The documentation for this class was generated from the following files:

Generated on Sat Jul 19 2025 05:24:40 for libwps by doxygen 1.14.0