started with xls import

This commit is contained in:
Martin Brodbeck 2018-08-01 15:36:41 +02:00
parent 7d405234d4
commit e295c6a743
7 changed files with 73 additions and 4 deletions

View File

@ -2,6 +2,8 @@ set(Boost_USE_STATIC_LIBS ON)
find_package(Boost 1.62 COMPONENTS date_time REQUIRED) find_package(Boost 1.62 COMPONENTS date_time REQUIRED)
find_package(SQLite3 REQUIRED) find_package(SQLite3 REQUIRED)
find_package(PkgConfig REQUIRED)
pkg_check_modules(XLNT REQUIRED xlnt)
set(CORE_SOURCES set(CORE_SOURCES
database.cpp database.cpp
@ -10,13 +12,12 @@ set(CORE_SOURCES
article.cpp article.cpp
sale.cpp sale.cpp
marketplace.cpp marketplace.cpp
excelreader.cpp
) )
add_library(core STATIC ${CORE_SOURCES}) add_library(core STATIC ${CORE_SOURCES})
target_link_libraries(core Boost::boost Boost::date_time) target_link_libraries(core Boost::boost Boost::date_time sqlite3 ${XLNT_LIBRARIES})
if (WIN32) if (WIN32)
target_link_libraries(core sqlite3 bcrypt) target_link_libraries(core bcrypt)
else()
target_link_libraries(core sqlite3)
endif() endif()
target_include_directories(core PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) target_include_directories(core PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})

18
src/core/excelreader.cpp Normal file
View File

@ -0,0 +1,18 @@
#include "excelreader.h"
#include <xlnt/xlnt.hpp>
void ExcelReader::readSellersFromFile(const std::string& filename, Marketplace* market)
{
xlnt::workbook wb;
wb.load(filename);
auto ws = wb.sheet_by_index(0);
const int START_ROW = 6;
const int END_ROW = 349;
for (const auto& row : ws.rows(false)) {
//auto test = row[0].value<int>();
//std::cout << test << "\n";
}
}

18
src/core/excelreader.h Normal file
View File

@ -0,0 +1,18 @@
#ifndef EXCEL_READER_H
#define EXCEL_READER_H
#include "seller.h"
#include "marketplace.h"
#include <memory>
#include <string>
#include <vector>
class ExcelReader
{
public:
static void readSellersFromFile(const std::string& filename,
Marketplace* market);
};
#endif

View File

@ -7,6 +7,8 @@
#include <vector> #include <vector>
class ExcelReader;
namespace namespace
{ {
using SellersVec = std::vector<std::unique_ptr<Seller>>; using SellersVec = std::vector<std::unique_ptr<Seller>>;
@ -49,6 +51,8 @@ class Marketplace
void exportReportToCSV(const std::string& filename, int feeInPercent, int maxFeeInEuro); void exportReportToCSV(const std::string& filename, int feeInPercent, int maxFeeInEuro);
friend class ExcelReader;
private: private:
SellersVec sellers_; SellersVec sellers_;
SalesVec sales_; SalesVec sales_;

View File

@ -8,8 +8,11 @@
#include "sellerdialog.h" #include "sellerdialog.h"
#include "settingsdialog.h" #include "settingsdialog.h"
#include <excelreader.h>
#include <regex> #include <regex>
#include <QFileDialog>
#include <QMessageBox> #include <QMessageBox>
#include <QSettings> #include <QSettings>
@ -58,6 +61,8 @@ MainWindow::MainWindow()
this->setWindowTitle("KIMA2 - Kasse Nr. " + this->setWindowTitle("KIMA2 - Kasse Nr. " +
QSettings().value("global/cashPointNo").toString()); QSettings().value("global/cashPointNo").toString());
}); });
connect(ui_.importExcelAction, &QAction::triggered, this,
&MainWindow::onImportExcelActionTriggered);
} }
void MainWindow::onActionEditSellerTriggered() void MainWindow::onActionEditSellerTriggered()
@ -232,4 +237,20 @@ void MainWindow::onAbout()
"<p>KIMA2 ist ein kleines Kassenprogramm für Kindersachenmärkte.<p />" "<p>KIMA2 ist ein kleines Kassenprogramm für Kindersachenmärkte.<p />"
"<p>Copyright © Martin Brodbeck &lt;<a href=mailto:martin@brodbeck-online.de" "<p>Copyright © Martin Brodbeck &lt;<a href=mailto:martin@brodbeck-online.de"
">info@rustysoft.de</a>&gt;</p>"); ">info@rustysoft.de</a>&gt;</p>");
}
void MainWindow::onImportExcelActionTriggered()
{
if (!marketplace_->getSales().empty()) {
QMessageBox(QMessageBox::Icon::Information, "Import nicht möglich",
"Der Import ist nicht möglich, da schon Verkäufe getätigt wurden.",
QMessageBox::StandardButton::Ok, this)
.exec();
return;
}
auto filename = QFileDialog::getOpenFileName(this, "Verkäufer importieren", QString(),
"Excel Dateien (*.xlsx *.xls)");
ExcelReader::readSellersFromFile(filename.toStdString(), marketplace_.get());
} }

View File

@ -32,6 +32,7 @@ class MainWindow : public QMainWindow
void onActionEditSellerTriggered(); void onActionEditSellerTriggered();
void onSellerNoEditCheckSellerNo(); void onSellerNoEditCheckSellerNo();
void onPaidButtonTriggered(); void onPaidButtonTriggered();
void onImportExcelActionTriggered();
void setSaleModel(); void setSaleModel();
Ui::MainWindow ui_; Ui::MainWindow ui_;

View File

@ -404,6 +404,7 @@ drucken</string>
<string>&amp;Verkäufer</string> <string>&amp;Verkäufer</string>
</property> </property>
<addaction name="actionEditSeller"/> <addaction name="actionEditSeller"/>
<addaction name="importExcelAction"/>
</widget> </widget>
<widget class="QMenu" name="menuHilfe"> <widget class="QMenu" name="menuHilfe">
<property name="title"> <property name="title">
@ -458,6 +459,11 @@ drucken</string>
<string>Auswertung</string> <string>Auswertung</string>
</property> </property>
</action> </action>
<action name="importExcelAction">
<property name="text">
<string>Importieren (Excel)</string>
</property>
</action>
</widget> </widget>
<resources/> <resources/>
<connections/> <connections/>