From e718d0d4f6770b455a06b87fea0391206d5e593f Mon Sep 17 00:00:00 2001 From: birkeh Date: Tue, 30 Jan 2018 20:03:08 +0100 Subject: [PATCH] . --- cdistributorwindow.cpp | 77 ++++++++++++++++++++++++++++++++++++++---- cdistributorwindow.h | 11 ++++++ cmainwindow.cpp | 21 ++++++++++-- 3 files changed, 99 insertions(+), 10 deletions(-) diff --git a/cdistributorwindow.cpp b/cdistributorwindow.cpp index 3434f39..e269e23 100644 --- a/cdistributorwindow.cpp +++ b/cdistributorwindow.cpp @@ -3,8 +3,6 @@ #include "cdistributoreditdialog.h" -#include "xlsxdocument.h" - #include "common.h" #include @@ -13,6 +11,10 @@ #include +#include +#include +#include + #include #include @@ -258,12 +260,73 @@ bool cDistributorWindow::canClose() void cDistributorWindow::exportList(const QString& szFileName) { -// QXlsx::Document xlsx; -// xlsx.write("A1", "Hello Qt!"); -// xlsx.saveAs("c:\\temp\\Test.xlsx"); + QFileInfo fileInfo(szFileName); + QString szType = fileInfo.suffix(); + if(!szType.compare("xlsx", Qt::CaseInsensitive)) + writeXLSX(szFileName); + else if(!szType.compare("csv", Qt::CaseInsensitive)) + writeText(szFileName); + else if(!szType.compare("txt", Qt::CaseInsensitive)) + writeText(szFileName); + else if(!szType.compare("xml", Qt::CaseInsensitive)) + writeXML(szFileName); + else if(!szType.compare("pdf", Qt::CaseInsensitive)) + writePDF(szFileName); +} + +void cDistributorWindow::writeXLSX(const QString& szFileName) +{ QXlsx::Document xlsx; - xlsx.write("A1", "Hello Qt!"); - xlsx.write("B1", "DaWig woa do!"); + + writeXLSXLine(xlsx, 1, tr("Name"), tr("Phone"), tr("Fax"), tr("Email"), tr("address"), tr("postal"), tr("city"), tr("country"), tr("link"), tr("description")); + + for(int x = 0;x < m_lpDistributorListModel->rowCount();x++) + { + QStandardItem* lpNameItem = m_lpDistributorListModel->itemFromIndex(m_lpDistributorListModel->index(x, 0)); + QStandardItem* lpPhoneItem = m_lpDistributorListModel->itemFromIndex(m_lpDistributorListModel->index(x, 1)); + QStandardItem* lpFaxItem = m_lpDistributorListModel->itemFromIndex(m_lpDistributorListModel->index(x, 2)); + QStandardItem* lpEmailItem = m_lpDistributorListModel->itemFromIndex(m_lpDistributorListModel->index(x, 3)); + QStandardItem* lpAddressItem = m_lpDistributorListModel->itemFromIndex(m_lpDistributorListModel->index(x, 4)); + QStandardItem* lpPostalItem = m_lpDistributorListModel->itemFromIndex(m_lpDistributorListModel->index(x, 5)); + QStandardItem* lpCityItem = m_lpDistributorListModel->itemFromIndex(m_lpDistributorListModel->index(x, 6)); + QStandardItem* lpCountryItem = m_lpDistributorListModel->itemFromIndex(m_lpDistributorListModel->index(x, 7)); + QStandardItem* lpLinkItem = m_lpDistributorListModel->itemFromIndex(m_lpDistributorListModel->index(x, 8)); + QStandardItem* lpDescriptionItem = m_lpDistributorListModel->itemFromIndex(m_lpDistributorListModel->index(x, 9)); + + writeXLSXLine(xlsx, x+2, lpNameItem->text(), lpPhoneItem->text(), lpFaxItem->text(), lpEmailItem->text(), lpAddressItem->text(), lpPostalItem->text(), lpCityItem->text(), lpCountryItem->text(), lpLinkItem->text(), lpDescriptionItem->text()); + } + xlsx.saveAs(szFileName); } + +void cDistributorWindow::writeXLSXLine(QXlsx::Document& xlsx, qint32 line, const QString& szName, const QString& szPhone, const QString& szFax, const QString& szEmail, const QString& szAddress, const QString& szPostal, const QString& szCity, const QString& szCountry, const QString& szLink, const QString& szDescription) +{ + QXlsx::Format format; + + if(line == 1) + format.setFontBold(true); + + xlsx.write(line, 1, szName, format); + xlsx.write(line, 2, szPhone, format); + xlsx.write(line, 3, szFax, format); + xlsx.write(line, 4, szEmail, format); + xlsx.write(line, 5, szAddress, format); + xlsx.write(line, 6, szPostal, format); + xlsx.write(line, 7, szCity, format); + xlsx.write(line, 8, szCountry, format); + xlsx.write(line, 9, szLink, format); + xlsx.write(line, 10, szDescription, format); +} + +void cDistributorWindow::writeText(const QString& szFileName) +{ +} + +void cDistributorWindow::writeXML(const QString& szFileName) +{ +} + +void cDistributorWindow::writePDF(const QString& szFileName) +{ +} diff --git a/cdistributorwindow.h b/cdistributorwindow.h index c2fe8dc..68ceb89 100644 --- a/cdistributorwindow.h +++ b/cdistributorwindow.h @@ -4,6 +4,8 @@ #include "cdistributor.h" +#include "xlsxdocument.h" + #include #include @@ -49,6 +51,15 @@ private: cDistributorList* m_lpDistributorList; void showDistributorList(); + + void writeXLSX(const QString& szFileName); + void writeXLSXLine(QXlsx::Document& xlsx, qint32 line, const QString& szName, const QString& szPhone, const QString& szFax, const QString& szEmail, const QString& szAddress, const QString& szPostal, const QString& szCity, const QString& szCountry, const QString& szLink, const QString& szDescription); + + void writeText(const QString& szFileName); + + void writeXML(const QString& szFileName); + + void writePDF(const QString& szFileName); }; #endif // CDISTRIBUTORWINDOW_H diff --git a/cmainwindow.cpp b/cmainwindow.cpp index 0a8d0a0..845bda2 100644 --- a/cmainwindow.cpp +++ b/cmainwindow.cpp @@ -13,8 +13,11 @@ #include #include +#include -//#include +#include + +#include #include @@ -433,8 +436,20 @@ void cMainWindow::onMenuDistributorDelete() void cMainWindow::onMenuDistributorExport() { - if(m_lpDistributorWindow) - m_lpDistributorWindow->exportList("c:\\temp\\test99.xlsx"); + if(!m_lpDistributorWindow) + return; + + QSettings settings; + QString szPath = settings.value("lastPath", QVariant::fromValue(QDir::homePath())).toString(); + QString szFileName = QFileDialog::getSaveFileName(this, tr("Export"), szPath, tr("Excel 2007+ (*.xlsx);;Text files (*.txt *.csv);;XML files (*.xml);;PDF (*.pdf)")); + + if(szFileName.isEmpty()) + return; + + QFileInfo fileInfo(szFileName); + settings.setValue("lastPath", fileInfo.absolutePath()); + + m_lpDistributorWindow->exportList(szFileName); } void cMainWindow::onMenuPartsShow()