Qtの操作Excel(QtXlsxWriter)
6904 ワード
まずqtxlslwriterというライブラリをインストールし、アドレスをダウンロードする必要があります.
https://github.com/leolin0518/QtXlsxWriter
qtのコマンドラインツールを開く、対応する.Proディレクトリ、コマンドを実行してインストールします.
1.qmake(makefileファイルを生成)
2.mingw 32-make(ソースコードのコンパイル)
3.mingw 32-make install(コンパイルインストール)
これで、エラーが発生しなければ、順調にインストールに成功しました!
ドキュメント:http://qtxlsx.debao.me/
参照ドキュメント:
Qt操作ExcelファイルQtXlsxWriterの構成使用説明
Qt下Excelレポート生成のもう一つの利器---QtXlsxWriter
http://www.cnblogs.com/lvdongjie/p/4402294.html
C++読み書きEXCELファイル方式比較
QtでQAxObjectでExcelを操作する
問題解決方法:(activeperlをダウンロードしてインストール)
簡単な例です
ヘッダファイル
ソースファイル
https://github.com/leolin0518/QtXlsxWriter
qtのコマンドラインツールを開く、対応する.Proディレクトリ、コマンドを実行してインストールします.
1.qmake(makefileファイルを生成)
2.mingw 32-make(ソースコードのコンパイル)
3.mingw 32-make install(コンパイルインストール)
これで、エラーが発生しなければ、順調にインストールに成功しました!
ドキュメント:http://qtxlsx.debao.me/
参照ドキュメント:
Qt操作ExcelファイルQtXlsxWriterの構成使用説明
Qt下Excelレポート生成のもう一つの利器---QtXlsxWriter
http://www.cnblogs.com/lvdongjie/p/4402294.html
C++読み書きEXCELファイル方式比較
QtでQAxObjectでExcelを操作する
問題解決方法:(activeperlをダウンロードしてインストール)
簡単な例です
ヘッダファイル
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include
#include
#include
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
void init();
private slots:
void slot_writeToExcel();
private:
QTableWidget *tableWidget;
QPushButton *btn;
};
#endif // MAINWINDOW_H
ソースファイル
#include "mainwindow.h"
#include
#include
#include
#include
#include
#include
#include "xlsxabstractsheet.h"
QTXLSX_USE_NAMESPACE //
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
init();
}
MainWindow::~MainWindow()
{
}
void MainWindow::init()
{
//
QWidget *widget = new QWidget(this);
QHBoxLayout *hLayout = new QHBoxLayout;
QVBoxLayout *vLayout = new QVBoxLayout;
tableWidget = new QTableWidget(8, 10, widget);
btn = new QPushButton(tr(" Excel"), widget);
connect(btn, SIGNAL(clicked()), this, SLOT(slot_writeToExcel()));
// hLayout->addSpacing(500);
hLayout->addStretch(10);
hLayout->addWidget(btn);
vLayout->addWidget(tableWidget);
vLayout->addLayout(hLayout);
widget->setLayout(vLayout);
setCentralWidget(widget);
resize(500, 300);
int rows = tableWidget->rowCount(); //
int cols = tableWidget->columnCount(); //
for(int i = 0; i < rows; i++){
for(int j = 0; j < cols; j++){
QTableWidgetItem *item = new QTableWidgetItem(tr("%1").arg(i+j));
item->setTextAlignment(Qt::AlignCenter);
tableWidget->setItem(i, j, item);
}
}
tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
tableWidget->setEditTriggers(QHeaderView::NoEditTriggers); //
tableWidget->setSelectionBehavior(QHeaderView::SelectRows); //
tableWidget->horizontalHeader()->setVisible(false); //
tableWidget->verticalHeader()->setVisible(false); //
}
void MainWindow::slot_writeToExcel()
{
QXlsx::Document xlsx;
int rows = tableWidget->rowCount(); //
int cols = tableWidget->columnCount(); //
QString text;
for(int i = 0; i < rows; i++){
for(int j = 0; j < cols; j++){
text = tableWidget->item(i, j)->text();
xlsx.write(i + 1, j + 1, text);
}
}
QXlsx::Format format; //
format.setFont(QFont(tr(" "))); //
format.setFontBold(true); //
format.setFontItalic(true); //
format.setFontUnderline(Format::FontUnderlineSingle); //
format.setFontColor(Qt::red); //
format.setHorizontalAlignment(Format::AlignRight); //
xlsx.setRowFormat(3, 5, format);
xlsx.setRowHidden(2, true); //
xlsx.renameSheet(tr("Sheet1"), tr(" ")); // Sheet
xlsx.copySheet(" ", "CopyOfTheFirst"); //
xlsx.selectSheet("CopyOfTheFirst"); // Sheet
xlsx.write(25, 2, "On the Copy Sheet"); //
qDebug() << "111:" << xlsx.read(25, 2).toString(); //
qDebug() << "222:" << xlsx.read("B25").toString(); //
xlsx.copySheet("CopyOfTheFirst", "work1"); //
xlsx.moveSheet("work1", 0); // Sheet Excel
xlsx.sheet("work1")->setVisible(true); // Sheet
// xlsx.sheet("CopyOfTheFirst")->setVisible(false); // Sheet
// xlsx.deleteSheet("CopyOfTheFirst"); // Sheet
xlsx.addSheet(tr("work2")); // Sheet
// xlsx.sheet("work2")->setSheetState(AbstractSheet::SS_VeryHidden); // Sheet
QString curSheetName = xlsx.currentSheet()->sheetName();
qDebug() << "curSheetName" << curSheetName;
xlsx.currentWorksheet()->setGridLinesVisible(false); //
xlsx.mergeCells("B1:B3"); // B1:B3
//
xlsx.write("A1", "View the properties through:");
xlsx.write("A2", "Office Button -> Prepare -> Properties option in Excel");
xlsx.setDocumentProperty("title", "This is an example spreadsheet");
xlsx.setDocumentProperty("subject", "With document properties");
xlsx.setDocumentProperty("creator", "Debao Zhang");
xlsx.setDocumentProperty("company", "HMICN");
xlsx.setDocumentProperty("category", "Example spreadsheets");
xlsx.setDocumentProperty("keywords", "Sample, Example, Properties");
xlsx.setDocumentProperty("description", "Created with Qt Xlsx");
xlsx.selectSheet(" "); // Sheet
// 、
QXlsx::CellRange range;
range = xlsx.dimension();
int rowCount = range.rowCount();
int colCount = range.columnCount();
qDebug() << "rowCount:" << rowCount << "colCount:" << colCount << xlsx.currentSheet()->sheetName();
//
for (int i = 1; i <= rowCount; i++){
for (int j = 1; j <= colCount; j++){
qDebug() << i << j << xlsx.cellAt(i, j)->value().toString();
}
}
xlsx.saveAs("Test.xlsx"); //
}