返回顶部

收藏

Qt 读写Excel,并显示到tablewidget

更多

最近用Qt在帮别人最一个管理工具,需要操作Excel,在网上找了大半天,发现大多都是对excel进行读操作,少有写的,而我的需求是,既需要从excel中读数 据,也需要网excel中写,同时需要和tablewidget关联,也就是,最后实现,可从excel中读取数据直接显示到tablewidget中,并且,可把t ablewidget中的数据导出到excel报表中,网上找了半天,没找到,多数都是抄来抄去的,于是就自己封装了一个类。

最近修改:最近在继续使用这个类操作Excel,发现向Excel中插入数据时,就然只能插入字符串类型或者整型,浮点数类型无法插入,第二个问题是,在线程中无法使 用这个类。

解决方案:关于第一个问题,我自己在类内部把插入的数据先toString成字符串再插入,但是接口不变,还是原来的SetCellData(int row,int column,QVarient data);

第二个问题,搜了一下,发现是在GUI中使用COM时,Qt内部代码会帮我们初始化OLE环境,但是线程中不会,得我们自己初始化,所以,我在类的构造函数中添加了初 始化的代码,在析构函数中清除环境。

经过改变后,类可以在线程中使用,也可以插入任何类型的数据

说明:该类使用COM操作excel,需要在.pro中加入CONFIG += qaxcontainer

三种用例demo,主要是Open函数,和Save,Close,接口简单

/*
    ExcelEngine excel; //创建excl对象
    excel.Open(QObject::tr("c:\\\\Test.xls"),1,false); //打开指定的xls文件的指定sheet,且指定是否可见

    int num = 0;
    for (int i=1; i<=10; i++)
    {
        for (int j=1; j<=10; j++)
        {
           excel.SetCellData(i,j,++num); //修改指定单元数据
        }
    }

    QVarient data = excel.GetCellData(1,1); //访问指定单元格数据
    excel.GetCellData(2,2);
    excel.GetCellData(3,3);
    excel.Save(); //保存
    excel.Close();
*/

//导入数据到tablewidget中
/*
    ExcelEngine excel(QObject::tr("c:\\\\Import.xls"));
    excel.Open();
    excel.ReadDataToTable(ui->tableWidget); //导入到widget中
    excel.Close();
*/

//把tablewidget中的数据导出到excel中
/*
    ExcelEngine excel(QObject::tr("c:\\\\Export.xls"));
    excel.Open();
    excel.SaveDataFrTable(ui->tableWidget); //导出报表
    excel.Close();
*/
//该片段来自于http://outofmemory.cn

标签:c++,Excel

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. 绚丽也尘埃 发表 2013-01-04 04:08:11 JsonCpp使用优化(二)
  2. ritesh kumar (norepl 发表 2012-02-04 21:43:05 Prompting and letting user save csv in a desired f
  3. mortoray 发表 2013-03-25 04:27:22 Why do we need pointers/references?
  4. Herb Sutter 发表 2012-06-05 19:10:01 GotW #105: Smart Pointers, Part 3 (Difficulty: 7/1
  5. Herb Sutter 发表 2012-11-06 21:11:12 Friday’s Q&A session now online
  6. Boris Kolpackov 发表 2012-11-22 12:15:22 ODB 2.1.1 Released
  7. shakuner 发表 2013-04-01 07:59:16 C++中虚函数的作用是什么?它应该怎么用呢?
  8. Jennifer Leaf [MSFT] 发表 2013-04-26 18:23:00 NuGet for C++
  9. Qiang 发表 2010-05-30 16:46:00 DllMain 中的死锁问题
  10. 小蝴蝶 发表 2013-06-12 15:52:32 流水账No.130612
  11. admin 发表 2012-09-28 07:50:16 基于XMPP协议IM技术选型
  12. Picturepan2 发表 2013-08-05 02:06:03 Infogr.am 图表创建服务发布 Excel 2013 插件

发表评论