diff --git a/Copycat/Copycat.pro b/Copycat/Copycat.pro new file mode 100644 index 0000000..56a742a --- /dev/null +++ b/Copycat/Copycat.pro @@ -0,0 +1,54 @@ +#------------------------------------------------- +# +# Copycat.pro +# +#------------------------------------------------- +# QXlsx +# MIT License +# https://github.com/j2doll/QXlsx +#------------------------------------------------- +# QtXlsx +# https://github.com/dbzhang800/QtXlsxWriter +# http://qtxlsx.debao.me/ +# MIT License +#------------------------------------------------- + +TARGET = Copycat +TEMPLATE = app + +QT += core +QT += gui +QT += widgets + +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets + +# The following define makes your compiler emit warnings if you use +# any feature of Qt which has been marked as deprecated (the exact warnings +# depend on your compiler). Please consult the documentation of the +# deprecated API in order to know how to port your code away from it. +DEFINES += QT_DEPRECATED_WARNINGS + +# You can also make your code fail to compile if you use deprecated APIs. +# In order to do so, uncomment the following line. +# You can also select to disable deprecated APIs only up to a certain version of Qt. +#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 + +# NOTE: You can fix value of QXlsx path of source code. +# QXLSX_PARENTPATH=./ +# QXLSX_HEADERPATH=./header/ +# QXLSX_SOURCEPATH=./source/ +include(../QXlsx/QXlsx.pri) + +HEADERS += \ +MainWindow.h \ + XlsxTab.h \ + xlsx.h + +SOURCES += \ +main.cpp \ +MainWindow.cpp \ + XlsxTab.cpp + +FORMS += \ +MainWindow.ui + diff --git a/Copycat/MainWindow.cpp b/Copycat/MainWindow.cpp new file mode 100644 index 0000000..b93d251 --- /dev/null +++ b/Copycat/MainWindow.cpp @@ -0,0 +1,85 @@ + +#include +#include +#include +#include + +#include "MainWindow.h" +#include "ui_MainWindow.h" + +MainWindow::MainWindow(QWidget *parent) : + QMainWindow(parent), + ui(new Ui::MainWindow) +{ + xlsxDoc = NULL; + tabWidget = NULL; + + ui->setupUi(this); + + tabWidget = new QTabWidget(this); + +} + +MainWindow::~MainWindow() +{ + // tabWidget->close(); + + delete ui; + + if ( NULL != xlsxDoc ) + { + delete xlsxDoc; + } + +} + +void MainWindow::on_action_Quit_triggered() +{ + this->close(); +} + +void MainWindow::on_action_Open_triggered() +{ + // open dialog + QString fileName = QFileDialog::getOpenFileName(this, + tr("Open Excel"), ".", tr("Excel Files (*.xlsx)")); + + // tried to load xlsx + QXlsx::Document xlsxTmp(fileName); + if (!xlsxTmp.isLoadPackage()) + { + QMessageBox msgBox; + QString alertMsg = QString("Failed to load file.\n %1").arg(fileName); + msgBox.setText(alertMsg); + msgBox.exec(); + return; + } + xlsxTmp.deleteLater(); + + // clear xlsxDoc + if ( NULL != xlsxDoc ) + { + delete xlsxDoc; + xlsxDoc = NULL; + } + + // load new xlsx + xlsxDoc = new QXlsx::Document(fileName); + xlsxDoc->isLoadPackage(); + + //for ( int ic = 0 ; ic < tabWidget->count() ; ic++ ) { + // tabWidget->removeTab( ic ); + //} + + // quint32 sheetCount = xlsxDoc->sheetNames().count(); + foreach( QString curretnSheetName, xlsxDoc->sheetNames() ) { + QXlsx::AbstractSheet* currentSheet = xlsxDoc->sheet( curretnSheetName ); + + // + // new XlsxTab( this, currentSheet ) + } + + + + +} diff --git a/Copycat/MainWindow.h b/Copycat/MainWindow.h new file mode 100644 index 0000000..2f2a898 --- /dev/null +++ b/Copycat/MainWindow.h @@ -0,0 +1,34 @@ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include +#include +#include + +#include "xlsx.h" +#include "XlsxTab.h" + +namespace Ui { +class MainWindow; +} + +class MainWindow : public QMainWindow +{ + Q_OBJECT + +public: + explicit MainWindow(QWidget *parent = 0); + ~MainWindow(); + +private slots: + void on_action_Quit_triggered(); + void on_action_Open_triggered(); + +private: + Ui::MainWindow *ui; + QXlsx::Document* xlsxDoc; + QTabWidget *tabWidget; + +}; + +#endif // MAINWINDOW_H diff --git a/Copycat/MainWindow.ui b/Copycat/MainWindow.ui new file mode 100644 index 0000000..7b7b94e --- /dev/null +++ b/Copycat/MainWindow.ui @@ -0,0 +1,71 @@ + + + MainWindow + + + + 0 + 0 + 400 + 300 + + + + MainWindow + + + + + + 0 + 0 + 400 + 21 + + + + + &File + + + + + + + + + + + + TopToolBarArea + + + false + + + + + + &New + + + + + &Open + + + + + &Save + + + + + &Quit + + + + + + + diff --git a/Copycat/XlsxTab.cpp b/Copycat/XlsxTab.cpp new file mode 100644 index 0000000..feef374 --- /dev/null +++ b/Copycat/XlsxTab.cpp @@ -0,0 +1,24 @@ +// XlsxTab.cpp + +#include "XlsxTab.h" + +XlsxTab::XlsxTab(QWidget* parent, QXlsx::AbstractSheet* ptrSheet) + : QWidget(parent) +{ + table = NULL; + + if ( NULL != ptrSheet ) { + // set sheet data + } + +} + +XlsxTab::~XlsxTab() +{ + if ( NULL != table ) + { + table->deleteLater(); + } +} + + diff --git a/Copycat/XlsxTab.h b/Copycat/XlsxTab.h new file mode 100644 index 0000000..c230c57 --- /dev/null +++ b/Copycat/XlsxTab.h @@ -0,0 +1,28 @@ +// XlsxTab.h + +#ifndef XLSXTAB_H +#define XLSXTAB_H + +#include +#include +#include + +#include "xlsx.h" + +class XlsxTab : public QWidget +{ + Q_OBJECT +public: + explicit XlsxTab(QWidget* parent = nullptr, QXlsx::AbstractSheet* ptrSheet = nullptr); + virtual ~XlsxTab(); + +signals: + +public slots: + +protected: + QTableWidget* table; + +}; + +#endif // XLSXTAB_H diff --git a/Copycat/main.cpp b/Copycat/main.cpp new file mode 100644 index 0000000..00fbfc1 --- /dev/null +++ b/Copycat/main.cpp @@ -0,0 +1,16 @@ +// main.cpp + +#include + +#include "MainWindow.h" +#include + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + + MainWindow w; + w.show(); + + return a.exec(); +} diff --git a/Copycat/xlsx.h b/Copycat/xlsx.h new file mode 100644 index 0000000..b3730d5 --- /dev/null +++ b/Copycat/xlsx.h @@ -0,0 +1,14 @@ +#ifndef XLSX_H +#define XLSX_H + +#include "xlsxdocument.h" +#include "xlsxchartsheet.h" +#include "xlsxcellrange.h" +#include "xlsxchart.h" +#include "xlsxrichstring.h" +#include "xlsxworkbook.h" +#include "xlsxabstractsheet.h" + +using namespace QXlsx; + +#endif // XLSX_H