现在的位置: 首页 > 综合 > 正文

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

2013年10月05日 ⁄ 综合 ⁄ 共 2298字 ⁄ 字号 评论关闭

如果你在做一个报表类的程序,可能将内容导出为
Excel

文件是一项必须的功能。之前使用
MFC

的时候我就写过一个类,用于将
grid

中的数据导出为
Excel

文件。在使用了
QtSql

模块后,我很容易的将这个类改写应用在
Qt

程序中。类的名字叫“
ExportExcelObject

”。使用起来很简单:

  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

文件:

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


  

2.
      



Excel

的工作表(
sheet

)当成是一个数据库表

可以使用
SQL

语句
“CREATE TABLE”

去创建一个工作表。

 

3.
      


向表中插入数据

使用
SQL

的“
INSERT

”语句插入数据。

 

4.
      


Unicode

支持

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


 

我写了个例子用于演示这个类(下载
)。这个程序在

WinXP/Vista/7

都可正常运行。这个程序并不需要你的电脑上安装了
Excel

,因为
{Microsoft Excel Driver (*.xls)}


Windows 2000

开始就是系统自带支持的。

 

Sample

抱歉!评论已关闭.