Browse Source

Add worksheet dimenstion access API

first/last Row/Column
master
Debao Zhang 11 years ago
parent
commit
3fefbb2235
  1. 62
      src/xlsx/xlsxworksheet.cpp
  2. 5
      src/xlsx/xlsxworksheet.h
  3. 77
      tests/auto/worksheet/tst_worksheet.cpp

62
src/xlsx/xlsxworksheet.cpp

@ -892,6 +892,68 @@ bool Worksheet::setColumn(int colFirst, int colLast, double width, Format *forma
return true;
}
/*!
* Returns the first row in the sheet that contains a used cell.
*/
int Worksheet::firstRow() const
{
Q_D(const Worksheet);
if (d->dim_rowmax == INT32_MIN) {
//Row dimenstion isn't set.
return 0;
} else {
return d->dim_rowmin;
}
}
/*!
* Returns the zero-based index of the row after the last row in
* the sheet that contains a used cell.
*/
int Worksheet::lastRow() const
{
Q_D(const Worksheet);
if (d->dim_rowmax == INT32_MIN) {
//Row dimenstion isn't set.
return 0;
} else {
return d->dim_rowmax + 1;
}
}
/*!
* Returns the first column in the sheet that contains a used cell.
*/
int Worksheet::firstColumn() const
{
Q_D(const Worksheet);
if (d->dim_colmax == INT32_MIN) {
//Col dimenstion isn't set.
return 0;
} else {
return d->dim_colmin;
}
}
/*!
* Returns the zero-based index of the column after the last column
* in the sheet that contains a used cell.
*/
int Worksheet::lastColumn() const
{
Q_D(const Worksheet);
if (d->dim_colmax == INT32_MIN) {
//Col dimenstion isn't set.
return 0;
} else {
return d->dim_colmax + 1;
}
}
Drawing *Worksheet::drawing() const
{
Q_D(const Worksheet);

5
src/xlsx/xlsxworksheet.h

@ -74,6 +74,11 @@ public:
bool setRow(int row, double height, Format* format=0, bool hidden=false);
bool setColumn(int colFirst, int colLast, double width, Format* format=0, bool hidden=false);
int firstRow() const;
int lastRow() const;
int firstColumn() const;
int lastColumn() const;
void setRightToLeft(bool enable);
void setZeroValuesHidden(bool enable);

77
tests/auto/worksheet/tst_worksheet.cpp

@ -17,6 +17,11 @@ public:
private Q_SLOTS:
void testEmptySheet();
void testFirstRow();
void testLastRow();
void testFirstColumn();
void testLastColumn();
void testWriteCells();
void testWriteHyperlinks();
void testMerge();
@ -41,6 +46,78 @@ void WorksheetTest::testEmptySheet()
QVERIFY2(!xmldata.contains("<mergeCell"), "");
}
void WorksheetTest::testFirstRow()
{
QXlsx::Worksheet sheet("", 1, 0);
QCOMPARE(sheet.firstRow(), 0); //Default
sheet.write(10000, 10000, "For test");
QCOMPARE(sheet.firstRow(), 10000);
sheet.write("C3", "Test");
QCOMPARE(sheet.firstRow(), 2); //Single Cell
sheet.write("B2", "Second");
QCOMPARE(sheet.firstRow(), 1);
sheet.write("D4", "Test");
QCOMPARE(sheet.firstRow(), 1);
}
void WorksheetTest::testLastRow()
{
QXlsx::Worksheet sheet("", 1, 0);
QCOMPARE(sheet.lastRow(), 0); //Default
sheet.write("C3", "Test");
QCOMPARE(sheet.lastRow(), 3); //Single Cell
sheet.write("B2", "Second");
QCOMPARE(sheet.lastRow(), 3);
sheet.write("D4", "Test");
QCOMPARE(sheet.lastRow(), 4);
sheet.write(10000, 10000, "For test");
QCOMPARE(sheet.lastRow(), 10001);
}
void WorksheetTest::testFirstColumn()
{
QXlsx::Worksheet sheet("", 1, 0);
QCOMPARE(sheet.firstColumn(), 0); //Default
sheet.write(10000, 10000, "For test");
QCOMPARE(sheet.firstColumn(), 10000);
sheet.write("C3", "Test");
QCOMPARE(sheet.firstColumn(), 2); //Single Cell
sheet.write("B2", "Second");
QCOMPARE(sheet.firstColumn(), 1);
sheet.write("D4", "Test");
QCOMPARE(sheet.firstColumn(), 1);
}
void WorksheetTest::testLastColumn()
{
QXlsx::Worksheet sheet("", 1, 0);
QCOMPARE(sheet.lastColumn(), 0); //Default
sheet.write("C3", "Test");
QCOMPARE(sheet.lastColumn(), 3); //Single Cell
sheet.write("B2", "Second");
QCOMPARE(sheet.lastColumn(), 3);
sheet.write("D4", "Test");
QCOMPARE(sheet.lastColumn(), 4);
sheet.write(10000, 10000, "For test");
QCOMPARE(sheet.lastColumn(), 10001);
}
void WorksheetTest::testWriteCells()
{
QXlsx::Worksheet sheet("", 1, 0);

Loading…
Cancel
Save