Qt中將QTableView中的數據導出爲Excel文件

轉載自:http://blog.csdn.net/superjoel/article/details/5321404

作者的原圖我就不貼了!

源作者的下載地址,下載比較困難,我有幸下載下來。整個工程可用,源碼也容易理解,很時候新手同學,我把源碼傳到csdn。下載地址http://download.csdn.net/detail/andy_baby/8661827


如果你在做一個報表類的程序,可能將內容導出爲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。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章