《qt中将qtableview中的数据导出为excel文件 收藏》由会员分享,可在线阅读,更多相关《qt中将qtableview中的数据导出为excel文件 收藏(4页珍藏版)》请在金锄头文库上搜索。
1、Qt 中将 QTableView 中的数据导出为 Excel 文件 收藏 如果你在做一个报表类的程序,可能将内容导出为 Excel 文件是一项必须的功能。之前使 用 MFC 的时候我就写过一个类,用于将 grid 中的数据导出为 Excel 文件。在使用了 QtSql 模块后,我很容易的将这个类改写应用在 Qt 程序中。类的名字叫“ExportExcelObject” 。 使用起来很简单:view plaincopy to clipboardprint? 01./ 1. declare an object 02. 03./ fileName Excel 文件路径 04. 05./ sheetN
2、ame Excel 工作表(sheet)名称 06. 07./ tableView 需要导出的 QTableView 指针 08. 09.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)
3、 (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( 32. 33. 34. 35. / 4. do the work 36. 37. int retVal =
4、 obj.export2Excel(); 38. 39.if(retVal 0) 40. 41./done 42. 43. 44. 45.else 46. 47./something wrong 48. 49. / 1. declare an object / fileName Excel 文件路径/ sheetName Excel 工作表(sheet)名称/ tableView 需要导出的 QTableView 指针ExportExcelObject obj(fileName, sheetName, tableView);/ 2. define fields (columns) to the
5、 Excel sheet file/ 第 1 个参数是 QTableView 的列/ 第 2 个参数是对应该列的 Excel sheet 中的列名/ 第 3 个参数是该列的类型,可以使用 char(x) (x 最大 255),int,datetime, 等obj.addField(1, tr(“name“), “char(60)“);obj.addField(2, tr(“ID“), “int“);obj.addField(3, tr(“time“), “ datetime “);/ 3. 该类有特定的 SIGNAL 用于连接一个 progress 控件,可以显示导出进度connect(/ 4
6、. do the workint retVal = obj.export2Excel();if(retVal 0)/doneelse/something wrong那么这个类是怎样实现的呢?1. 将 Excel 文件当成是一个数据库使用 MS 的 ODBC 或 ADO 都可以将 Excel 文件当做一个数据库,那么我们只需要使用下 面这个 DSN 连接串去创建并连接至该 Excel 文件:view plaincopy to clipboardprint? 01.QString dsn = QString(“DRIVER=Microsoft Excel Driver (*.xls);DSN=;
7、FIRSTROWHASNAMES=1;CREATE_DB=“%1“;DBQ=%2“). 02. 03. arg(excelFilePath).arg(excelFilePath); QString dsn = QString(“DRIVER=Microsoft Excel Driver (*.xls);DSN=; FIRSTROWHASNAMES=1;CREATE_DB=“%1“;DBQ=%2“).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 开 始就是系统自带支持的。本文来自 CSDN 博客,转载请标明出处: http:/