• Qt中将QTableView中的数据导出为Excel文件


    如果你在做一个报表类的程序,可能将内容导出为Excel文件是一项必须的功能。之前使用MFC的时候我就写过一个类,用于将grid中的数据导出为Excel文件。在使用了QtSql模块后,我很容易的将这个类改写应用在Qt程序中。类的名字叫“ExportExcelObject”。使用起来很简单:

    [cpp] view plaincopy
     
    1. // 1. declare an object   
    2.   
    3. // – fileName Excel 文件路径  
    4.   
    5. // – sheetName Excel 工作表(sheet)名称  
    6.   
    7. // – tableView 需要导出的QTableView指针  
    8.   
    9. ExportExcelObject obj(fileName, sheetName, tableView);  
    10.   
    11.    
    12.   
    13.          // 2. define fields (columns) to the Excel sheet file  
    14.   
    15. // – 第1个参数是QTableView的列  
    16.   
    17. // – 第2个参数是对应该列的Excel sheet中的列名  
    18.   
    19. // – 第3个参数是该列的类型,可以使用char(x) (x最大255),int,datetime, 等  
    20.   
    21.     obj.addField(1, tr("name"), "char(60)");  
    22.   
    23.     obj.addField(2, tr("ID"), "int");  
    24.   
    25. obj.addField(3, tr("time"), " datetime ");  
    26.   
    27.    
    28.   
    29. // 3. 该类有特定的SIGNAL用于连接一个progress控件,可以显示导出进度  
    30.   
    31. connect(&obj, SIGNAL(exportedRowCount(int)), progressBar, SLOT(setValue(int)));  
    32.   
    33.    
    34.   
    35.          // 4. do the work  
    36.   
    37.          int retVal = obj.export2Excel();  
    38.   
    39. if(retVal > 0)  
    40.   
    41. {//done  
    42.   
    43. }  
    44.   
    45. else  
    46.   
    47. {//something wrong  
    48.   
    49. }  

             那么这个类是怎样实现的呢?

    1. 将Excel文件当成是一个数据库

    使用MS的ODBC或ADO都可以将Excel文件当做一个数据库,那么我们只需要使用下面这个DSN连接串去创建并连接至该Excel文件:

    [cpp] view plaincopy
     
    1. QString dsn = QString("DRIVER={Microsoft Excel Driver (*.xls)};DSN=''; FIRSTROWHASNAMES=1;;CREATE_DB=/"%1/";DBQ=%2").  
    2.   
    3.                   arg(excelFilePath).arg(excelFilePath);  

      

    1. 将Excel的工作表(sheet)当成是一个数据库表

    可以使用SQL语句“CREATE TABLE” 去创建一个工作表。

    1. 向表中插入数据

    使用SQL的“INSERT”语句插入数据。

    1. Unicode支持

    是的,列名和数据都支持Unicode。

    我写了个例子用于演示这个类(下载)。这个程序在WinXP/Vista/7都可正常运行。这个程序并不需要你的电脑上安装了Excel,因为{Microsoft Excel Driver (*.xls)}从Windows 2000开始就是系统自带支持的。

    http://blog.csdn.net/superjoel/article/details/5321404

  • 相关阅读:
    Linux中python更换pip源
    Centos7安装yarn
    协方差矩阵
    详解UML中的6大关系(关联、依赖、聚合、组合、泛化、实现)
    c# XML和实体类之间相互转换(序列化和反序列化)(转)
    C++函数传递类对象和类对象的引用
    C++三种继承方式
    1200. 最小绝对差(排序)
    1218. 最长定差子序列(动态规划)
    1009_Product of Polynomials (25分)[模拟]
  • 原文地址:https://www.cnblogs.com/findumars/p/5089750.html
Copyright © 2020-2023  润新知