Add a private sheetId() member for Worksheet
This commit is contained in:
@@ -55,6 +55,9 @@ WorkbookPrivate::WorkbookPrivate(Workbook *q) :
|
|||||||
activesheet = 0;
|
activesheet = 0;
|
||||||
firstsheet = 0;
|
firstsheet = 0;
|
||||||
table_count = 0;
|
table_count = 0;
|
||||||
|
|
||||||
|
last_sheet_index = 0;
|
||||||
|
last_sheet_id = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
Workbook::Workbook() :
|
Workbook::Workbook() :
|
||||||
@@ -135,10 +138,9 @@ Worksheet *Workbook::addWorksheet(const QString &name)
|
|||||||
Worksheet *Workbook::insertWorkSheet(int index, const QString &name)
|
Worksheet *Workbook::insertWorkSheet(int index, const QString &name)
|
||||||
{
|
{
|
||||||
Q_D(Workbook);
|
Q_D(Workbook);
|
||||||
static int lastIndex = -1;
|
|
||||||
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-used name, we should not continue any more!
|
||||||
for (int i=0; i<d->worksheets.size(); ++i) {
|
for (int i=0; i<d->worksheets.size(); ++i) {
|
||||||
if (d->worksheets[i]->sheetName() == name) {
|
if (d->worksheets[i]->sheetName() == name) {
|
||||||
return 0;
|
return 0;
|
||||||
@@ -147,9 +149,9 @@ Worksheet *Workbook::insertWorkSheet(int index, const QString &name)
|
|||||||
} else {
|
} else {
|
||||||
bool exists;
|
bool exists;
|
||||||
do {
|
do {
|
||||||
++lastIndex;
|
++d->last_sheet_index;
|
||||||
exists = false;
|
exists = false;
|
||||||
worksheetName = QStringLiteral("Sheet%1").arg(lastIndex+1);
|
worksheetName = QStringLiteral("Sheet%1").arg(d->last_sheet_index);
|
||||||
for (int i=0; i<d->worksheets.size(); ++i) {
|
for (int i=0; i<d->worksheets.size(); ++i) {
|
||||||
if (d->worksheets[i]->sheetName() == worksheetName)
|
if (d->worksheets[i]->sheetName() == worksheetName)
|
||||||
exists = true;
|
exists = true;
|
||||||
@@ -157,7 +159,8 @@ Worksheet *Workbook::insertWorkSheet(int index, const QString &name)
|
|||||||
} while (exists);
|
} while (exists);
|
||||||
}
|
}
|
||||||
|
|
||||||
Worksheet *sheet = new Worksheet(worksheetName, this);
|
++d->last_sheet_id;
|
||||||
|
Worksheet *sheet = new Worksheet(worksheetName, d->last_sheet_id, this);
|
||||||
d->worksheets.insert(index, QSharedPointer<Worksheet>(sheet));
|
d->worksheets.insert(index, QSharedPointer<Worksheet>(sheet));
|
||||||
d->activesheet = index;
|
d->activesheet = index;
|
||||||
return sheet;
|
return sheet;
|
||||||
@@ -284,7 +287,7 @@ void Workbook::saveToXmlFile(QIODevice *device)
|
|||||||
QSharedPointer<Worksheet> sheet = d->worksheets[i];
|
QSharedPointer<Worksheet> sheet = d->worksheets[i];
|
||||||
writer.writeEmptyElement(QStringLiteral("sheet"));
|
writer.writeEmptyElement(QStringLiteral("sheet"));
|
||||||
writer.writeAttribute(QStringLiteral("name"), sheet->sheetName());
|
writer.writeAttribute(QStringLiteral("name"), sheet->sheetName());
|
||||||
writer.writeAttribute(QStringLiteral("sheetId"), QString::number(i+1));
|
writer.writeAttribute(QStringLiteral("sheetId"), QString::number(sheet->sheetId()));
|
||||||
if (sheet->isHidden())
|
if (sheet->isHidden())
|
||||||
writer.writeAttribute(QStringLiteral("state"), QStringLiteral("hidden"));
|
writer.writeAttribute(QStringLiteral("state"), QStringLiteral("hidden"));
|
||||||
writer.writeAttribute(QStringLiteral("r:id"), QStringLiteral("rId%1").arg(i+1));
|
writer.writeAttribute(QStringLiteral("r:id"), QStringLiteral("rId%1").arg(i+1));
|
||||||
|
|||||||
@@ -58,6 +58,10 @@ public:
|
|||||||
int activesheet;
|
int activesheet;
|
||||||
int firstsheet;
|
int firstsheet;
|
||||||
int table_count;
|
int table_count;
|
||||||
|
|
||||||
|
//Used to generate new sheet name and id
|
||||||
|
int last_sheet_index;
|
||||||
|
int last_sheet_id;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -195,13 +195,15 @@ int WorksheetPrivate::checkDimensions(int row, int col, bool ignore_row, bool ig
|
|||||||
/*!
|
/*!
|
||||||
* \brief Worksheet::Worksheet
|
* \brief Worksheet::Worksheet
|
||||||
* \param name Name of the worksheet
|
* \param name Name of the worksheet
|
||||||
* \param index Index of the worksheet in the workbook
|
* \param id : An integer representing the internal id of the
|
||||||
* \param parent
|
* sheet which is used by .xlsx revision part.
|
||||||
|
* (Note: id is not the index of the sheet in workbook)
|
||||||
*/
|
*/
|
||||||
Worksheet::Worksheet(const QString &name, Workbook *workbook) :
|
Worksheet::Worksheet(const QString &name, int id, Workbook *workbook) :
|
||||||
d_ptr(new WorksheetPrivate(this))
|
d_ptr(new WorksheetPrivate(this))
|
||||||
{
|
{
|
||||||
d_ptr->name = name;
|
d_ptr->name = name;
|
||||||
|
d_ptr->id = id;
|
||||||
if (!workbook) //For unit test propose only. Ignore the memery leak.
|
if (!workbook) //For unit test propose only. Ignore the memery leak.
|
||||||
workbook = new Workbook;
|
workbook = new Workbook;
|
||||||
d_ptr->workbook = workbook;
|
d_ptr->workbook = workbook;
|
||||||
@@ -253,6 +255,12 @@ void Worksheet::setSelected(bool select)
|
|||||||
d->selected = select;
|
d->selected = select;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int Worksheet::sheetId() const
|
||||||
|
{
|
||||||
|
Q_D(const Worksheet);
|
||||||
|
return d->id;
|
||||||
|
}
|
||||||
|
|
||||||
void Worksheet::setRightToLeft(bool enable)
|
void Worksheet::setRightToLeft(bool enable)
|
||||||
{
|
{
|
||||||
Q_D(Worksheet);
|
Q_D(Worksheet);
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ private:
|
|||||||
friend class Package;
|
friend class Package;
|
||||||
friend class Workbook;
|
friend class Workbook;
|
||||||
friend class ::WorksheetTest;
|
friend class ::WorksheetTest;
|
||||||
Worksheet(const QString &sheetName, Workbook *book);
|
Worksheet(const QString &sheetName, int sheetId, Workbook *book);
|
||||||
|
|
||||||
void saveToXmlFile(QIODevice *device);
|
void saveToXmlFile(QIODevice *device);
|
||||||
QByteArray saveToXmlData();
|
QByteArray saveToXmlData();
|
||||||
@@ -97,6 +97,7 @@ private:
|
|||||||
bool isSelected() const;
|
bool isSelected() const;
|
||||||
void setHidden(bool hidden);
|
void setHidden(bool hidden);
|
||||||
void setSelected(bool select);
|
void setSelected(bool select);
|
||||||
|
int sheetId() const;
|
||||||
QStringList externUrlList() const;
|
QStringList externUrlList() const;
|
||||||
QStringList externDrawingList() const;
|
QStringList externDrawingList() const;
|
||||||
QList<QPair<QString, QString> > drawingLinks() const;
|
QList<QPair<QString, QString> > drawingLinks() const;
|
||||||
|
|||||||
@@ -223,6 +223,7 @@ public:
|
|||||||
bool default_row_zeroed;
|
bool default_row_zeroed;
|
||||||
|
|
||||||
QString name;
|
QString name;
|
||||||
|
int id;
|
||||||
bool hidden;
|
bool hidden;
|
||||||
bool selected;
|
bool selected;
|
||||||
bool right_to_left;
|
bool right_to_left;
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ WorksheetTest::WorksheetTest()
|
|||||||
|
|
||||||
void WorksheetTest::testEmptySheet()
|
void WorksheetTest::testEmptySheet()
|
||||||
{
|
{
|
||||||
QXlsx::Worksheet sheet("", 0);
|
QXlsx::Worksheet sheet("", 1, 0);
|
||||||
sheet.write("B1", 123);
|
sheet.write("B1", 123);
|
||||||
QByteArray xmldata = sheet.saveToXmlData();
|
QByteArray xmldata = sheet.saveToXmlData();
|
||||||
|
|
||||||
@@ -43,7 +43,7 @@ void WorksheetTest::testEmptySheet()
|
|||||||
|
|
||||||
void WorksheetTest::testWriteCells()
|
void WorksheetTest::testWriteCells()
|
||||||
{
|
{
|
||||||
QXlsx::Worksheet sheet("", 0);
|
QXlsx::Worksheet sheet("", 1, 0);
|
||||||
sheet.write("A1", 123);
|
sheet.write("A1", 123);
|
||||||
sheet.write("A2", "Hello");
|
sheet.write("A2", "Hello");
|
||||||
sheet.writeInlineString(2, 0, "Hello inline"); //A3
|
sheet.writeInlineString(2, 0, "Hello inline"); //A3
|
||||||
@@ -65,7 +65,7 @@ void WorksheetTest::testWriteCells()
|
|||||||
|
|
||||||
void WorksheetTest::testWriteHyperlinks()
|
void WorksheetTest::testWriteHyperlinks()
|
||||||
{
|
{
|
||||||
QXlsx::Worksheet sheet("", 0);
|
QXlsx::Worksheet sheet("", 1, 0);
|
||||||
sheet.write("A1", QUrl::fromUserInput("http://qt-project.org"));
|
sheet.write("A1", QUrl::fromUserInput("http://qt-project.org"));
|
||||||
sheet.write("B1", QUrl::fromUserInput("http://qt-project.org/abc"));
|
sheet.write("B1", QUrl::fromUserInput("http://qt-project.org/abc"));
|
||||||
sheet.write("C1", QUrl::fromUserInput("http://qt-project.org/abc.html#test"));
|
sheet.write("C1", QUrl::fromUserInput("http://qt-project.org/abc.html#test"));
|
||||||
@@ -89,7 +89,7 @@ void WorksheetTest::testWriteHyperlinks()
|
|||||||
|
|
||||||
void WorksheetTest::testMerge()
|
void WorksheetTest::testMerge()
|
||||||
{
|
{
|
||||||
QXlsx::Worksheet sheet("", 0);
|
QXlsx::Worksheet sheet("", 1, 0);
|
||||||
sheet.write("B1", 123);
|
sheet.write("B1", 123);
|
||||||
sheet.mergeCells("B1:B5");
|
sheet.mergeCells("B1:B5");
|
||||||
QByteArray xmldata = sheet.saveToXmlData();
|
QByteArray xmldata = sheet.saveToXmlData();
|
||||||
@@ -99,7 +99,7 @@ void WorksheetTest::testMerge()
|
|||||||
|
|
||||||
void WorksheetTest::testUnMerge()
|
void WorksheetTest::testUnMerge()
|
||||||
{
|
{
|
||||||
QXlsx::Worksheet sheet("", 0);
|
QXlsx::Worksheet sheet("", 1, 0);
|
||||||
sheet.write("B1", 123);
|
sheet.write("B1", 123);
|
||||||
sheet.mergeCells("B1:B5");
|
sheet.mergeCells("B1:B5");
|
||||||
sheet.unmergeCells("B1:B5");
|
sheet.unmergeCells("B1:B5");
|
||||||
@@ -125,7 +125,7 @@ void WorksheetTest::testReadSheetData()
|
|||||||
QXlsx::XmlStreamReader reader(xmlData);
|
QXlsx::XmlStreamReader reader(xmlData);
|
||||||
reader.readNextStartElement();//current node is sheetData
|
reader.readNextStartElement();//current node is sheetData
|
||||||
|
|
||||||
QXlsx::Worksheet sheet("", 0);
|
QXlsx::Worksheet sheet("", 1, 0);
|
||||||
sheet.d_ptr->sharedStrings()->addSharedString("Hello");
|
sheet.d_ptr->sharedStrings()->addSharedString("Hello");
|
||||||
sheet.d_ptr->readSheetData(reader);
|
sheet.d_ptr->readSheetData(reader);
|
||||||
|
|
||||||
@@ -162,7 +162,7 @@ void WorksheetTest::testReadColsInfo()
|
|||||||
QXlsx::XmlStreamReader reader(xmlData);
|
QXlsx::XmlStreamReader reader(xmlData);
|
||||||
reader.readNextStartElement();//current node is cols
|
reader.readNextStartElement();//current node is cols
|
||||||
|
|
||||||
QXlsx::Worksheet sheet("", 0);
|
QXlsx::Worksheet sheet("", 1, 0);
|
||||||
sheet.d_ptr->readColumnsInfo(reader);
|
sheet.d_ptr->readColumnsInfo(reader);
|
||||||
|
|
||||||
QCOMPARE(sheet.d_ptr->colsInfo.size(), 1);
|
QCOMPARE(sheet.d_ptr->colsInfo.size(), 1);
|
||||||
@@ -182,7 +182,7 @@ void WorksheetTest::testReadRowsInfo()
|
|||||||
QXlsx::XmlStreamReader reader(xmlData);
|
QXlsx::XmlStreamReader reader(xmlData);
|
||||||
reader.readNextStartElement();//current node is sheetData
|
reader.readNextStartElement();//current node is sheetData
|
||||||
|
|
||||||
QXlsx::Worksheet sheet("", 0);
|
QXlsx::Worksheet sheet("", 1, 0);
|
||||||
sheet.d_ptr->readSheetData(reader);
|
sheet.d_ptr->readSheetData(reader);
|
||||||
|
|
||||||
QCOMPARE(sheet.d_ptr->rowsInfo.size(), 1);
|
QCOMPARE(sheet.d_ptr->rowsInfo.size(), 1);
|
||||||
@@ -196,7 +196,7 @@ void WorksheetTest::testReadMergeCells()
|
|||||||
QXlsx::XmlStreamReader reader(xmlData);
|
QXlsx::XmlStreamReader reader(xmlData);
|
||||||
reader.readNextStartElement();//current node is mergeCells
|
reader.readNextStartElement();//current node is mergeCells
|
||||||
|
|
||||||
QXlsx::Worksheet sheet("", 0);
|
QXlsx::Worksheet sheet("", 1, 0);
|
||||||
sheet.d_ptr->readMergeCells(reader);
|
sheet.d_ptr->readMergeCells(reader);
|
||||||
|
|
||||||
QCOMPARE(sheet.d_ptr->merges.size(), 2);
|
QCOMPARE(sheet.d_ptr->merges.size(), 2);
|
||||||
|
|||||||
Reference in New Issue
Block a user