Qt操作Excel文件 QtXlsxWriter的配置使用说明

QtXlsxWriter是一个Qt下的库,使用很方便。

项目主页:http://qtxlsx.debao.me/ 有一些演示
Git地址:https://github.com/dbzhang800/QtXlsxWriter

但是上面的git编译不通过。我的Qt5.7下有问题。
在Issures里面 #125 里看到有人修改过的版本支持5.6. qt5.6没试。 #135是解决办法,再次贴出。

下载新的git code:https://github.com/VSRonin/QtXlsxWriter
编译前下载perl. 下载地址(百度的,官网down不下来):http://rj.baidu.com/soft/detail/14792.html?ald
测试的环境:
windows7
Qt5.7
perl: ActivePerl_5.16.2.3010812913.msi

所有文件打包下载:code和activeperl打包下载

1.首先安装ActivePerl_5.16.2.3010812913.msi
2.下载down下来的code。https://github.com/VSRonin/QtXlsxWriter
3.把下载的QtXlsxWriter文件放在一个文件夹下。我的在D:\LeoQt\qt\QtStuProjects\QtXlsxWriter-master5.6\QtXlsxWriter5.6

开始菜单 –> Qt 5.7.0 –> 5.7 –> MinGW 5..3 (32-bit) –> Qt 5.7 for Desktop , 打开该命令行工具,就能使用 MinGW 和 Qt 库进行编译程序。

这里写图片描述

4 . cd /d D:\LeoQt\qt\QtStuProjects\QtXlsxWriter-master5.6\QtXlsxWriter5.6
依次执行
qmake
mingw32-make
mingw32-make install
这里写图片描述

安装ok后。
在pro文件添加

 QT += xlsx
#include <QtXlsx>
int main()
{
    QXlsx::Document xlsx;
    xlsx.write("A1", "Hello Qt!");
    xlsx.saveAs("Test.xlsx");
    return 0;
}

这里写图片描述



所有文件资源打包下载:git的code和activeperl软件打包下载


test demo

#include "mainwindow.h"
#include <QApplication>
#include <QtXlsx>
#include <QDate>
#include <QTime>
#include <QDebug>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();


    QXlsx::Document xlsx;
    xlsx.write("A1", "Hello Qt!");
    xlsx.write("A2", "Hxxello Qt!");


    xlsx.write("A1", "Hello Qt!");
    xlsx.write("A2", 12345);
    xlsx.write("A3", "=44+33");
    xlsx.write("A4", true);
    xlsx.write("A5", "http://qt-project.org");
    xlsx.write("A6", QDate(2013, 12, 27));
    xlsx.write("A7", QTime(6, 30));
    xlsx.write("B8", "sadwa");
    xlsx.write("B1", "Hello Qt!");
    xlsx.write("C1", "Hello Qt!");

    xlsx.saveAs("Test.xlsx");

    qDebug() << "ok...................................................";
    QXlsx::Document xlsx1("Test.xlsx");
    QString xx = xlsx1.read("A1").toString();
    QString xxx = xlsx1.read("A5").toString();
    qDebug() << "xx" << xx << "xxx" << xxx;

    qDebug()<<xlsx1.read("A1");
    qDebug()<<xlsx1.read("A2");
    qDebug()<<xlsx1.read("A3");
    qDebug()<<xlsx1.read("A4");
    qDebug()<<xlsx1.read("A5");
    qDebug()<<xlsx1.read("A6");
    qDebug()<<xlsx1.read("A7");


    qDebug() << "-----------------------------------------";

    for (int row=1; row<10; ++row) {
        if (QXlsx::Cell *cell=xlsx.cellAt(row, 1))
            qDebug()<<cell->value();
    }


    return a.exec();
}

结果

ok............
xx "Hello Qt!" xxx "http://qt-project.org"
QVariant(QString, "Hello Qt!")
QVariant(double, 12345)
QVariant(QString, "=44+33")
QVariant(bool, true)
QVariant(QString, "http://qt-project.org")
QVariant(QDate, QDate("2013-12-27"))
QVariant(QTime, QTime("06:30:00.000"))
-----------------------------------------
QVariant(QString, "Hello Qt!")
QVariant(double, 12345)
QVariant(double, 0)
QVariant(bool, true)
QVariant(QString, "http://qt-project.org")
QVariant(double, 41635)
QVariant(double, 0.270833)

这里写图片描述

//加载。获取exeel里的表单,并设置
void MainWindow::on_pushButton_load_clicked()
{
    QXlsx::Document xlsx_tmp(excel_path_file);//E:/Git/Qt/excel_read/Profile TR098.xlsx
    QStringList sheetname_tmp = xlsx_tmp.sheetNames();//表单名
    qDebug() << "表单名:"  << sheetname_tmp;
    ui->comboBox_sheet->addItems(sheetname_tmp);
    QString tmp = sheetname_tmp.join(",");
    qDebug() << "tmp:"  << tmp;
    //ui->textBrowser_print->append("当前文件中的sheet:"+ tmp);
    ui->labelsheet_log->setText("当前文件中表单为:"+ tmp);


   //获取选择表单的行列
   //xlsx_tmp.selectSheet(arg1);//选中表单
   QXlsx::CellRange range;
   range = xlsx_tmp.dimension();
   sheet_row = range.rowCount();//行
   sheet_col = range.columnCount();//列
   qDebug() << "打印当前表的行sheet_row:" << sheet_row << "   打印当前表的列sheet_col:" << sheet_col;

}

结果:

tmp_path: "E:/Git/Qt/excel_read/Profile TR098.xlsx"
path_file: "E:/Git/Qt/excel_read/Profile TR098.xlsx"
表单名: ("Detail", "Sheet3")
设置当前选中的表里面是项(列): "Detail"
QVariant(QString, "ID")
QVariant(QString, "Profile Name")
QVariant(QString, "Parameter Name")
hang_vlue: ("ID", "Profile Name", "Parameter Name")
tmp: "Detail,Sheet3"
打印当前表的行sheet_row: 1080    打印当前表的列sheet_col: 3

QtXlsxWriter 说明文档
http://qtxlsx.debao.me/qtxlsx-examples.html

http://qtxlsx.debao.me/qtxlsx-module.html

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值