Debao Zhang
11 years ago
9 changed files with 172 additions and 3 deletions
@ -0,0 +1,10 @@ |
|||||
|
#include "xlsxxmlreader_p.h" |
||||
|
|
||||
|
namespace QXlsx { |
||||
|
|
||||
|
XmlStreamReader::XmlStreamReader(QIODevice *device) : |
||||
|
QXmlStreamReader(device) |
||||
|
{ |
||||
|
} |
||||
|
|
||||
|
} // namespace QXlsx
|
@ -0,0 +1,16 @@ |
|||||
|
#ifndef QXLSX_XLSXXMLREADER_H |
||||
|
#define QXLSX_XLSXXMLREADER_H |
||||
|
|
||||
|
#include <QXmlStreamReader> |
||||
|
|
||||
|
namespace QXlsx { |
||||
|
|
||||
|
class XmlStreamReader : public QXmlStreamReader |
||||
|
{ |
||||
|
public: |
||||
|
XmlStreamReader(QIODevice *device); |
||||
|
}; |
||||
|
|
||||
|
} // namespace QXlsx
|
||||
|
|
||||
|
#endif // QXLSX_XLSXXMLREADER_H
|
@ -0,0 +1,48 @@ |
|||||
|
#include "xlsxzipreader_p.h" |
||||
|
|
||||
|
#include <private/qzipreader_p.h> |
||||
|
|
||||
|
namespace QXlsx { |
||||
|
|
||||
|
ZipReader::ZipReader(const QString &filePath) : |
||||
|
m_reader(new QZipReader(filePath)) |
||||
|
{ |
||||
|
init(); |
||||
|
} |
||||
|
|
||||
|
ZipReader::ZipReader(QIODevice *device) : |
||||
|
m_reader(new QZipReader(device)) |
||||
|
{ |
||||
|
init(); |
||||
|
} |
||||
|
|
||||
|
ZipReader::~ZipReader() |
||||
|
{ |
||||
|
|
||||
|
} |
||||
|
|
||||
|
void ZipReader::init() |
||||
|
{ |
||||
|
QList<QZipReader::FileInfo> allFiles = m_reader->fileInfoList(); |
||||
|
foreach (const QZipReader::FileInfo &fi, allFiles) { |
||||
|
if (fi.isFile) |
||||
|
m_filePaths.append(fi.filePath); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
bool ZipReader::exists() const |
||||
|
{ |
||||
|
return m_reader->exists(); |
||||
|
} |
||||
|
|
||||
|
QStringList ZipReader::filePaths() const |
||||
|
{ |
||||
|
return m_filePaths; |
||||
|
} |
||||
|
|
||||
|
QByteArray ZipReader::fileData(const QString &fileName) const |
||||
|
{ |
||||
|
return m_reader->fileData(fileName); |
||||
|
} |
||||
|
|
||||
|
} // namespace QXlsx
|
@ -0,0 +1,31 @@ |
|||||
|
#ifndef QXLSX_XLSXZIPREADER_P_H |
||||
|
#define QXLSX_XLSXZIPREADER_P_H |
||||
|
|
||||
|
#include "xlsxglobal.h" |
||||
|
#include <QScopedPointer> |
||||
|
#include <QStringList> |
||||
|
class QZipReader; |
||||
|
class QIODevice; |
||||
|
|
||||
|
namespace QXlsx { |
||||
|
|
||||
|
class XLSX_AUTOTEST_EXPORT ZipReader |
||||
|
{ |
||||
|
public: |
||||
|
explicit ZipReader(const QString &fileName); |
||||
|
explicit ZipReader(QIODevice *device); |
||||
|
~ZipReader(); |
||||
|
bool exists() const; |
||||
|
QStringList filePaths() const; |
||||
|
QByteArray fileData(const QString &fileName) const; |
||||
|
|
||||
|
private: |
||||
|
Q_DISABLE_COPY(ZipReader) |
||||
|
void init(); |
||||
|
QScopedPointer<QZipReader> m_reader; |
||||
|
QStringList m_filePaths; |
||||
|
}; |
||||
|
|
||||
|
} // namespace QXlsx
|
||||
|
|
||||
|
#endif // QXLSX_XLSXZIPREADER_P_H
|
@ -1,4 +1,5 @@ |
|||||
TEMPLATE=subdirs |
TEMPLATE=subdirs |
||||
SUBDIRS=\ |
SUBDIRS=\ |
||||
utility \ |
utility \ |
||||
mergecell |
mergecell \ |
||||
|
zipreader |
||||
|
@ -0,0 +1,40 @@ |
|||||
|
#include "private/xlsxzipreader_p.h" |
||||
|
#include <QString> |
||||
|
#include <QtTest> |
||||
|
#include <QBuffer> |
||||
|
|
||||
|
const char fileContent[] = "\x50\x4B\x03\x04\x0A\x00\x00\x00\x00\x00\x8F\x51\x25\x43\x82\x89\xD1\xF7\x05\x00\x00\x00\x05\x00\x00\x00\x09\x00\x00\x00\x68\x65\x6C\x6C\x6F\x2E\x74\x78\x74\x48\x65\x6C\x6C\x6F\x50\x4B\x03\x04\x0A\x00\x00\x00\x00\x00\xB8\x53\x25\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x71\x74\x2F\x50\x4B\x03\x04\x0A\x00\x00\x00\x00\x00\x92\x51\x25\x43\x2E\x19\xFC\x34\x04\x00\x00\x00\x04\x00\x00\x00\x0B\x00\x00\x00\x71\x74\x2F\x78\x6C\x73\x78\x2E\x74\x78\x74\x58\x6C\x73\x78\x50\x4B\x01\x02\x14\x00\x0A\x00\x00\x00\x00\x00\x8F\x51\x25\x43\x82\x89\xD1\xF7\x05\x00\x00\x00\x05\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x01\x00\x20\x00\x00\x00\x00\x00\x00\x00\x68\x65\x6C\x6C\x6F\x2E\x74\x78\x74\x50\x4B\x01\x02\x14\x00\x0A\x00\x00\x00\x00\x00\xB8\x53\x25\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x2C\x00\x00\x00\x71\x74\x2F\x50\x4B\x01\x02\x14\x00\x0A\x00\x00\x00\x00\x00\x92\x51\x25\x43\x2E\x19\xFC\x34\x04\x00\x00\x00\x04\x00\x00\x00\x0B\x00\x00\x00\x00\x00\x00\x00\x01\x00\x20\x00\x00\x00\x4D\x00\x00\x00\x71\x74\x2F\x78\x6C\x73\x78\x2E\x74\x78\x74\x50\x4B\x05\x06\x00\x00\x00\x00\x03\x00\x03\x00\xA1\x00\x00\x00\x7A\x00\x00\x00\x00\x00"; |
||||
|
|
||||
|
class ZipReaderTest : public QObject |
||||
|
{ |
||||
|
Q_OBJECT |
||||
|
|
||||
|
public: |
||||
|
ZipReaderTest(); |
||||
|
|
||||
|
private Q_SLOTS: |
||||
|
void testFileList(); |
||||
|
}; |
||||
|
|
||||
|
ZipReaderTest::ZipReaderTest() |
||||
|
{ |
||||
|
} |
||||
|
|
||||
|
void ZipReaderTest::testFileList() |
||||
|
{ |
||||
|
QByteArray data(fileContent, sizeof(fileContent) - 1); |
||||
|
QBuffer buffer(&data); |
||||
|
buffer.open(QIODevice::ReadOnly); |
||||
|
|
||||
|
QXlsx::ZipReader reader(&buffer); |
||||
|
|
||||
|
QStringList files = reader.filePaths(); |
||||
|
QVERIFY(files.contains("hello.txt")); |
||||
|
QVERIFY(files.contains("qt/xlsx.txt")); |
||||
|
QCOMPARE(reader.fileData("hello.txt"), QByteArray("Hello")); |
||||
|
QCOMPARE(reader.fileData("qt/xlsx.txt"), QByteArray("Xlsx")); |
||||
|
} |
||||
|
|
||||
|
QTEST_APPLESS_MAIN(ZipReaderTest) |
||||
|
|
||||
|
#include "tst_zipreadertest.moc" |
@ -0,0 +1,18 @@ |
|||||
|
#------------------------------------------------- |
||||
|
# |
||||
|
# Project created by QtCreator 2013-09-05T10:09:38 |
||||
|
# |
||||
|
#------------------------------------------------- |
||||
|
|
||||
|
QT += testlib xlsx xlsx-private |
||||
|
CONFIG += testcase |
||||
|
DEFINES += XLSX_TEST |
||||
|
|
||||
|
TARGET = tst_zipreadertest |
||||
|
CONFIG += console |
||||
|
CONFIG -= app_bundle |
||||
|
|
||||
|
TEMPLATE = app |
||||
|
|
||||
|
SOURCES += tst_zipreadertest.cpp |
||||
|
DEFINES += SRCDIR=\\\"$$PWD/\\\" |
Loading…
Reference in new issue