Browse Source

wip: Add read function for workbook

master
Debao Zhang 11 years ago
parent
commit
7748184ba1
  1. 2
      src/xlsx/xlsxdocument.cpp
  2. 21
      src/xlsx/xlsxpackage.cpp
  3. 9
      src/xlsx/xlsxrelationships.cpp
  4. 1
      src/xlsx/xlsxrelationships_p.h
  5. 47
      src/xlsx/xlsxworkbook.cpp
  6. 3
      src/xlsx/xlsxworkbook.h
  7. 5
      src/xlsx/xlsxworkbook_p.h
  8. 85
      src/xlsx/xlsxworksheet.cpp
  9. 3
      src/xlsx/xlsxworksheet.h
  10. 5
      src/xlsx/xlsxworksheet_p.h

2
src/xlsx/xlsxdocument.cpp

@ -168,7 +168,7 @@ Worksheet *Document::activedWorksheet() const
if (d->workbook->worksheets().size() == 0) if (d->workbook->worksheets().size() == 0)
return 0; return 0;
return d->workbook->worksheets().at(d->workbook->activedWorksheet()); return d->workbook->worksheets().at(d->workbook->activedWorksheet()).data();
} }
int Document::activedWorksheetIndex() const int Document::activedWorksheetIndex() const

21
src/xlsx/xlsxpackage.cpp

@ -75,6 +75,7 @@ namespace QXlsx {
The Packager class coordinates the classes that represent the The Packager class coordinates the classes that represent the
elements of the package and writes them into the XLSX file. elements of the package and writes them into the XLSX file.
*/ */
typedef QSharedPointer<Worksheet> WorksheetPtrType;
Package::Package(Document *document) : Package::Package(Document *document) :
m_document(document) m_document(document)
@ -82,7 +83,7 @@ Package::Package(Document *document) :
m_workbook = m_document->workbook(); m_workbook = m_document->workbook();
m_worksheet_count = 0; m_worksheet_count = 0;
m_chartsheet_count = 0; m_chartsheet_count = 0;
foreach (Worksheet *sheet, m_workbook->worksheets()) { foreach (WorksheetPtrType sheet, m_workbook->worksheets()) {
if (sheet->isChartsheet()) if (sheet->isChartsheet())
m_chartsheet_count += 1; m_chartsheet_count += 1;
else else
@ -174,7 +175,7 @@ bool Package::createPackage(QIODevice *package)
void Package::writeWorksheetFiles(ZipWriter &zipWriter) void Package::writeWorksheetFiles(ZipWriter &zipWriter)
{ {
int index = 1; int index = 1;
foreach (Worksheet *sheet, m_workbook->worksheets()) { foreach (WorksheetPtrType sheet, m_workbook->worksheets()) {
if (sheet->isChartsheet()) if (sheet->isChartsheet())
continue; continue;
@ -206,7 +207,7 @@ void Package::writeContentTypesFile(ZipWriter &zipWriter)
ContentTypes content; ContentTypes content;
int worksheet_index = 1; int worksheet_index = 1;
foreach (Worksheet *sheet, m_workbook->worksheets()) { foreach (WorksheetPtrType sheet, m_workbook->worksheets()) {
if (sheet->isChartsheet()) { if (sheet->isChartsheet()) {
} else { } else {
@ -247,15 +248,15 @@ void Package::writeDocPropsAppFile(ZipWriter &zipWriter)
props.addHeadingPair(QStringLiteral("Chartsheets"), m_chartsheet_count); props.addHeadingPair(QStringLiteral("Chartsheets"), m_chartsheet_count);
//Add worksheet parts //Add worksheet parts
foreach (Worksheet *sheet, m_workbook->worksheets()){ foreach (WorksheetPtrType sheet, m_workbook->worksheets()){
if (!sheet->isChartsheet()) if (!sheet->isChartsheet())
props.addPartTitle(sheet->name()); props.addPartTitle(sheet->sheetName());
} }
//Add the chartsheet parts //Add the chartsheet parts
foreach (Worksheet *sheet, m_workbook->worksheets()){ foreach (WorksheetPtrType sheet, m_workbook->worksheets()){
if (sheet->isChartsheet()) if (sheet->isChartsheet())
props.addPartTitle(sheet->name()); props.addPartTitle(sheet->sheetName());
} }
zipWriter.addFile(QStringLiteral("docProps/app.xml"), props.saveToXmlData()); zipWriter.addFile(QStringLiteral("docProps/app.xml"), props.saveToXmlData());
@ -306,7 +307,7 @@ void Package::writeWorkbookRelsFile(ZipWriter &zipWriter)
int worksheet_index = 1; int worksheet_index = 1;
int chartsheet_index = 1; int chartsheet_index = 1;
foreach (Worksheet *sheet, m_workbook->worksheets()) { foreach (WorksheetPtrType sheet, m_workbook->worksheets()) {
if (sheet->isChartsheet()) { if (sheet->isChartsheet()) {
rels.addDocumentRelationship(QStringLiteral("/chartsheet"), QStringLiteral("chartsheets/sheet%1.xml").arg(chartsheet_index)); rels.addDocumentRelationship(QStringLiteral("/chartsheet"), QStringLiteral("chartsheets/sheet%1.xml").arg(chartsheet_index));
chartsheet_index += 1; chartsheet_index += 1;
@ -328,7 +329,7 @@ void Package::writeWorkbookRelsFile(ZipWriter &zipWriter)
void Package::writeWorksheetRelsFiles(ZipWriter &zipWriter) void Package::writeWorksheetRelsFiles(ZipWriter &zipWriter)
{ {
int index = 1; int index = 1;
foreach (Worksheet *sheet, m_workbook->worksheets()) { foreach (WorksheetPtrType sheet, m_workbook->worksheets()) {
if (sheet->isChartsheet()) if (sheet->isChartsheet())
continue; continue;
Relationships rels; Relationships rels;
@ -346,7 +347,7 @@ void Package::writeWorksheetRelsFiles(ZipWriter &zipWriter)
void Package::writeDrawingRelsFiles(ZipWriter &zipWriter) void Package::writeDrawingRelsFiles(ZipWriter &zipWriter)
{ {
int index = 1; int index = 1;
foreach (Worksheet *sheet, m_workbook->worksheets()) { foreach (WorksheetPtrType sheet, m_workbook->worksheets()) {
if (sheet->drawingLinks().size() == 0) if (sheet->drawingLinks().size() == 0)
continue; continue;
Relationships rels; Relationships rels;

9
src/xlsx/xlsxrelationships.cpp

@ -164,4 +164,13 @@ Relationships Relationships::loadFromXmlData(const QByteArray &data)
return loadFromXmlFile(&buffer); return loadFromXmlFile(&buffer);
} }
XlsxRelationship Relationships::getRelationshipById(const QString &id) const
{
foreach (XlsxRelationship ship, m_relationships) {
if (ship.id == id)
return ship;
}
return XlsxRelationship();
}
} //namespace } //namespace

1
src/xlsx/xlsxrelationships_p.h

@ -59,6 +59,7 @@ public:
QByteArray saveToXmlData(); QByteArray saveToXmlData();
static Relationships loadFromXmlFile(QIODevice *device); static Relationships loadFromXmlFile(QIODevice *device);
static Relationships loadFromXmlData(const QByteArray &data); static Relationships loadFromXmlData(const QByteArray &data);
XlsxRelationship getRelationshipById(const QString &id) const;
private: private:
QList<XlsxRelationship> relationships(const QString &type) const; QList<XlsxRelationship> relationships(const QString &type) const;

47
src/xlsx/xlsxworkbook.cpp

@ -30,6 +30,7 @@
#include "xlsxformat.h" #include "xlsxformat.h"
#include "xlsxpackage_p.h" #include "xlsxpackage_p.h"
#include "xlsxxmlwriter_p.h" #include "xlsxxmlwriter_p.h"
#include "xlsxxmlreader_p.h"
#include "xlsxworksheet_p.h" #include "xlsxworksheet_p.h"
#include <QFile> #include <QFile>
@ -63,7 +64,6 @@ Workbook::Workbook() :
Workbook::~Workbook() Workbook::~Workbook()
{ {
qDeleteAll(d_ptr->worksheets);
delete d_ptr; delete d_ptr;
} }
@ -123,25 +123,26 @@ Worksheet *Workbook::insertWorkSheet(int index, const QString &name)
QString worksheetName = name; QString worksheetName = name;
if (!name.isEmpty()) { if (!name.isEmpty()) {
//If user given an already in-use name, we should not continue any more! //If user given an already in-use name, we should not continue any more!
foreach (Worksheet *sheet, d->worksheets) { for (int i=0; i<d->worksheets.size(); ++i) {
if (sheet->name() == name) if (d->worksheets[i]->sheetName() == name) {
return 0; return 0;
} }
}
} else { } else {
bool exists; bool exists;
do { do {
++lastIndex; ++lastIndex;
exists = false; exists = false;
worksheetName = QStringLiteral("Sheet%1").arg(lastIndex+1); worksheetName = QStringLiteral("Sheet%1").arg(lastIndex+1);
foreach (Worksheet *sheet, d->worksheets) { for (int i=0; i<d->worksheets.size(); ++i) {
if (sheet->name() == worksheetName) if (d->worksheets[i]->sheetName() == worksheetName)
exists = true; exists = true;
} }
} while (exists); } while (exists);
} }
Worksheet *sheet = new Worksheet(worksheetName, this); Worksheet *sheet = new Worksheet(worksheetName, this);
d->worksheets.insert(index, sheet); d->worksheets.insert(index, QSharedPointer<Worksheet>(sheet));
d->activesheet = index; d->activesheet = index;
return sheet; return sheet;
} }
@ -168,7 +169,7 @@ Format *Workbook::createFormat()
return d->styles->createFormat(); return d->styles->createFormat();
} }
QList<Worksheet *> Workbook::worksheets() const QList<QSharedPointer<Worksheet> > Workbook::worksheets() const
{ {
Q_D(const Workbook); Q_D(const Workbook);
return d->worksheets; return d->worksheets;
@ -206,7 +207,8 @@ void Workbook::prepareDrawings()
d->images.clear(); d->images.clear();
d->drawings.clear(); d->drawings.clear();
foreach (Worksheet *sheet, d->worksheets) { for (int i=0; i<d->worksheets.size(); ++i) {
QSharedPointer<Worksheet> sheet = d->worksheets[i];
if (sheet->images().isEmpty()) //No drawing (such as Image, ...) if (sheet->images().isEmpty()) //No drawing (such as Image, ...)
continue; continue;
@ -262,9 +264,9 @@ void Workbook::saveToXmlFile(QIODevice *device)
writer.writeStartElement(QStringLiteral("sheets")); writer.writeStartElement(QStringLiteral("sheets"));
for (int i=0; i<d->worksheets.size(); ++i) { for (int i=0; i<d->worksheets.size(); ++i) {
Worksheet *sheet = d->worksheets[i]; QSharedPointer<Worksheet> sheet = d->worksheets[i];
writer.writeEmptyElement(QStringLiteral("sheet")); writer.writeEmptyElement(QStringLiteral("sheet"));
writer.writeAttribute(QStringLiteral("name"), sheet->name()); writer.writeAttribute(QStringLiteral("name"), sheet->sheetName());
writer.writeAttribute(QStringLiteral("sheetId"), QString::number(i+1)); writer.writeAttribute(QStringLiteral("sheetId"), QString::number(i+1));
if (sheet->isHidden()) if (sheet->isHidden())
writer.writeAttribute(QStringLiteral("state"), QStringLiteral("hidden")); writer.writeAttribute(QStringLiteral("state"), QStringLiteral("hidden"));
@ -295,8 +297,21 @@ QByteArray Workbook::saveToXmlData()
QSharedPointer<Workbook> Workbook::loadFromXmlFile(QIODevice *device) QSharedPointer<Workbook> Workbook::loadFromXmlFile(QIODevice *device)
{ {
Workbook *book = new Workbook;
return QSharedPointer<Workbook>(new Workbook);
XmlStreamReader reader(device);
while(!reader.atEnd()) {
QXmlStreamReader::TokenType token = reader.readNext();
if (token == QXmlStreamReader::StartElement) {
if (reader.name() == QLatin1String("sheet")) {
QXmlStreamAttributes attributes = reader.attributes();
QString sheetName = attributes.value(QLatin1String("name")).toString();
QString rId = attributes.value(QLatin1String("r:id")).toString();
book->d_func()->sheetNameIdPairList.append(QPair<QString, QString>(sheetName, rId));
}
}
}
return QSharedPointer<Workbook>(book);
} }
QSharedPointer<Workbook> Workbook::loadFromXmlData(const QByteArray &data) QSharedPointer<Workbook> Workbook::loadFromXmlData(const QByteArray &data)
@ -308,4 +323,12 @@ QSharedPointer<Workbook> Workbook::loadFromXmlData(const QByteArray &data)
return loadFromXmlFile(&buffer); return loadFromXmlFile(&buffer);
} }
void Workbook::addWorksheet(const QString &name, QSharedPointer<Worksheet> sheet)
{
Q_D(Workbook);
sheet->setSheetName(name);
d->worksheets.append(sheet);
}
} //namespace } //namespace

3
src/xlsx/xlsxworkbook.h

@ -50,7 +50,7 @@ class Q_XLSX_EXPORT Workbook
public: public:
~Workbook(); ~Workbook();
QList<Worksheet *> worksheets() const; QList<QSharedPointer<Worksheet> > worksheets() const;
Worksheet *addWorksheet(const QString &name = QString()); Worksheet *addWorksheet(const QString &name = QString());
Worksheet *insertWorkSheet(int index, const QString &name = QString()); Worksheet *insertWorkSheet(int index, const QString &name = QString());
int activedWorksheet() const; int activedWorksheet() const;
@ -76,6 +76,7 @@ private:
QByteArray saveToXmlData(); QByteArray saveToXmlData();
static QSharedPointer<Workbook> loadFromXmlFile(QIODevice *device); static QSharedPointer<Workbook> loadFromXmlFile(QIODevice *device);
static QSharedPointer<Workbook> loadFromXmlData(const QByteArray &data); static QSharedPointer<Workbook> loadFromXmlData(const QByteArray &data);
void addWorksheet(const QString &name, QSharedPointer<Worksheet> sheet);
SharedStrings *sharedStrings(); SharedStrings *sharedStrings();
Styles *styles(); Styles *styles();

5
src/xlsx/xlsxworkbook_p.h

@ -26,6 +26,7 @@
#define XLSXWORKBOOK_P_H #define XLSXWORKBOOK_P_H
#include "xlsxworkbook.h" #include "xlsxworkbook.h"
#include <QSharedPointer> #include <QSharedPointer>
#include <QPair>
namespace QXlsx { namespace QXlsx {
@ -38,11 +39,13 @@ public:
Workbook *q_ptr; Workbook *q_ptr;
QSharedPointer<SharedStrings> sharedStrings; QSharedPointer<SharedStrings> sharedStrings;
QList<Worksheet *> worksheets; QList<QSharedPointer<Worksheet> > worksheets;
QSharedPointer<Styles> styles; QSharedPointer<Styles> styles;
QList<QImage> images; QList<QImage> images;
QList<Drawing *> drawings; QList<Drawing *> drawings;
QList<QPair<QString, QString> > sheetNameIdPairList;//Data from xml file
bool strings_to_numbers_enabled; bool strings_to_numbers_enabled;
bool date1904; bool date1904;

85
src/xlsx/xlsxworksheet.cpp

@ -29,6 +29,7 @@
#include "xlsxutility_p.h" #include "xlsxutility_p.h"
#include "xlsxsharedstrings_p.h" #include "xlsxsharedstrings_p.h"
#include "xlsxxmlwriter_p.h" #include "xlsxxmlwriter_p.h"
#include "xlsxxmlreader_p.h"
#include "xlsxdrawing_p.h" #include "xlsxdrawing_p.h"
#include "xlsxstyles_p.h" #include "xlsxstyles_p.h"
@ -74,12 +75,6 @@ WorksheetPrivate::WorksheetPrivate(Worksheet *p) :
WorksheetPrivate::~WorksheetPrivate() WorksheetPrivate::~WorksheetPrivate()
{ {
typedef QMap<int, XlsxCellData *> RowMap;
foreach (RowMap row, cellTable) {
foreach (XlsxCellData *item, row)
delete item;
}
foreach (XlsxRowInfo *row, rowsInfo) foreach (XlsxRowInfo *row, rowsInfo)
delete row; delete row;
@ -224,12 +219,18 @@ bool Worksheet::isChartsheet() const
return false; return false;
} }
QString Worksheet::name() const QString Worksheet::sheetName() const
{ {
Q_D(const Worksheet); Q_D(const Worksheet);
return d->name; return d->name;
} }
void Worksheet::setSheetName(const QString &sheetName)
{
Q_D(Worksheet);
d->name = sheetName;
}
bool Worksheet::isHidden() const bool Worksheet::isHidden() const
{ {
Q_D(const Worksheet); Q_D(const Worksheet);
@ -354,7 +355,7 @@ int Worksheet::writeString(int row, int column, const QString &value, Format *fo
SharedStrings *sharedStrings = d->workbook->sharedStrings(); SharedStrings *sharedStrings = d->workbook->sharedStrings();
int index = sharedStrings->addSharedString(content); int index = sharedStrings->addSharedString(content);
d->cellTable[row][column] = new XlsxCellData(index, XlsxCellData::String, format); d->cellTable[row][column] = QSharedPointer<XlsxCellData>(new XlsxCellData(index, XlsxCellData::String, format));
d->workbook->styles()->addFormat(format); d->workbook->styles()->addFormat(format);
return error; return error;
} }
@ -365,7 +366,7 @@ int Worksheet::writeNumber(int row, int column, double value, Format *format)
if (d->checkDimensions(row, column)) if (d->checkDimensions(row, column))
return -1; return -1;
d->cellTable[row][column] = new XlsxCellData(value, XlsxCellData::Number, format); d->cellTable[row][column] = QSharedPointer<XlsxCellData>(new XlsxCellData(value, XlsxCellData::Number, format));
d->workbook->styles()->addFormat(format); d->workbook->styles()->addFormat(format);
return 0; return 0;
} }
@ -384,7 +385,7 @@ int Worksheet::writeFormula(int row, int column, const QString &content, Format
XlsxCellData *data = new XlsxCellData(result, XlsxCellData::Formula, format); XlsxCellData *data = new XlsxCellData(result, XlsxCellData::Formula, format);
data->formula = formula; data->formula = formula;
d->cellTable[row][column] = data; d->cellTable[row][column] = QSharedPointer<XlsxCellData>(data);
d->workbook->styles()->addFormat(format); d->workbook->styles()->addFormat(format);
return error; return error;
@ -396,7 +397,7 @@ int Worksheet::writeBlank(int row, int column, Format *format)
if (d->checkDimensions(row, column)) if (d->checkDimensions(row, column))
return -1; return -1;
d->cellTable[row][column] = new XlsxCellData(QVariant(), XlsxCellData::Blank, format); d->cellTable[row][column] = QSharedPointer<XlsxCellData>(new XlsxCellData(QVariant(), XlsxCellData::Blank, format));
d->workbook->styles()->addFormat(format); d->workbook->styles()->addFormat(format);
return 0; return 0;
@ -408,7 +409,7 @@ int Worksheet::writeBool(int row, int column, bool value, Format *format)
if (d->checkDimensions(row, column)) if (d->checkDimensions(row, column))
return -1; return -1;
d->cellTable[row][column] = new XlsxCellData(value, XlsxCellData::Boolean, format); d->cellTable[row][column] = QSharedPointer<XlsxCellData>(new XlsxCellData(value, XlsxCellData::Boolean, format));
d->workbook->styles()->addFormat(format); d->workbook->styles()->addFormat(format);
return 0; return 0;
@ -420,7 +421,7 @@ int Worksheet::writeDateTime(int row, int column, const QDateTime &dt, Format *f
if (d->checkDimensions(row, column)) if (d->checkDimensions(row, column))
return -1; return -1;
d->cellTable[row][column] = new XlsxCellData(dt, XlsxCellData::DateTime, format); d->cellTable[row][column] = QSharedPointer<XlsxCellData>(new XlsxCellData(dt, XlsxCellData::DateTime, format));
d->workbook->styles()->addFormat(format); d->workbook->styles()->addFormat(format);
return 0; return 0;
@ -482,7 +483,7 @@ int Worksheet::writeUrl(int row, int column, const QUrl &url, Format *format, co
//Write the hyperlink string as normal string. //Write the hyperlink string as normal string.
SharedStrings *sharedStrings = d->workbook->sharedStrings(); SharedStrings *sharedStrings = d->workbook->sharedStrings();
int index = sharedStrings->addSharedString(urlString); int index = sharedStrings->addSharedString(urlString);
d->cellTable[row][column] = new XlsxCellData(index, XlsxCellData::String, format); d->cellTable[row][column] = QSharedPointer<XlsxCellData>(new XlsxCellData(index, XlsxCellData::String, format));
//Store the hyperlink data in sa separate table //Store the hyperlink data in sa separate table
d->urlTable[row][column] = new XlsxUrlData(link_type, urlString, locationString, tip); d->urlTable[row][column] = new XlsxUrlData(link_type, urlString, locationString, tip);
@ -695,7 +696,7 @@ void WorksheetPrivate::writeSheetData(XmlStreamWriter &writer)
} }
} }
void WorksheetPrivate::writeCellData(XmlStreamWriter &writer, int row, int col, XlsxCellData *cell) void WorksheetPrivate::writeCellData(XmlStreamWriter &writer, int row, int col, QSharedPointer<XlsxCellData> cell)
{ {
//This is the innermost loop so efficiency is important. //This is the innermost loop so efficiency is important.
QString cell_range = xl_rowcol_to_cell_fast(row, col); QString cell_range = xl_rowcol_to_cell_fast(row, col);
@ -1068,7 +1069,59 @@ QByteArray Worksheet::saveToXmlData()
QSharedPointer<Worksheet> Worksheet::loadFromXmlFile(QIODevice *device) QSharedPointer<Worksheet> Worksheet::loadFromXmlFile(QIODevice *device)
{ {
return QSharedPointer<Worksheet>(new Worksheet(QString())); Worksheet *sheet = new Worksheet(QStringLiteral("Sheet9999"));
XmlStreamReader reader(device);
while(!reader.atEnd()) {
QXmlStreamReader::TokenType token = reader.readNext();
if (token == QXmlStreamReader::StartElement) {
if (reader.name() == QLatin1String("dimension")) {
QXmlStreamAttributes attributes = reader.attributes();
QStringList range = attributes.value(QLatin1String("ref")).toString().split(QLatin1Char(':'));
if (range.size() == 2) {
QPoint start = xl_cell_to_rowcol(range[0]);
QPoint end = xl_cell_to_rowcol(range[1]);
sheet->d_func()->dim_rowmin = start.x();
sheet->d_func()->dim_colmin = start.y();
sheet->d_func()->dim_rowmax = end.x();
sheet->d_func()->dim_colmax = end.y();
} else {
QPoint p = xl_cell_to_rowcol(range[0]);
sheet->d_func()->dim_rowmin = p.x();
sheet->d_func()->dim_colmin = p.y();
sheet->d_func()->dim_rowmax = p.x();
sheet->d_func()->dim_colmax = p.y();
}
} else if (reader.name() == QLatin1String("c")) {
QXmlStreamAttributes attributes = reader.attributes();
QString r = attributes.value(QLatin1String("r")).toString();
QPoint pos = xl_cell_to_rowcol(r);
if (attributes.hasAttribute(QLatin1String("t"))) {
QString type = attributes.value(QLatin1String("t")).toString();
if (type == QLatin1String("s")) {
//string type
reader.readNextStartElement();
if (reader.name() == QLatin1String("v")) {
QString value = reader.readElementText();
XlsxCellData *data = new XlsxCellData(value ,XlsxCellData::String);
sheet->d_func()->cellTable[pos.x()][pos.y()] = QSharedPointer<XlsxCellData>(data);
}
}
} else {
//number type
reader.readNextStartElement();
if (reader.name() == QLatin1String("v")) {
QString value = reader.readElementText();
XlsxCellData *data = new XlsxCellData(value ,XlsxCellData::Number);
sheet->d_func()->cellTable[pos.x()][pos.y()] = QSharedPointer<XlsxCellData>(data);
}
}
}
}
}
return QSharedPointer<Worksheet> (sheet);
} }
QSharedPointer<Worksheet> Worksheet::loadFromXmlData(const QByteArray &data) QSharedPointer<Worksheet> Worksheet::loadFromXmlData(const QByteArray &data)

3
src/xlsx/xlsxworksheet.h

@ -84,7 +84,8 @@ private:
Worksheet(const QString &sheetName, Workbook *book=0); Worksheet(const QString &sheetName, Workbook *book=0);
virtual bool isChartsheet() const; virtual bool isChartsheet() const;
QString name() const; QString sheetName() const;
void setSheetName(const QString &sheetName);
bool isHidden() const; bool isHidden() const;
bool isSelected() const; bool isSelected() const;
void setHidden(bool hidden); void setHidden(bool hidden);

5
src/xlsx/xlsxworksheet_p.h

@ -27,6 +27,7 @@
#include "xlsxworksheet.h" #include "xlsxworksheet.h"
#include <QImage> #include <QImage>
#include <QSharedPointer>
namespace QXlsx { namespace QXlsx {
@ -182,7 +183,7 @@ public:
QString generateDimensionString(); QString generateDimensionString();
void calculateSpans(); void calculateSpans();
void writeSheetData(XmlStreamWriter &writer); void writeSheetData(XmlStreamWriter &writer);
void writeCellData(XmlStreamWriter &writer, int row, int col, XlsxCellData *cell); void writeCellData(XmlStreamWriter &writer, int row, int col, QSharedPointer<XlsxCellData> cell);
void writeMergeCells(XmlStreamWriter &writer); void writeMergeCells(XmlStreamWriter &writer);
void writeHyperlinks(XmlStreamWriter &writer); void writeHyperlinks(XmlStreamWriter &writer);
void writeDrawings(XmlStreamWriter &writer); void writeDrawings(XmlStreamWriter &writer);
@ -193,7 +194,7 @@ public:
Workbook *workbook; Workbook *workbook;
Drawing *drawing; Drawing *drawing;
QMap<int, QMap<int, XlsxCellData *> > cellTable; QMap<int, QMap<int, QSharedPointer<XlsxCellData> > > cellTable;
QMap<int, QMap<int, QString> > comments; QMap<int, QMap<int, QString> > comments;
QMap<int, QMap<int, XlsxUrlData *> > urlTable; QMap<int, QMap<int, XlsxUrlData *> > urlTable;
QList<XlsxCellRange> merges; QList<XlsxCellRange> merges;

Loading…
Cancel
Save