跳槽到了新的公司,开始苦逼的出差现场开发,接触到了新的应用。有很多应用需要将Table导出成表格,可以把table导出成csv格式的文件。跟大伙分享一下;

  1. lass TableToExcle : public QDialog
  2. {
  3. Q_OBJECT
  4. public:
  5. TableToExcle(QWidget *parent = 0, Qt::WFlags flags = 0);
  6. ~TableToExcle();
  7. private:
  8. Ui::TableToExcleClass ui;
  9. private slots:
  10. void addRowSlot();
  11. void delRowSlot();
  12. void exportSlot();
  13. };
  1. TableToExcle::TableToExcle(QWidget *parent, Qt::WFlags flags)
  2. : QDialog(parent, flags)
  3. {
  4. ui.setupUi(this);
  5. ui.m_pTable->setColumnCount(4);
  6. QTableWidgetItem * item = new QTableWidgetItem("0");
  7. ui.m_pTable->setHorizontalHeaderItem ( 0, item );
  8. item = new QTableWidgetItem("1");
  9. ui.m_pTable->setHorizontalHeaderItem ( 1, item );
  10. item = new QTableWidgetItem("2");
  11. ui.m_pTable->setHorizontalHeaderItem ( 2, item );
  12. item = new QTableWidgetItem("3");
  13. ui.m_pTable->setHorizontalHeaderItem ( 3, item );
  14. ui.m_pTable->setSelectionBehavior(QAbstractItemView::SelectRows);
  15. connect(ui.m_pAddBtn,SIGNAL(clicked()),this,SLOT(addRowSlot()));
  16. connect(ui.m_pDelBtn,SIGNAL(clicked()),this,SLOT(delRowSlot()));
  17. connect(ui.m_pExportBtn,SIGNAL(clicked()),this,SLOT(exportSlot()));
  18. }
  19. TableToExcle::~TableToExcle()
  20. {
  21. }
  22. void TableToExcle::addRowSlot()
  23. {
  24. ui.m_pTable->insertRow(ui.m_pTable->rowCount());
  25. }
  26. void TableToExcle::delRowSlot()
  27. {
  28. int index = ui.m_pTable->currentRow ();
  29. if (index > -1)
  30. {
  31. ui.m_pTable->removeRow(index);
  32. }
  33. }
  34. void TableToExcle::exportSlot()
  35. {
  36. QString fileName = QFileDialog::getSaveFileName(this, tr("Save File")," ",tr("file (*.csv)"));
  37. if (!fileName.isEmpty())
  38. {
  39. QFile file(fileName);
  40. bool ret = file.open( QIODevice::Truncate | QIODevice::WriteOnly);
  41. if(!ret)
  42. return;
  43. QTextStream stream(&file);
  44. QString conTents;
  45. QHeaderView * header = ui.m_pTable->horizontalHeader() ;
  46. if (header)
  47. {
  48. for ( int i = 0; i < header->count(); i++ )
  49. {
  50. QTableWidgetItem *item = ui.m_pTable->horizontalHeaderItem(i);
  51. if (!item)
  52. {
  53. continue;
  54. }
  55. conTents += item->text() + ",";
  56. }
  57. conTents += "\n";
  58. }
  59. for ( int i = 0 ; i < ui.m_pTable->rowCount(); i++ )
  60. {
  61. for ( int j = 0; j < ui.m_pTable->columnCount(); j++ )
  62. {
  63. QTableWidgetItem* item = ui.m_pTable->item(i, j);
  64. if ( !item )
  65. continue;
  66. QString str = item->text();
  67. str.replace(","," ");
  68. conTents += str + ",";
  69. }
  70. conTents += "\n";
  71. }
  72. stream << conTents;
  73. file.close();
  74. }
  75. if( QMessageBox::Yes == QMessageBox::information(0,QObject::tr("文件导出"),QString("文件导出成功,是否打开该文件?"),QMessageBox::Yes,QMessageBox::No) )
  76. {
  77. QSettings settings("HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Office",QSettings::NativeFormat);
  78. QString szDefault, szPath;
  79. bool bSuccess;
  80. szPath = settings.value("12.0/Excel/InstallRoot/Path").toString();
  81. if (szPath.isEmpty())
  82. szPath = settings.value("11.0/Excel/InstallRoot/Path").toString();
  83. if (szPath.isEmpty())
  84. szPath = settings.value("10.0/Excel/InstallRoot/Path").toString();
  85. if (szPath.isEmpty())
  86. szPath = settings.value("9.0/Excel/InstallRoot/Path").toString();
  87. if (szPath.isEmpty())
  88. szPath = settings.value("14.0/Excel/InstallRoot/Path").toString();
  89. if (szPath.isEmpty())
  90. {
  91. QMessageBox::information(0, "提示", "系统没有安装Office, 不能查看故障报告,请您先安装Microsoft Office.");
  92. return;
  93. }
  94. QProcess * proce = new QProcess;
  95. QString szExcelexe = szPath + "excel.exe";
  96. QString szopen = "/safe";
  97. QString szDoc = fileName;
  98. QStringList list;
  99. list<<szDoc;
  100. if( proce )
  101. {
  102. proce->start(szExcelexe,list);
  103. proce->waitForStarted(5000);        //需要等待完成启动
  104. }<pre name="code" class="cpp">               delete proce;

http://blog.csdn.net/hai200501019/article/details/37538591

QTableWidget 导出到csv表格的更多相关文章

  1. 实现数据导出为.csv表格

    数据导出实现步骤: 1.查找出要导出的数据,整理为二维数组. 2.定义导出表格的字段 3.将整理的二维数组按导出表格定义的字段重新整理. 4.将整理的二维数组写入服务器中已有的一个.csv文件. 5. ...

  2. csv表格处理(上)-- JS 与 PHP 协作导入导出

    CSV简介 在开发后台管理系统的时候,几乎无可避免的会遇到需要导入导出Excel表格的需求.csv也是表格的一种,其中文名为“逗号分隔符文件”.在Excel中打开如下图左边所示,在记事本打开如下图右边 ...

  3. QTableWidget 导出到表格

    跳槽到了新的公司.開始苦逼的出差现场开发.接触到了新的应用.有非常多应用须要将Table导出成表格,能够把table导出成csv格式的文件. 跟大伙分享一下: lass TableToExcle : ...

  4. csv表格处理(下)--纯JS解析导入csv

    多日前的上篇介绍了csv表格,以及JS结合后端PHP解析表格填充表单的方法.其中csv转换成二维数组的时候逻辑比较复杂多坑,幸好PHP有丰富的库函数来处理,而现在用JS解析的话就没有那么幸运了,一切都 ...

  5. PHP处理CSV表格文件的常用操作方法是怎么样呢

    php来说,fgetcsv读入csv表格,返回一个数组,然后foreach输出成HTML的<table>,这步操作几行代码就能实现,非常简单.工作量主要还在于浏览器前端,建议你用jQuer ...

  6. PHP 高效导入导出Excel(csv)方法之fgetcsv()和fputcsv()函数

    CSV,是Comma Separated Value(逗号分隔值)的英文缩写,通常都是纯文本文件. 一.CSV数据导入函数fgetcsv() fgetcsv() 函数从文件指针中读入一行并解析 CSV ...

  7. 十七 bootstrap-table tableExport 导出xlsx格式表格

    原文:十七 bootstrap-table tableExport 导出xlsx格式表格 在[十六.bootstrap-table javascript导出数据]中,打开导出的表格时,总会弹出一个提示 ...

  8. 将mysql数据库的数据导出做成excl表格通过邮件发送附件发给指定人

    mysql数据库的数据导出成excl表 方法一: mysql -uroot -p123456 -e “select *.* from 表 into outfile ‘文件路径.xls’into out ...

  9. CSV表格读取

    读取CSV表格需要CSV表格的编码格式为UTF-8 ,这个脚本中有些是为了方便使用封装的dll 不过都是一些简单的实现,自己实现也很容易,可做参考. /// <summary> /// 构 ...

随机推荐

  1. MYSQL大小写(由于数据由windows迁移到Linux导致)

    今日从sqlserver上迁移了一个数据库到Linux的MySQL中,迁移成功了,但是应用却跑不通,查看日志发现,提示找不到表,我注意到,表名都是存在大小写的,而MySQL中的表名都是小写的.这提醒了 ...

  2. javasrcipt日期一些方法和格式转化

    Js获取当前日期时间及其它操作 var myDate = new Date();myDate.getYear();        //获取当前年份(2位)myDate.getFullYear();   ...

  3. CSS中的repeat

    Repeat-x是横向铺满,就是图片会横向重复,直到铺满. Repeat-y是纵向铺满,就是让图片纵向重复,直到铺满. 如果不想让重复,就直接为:no-repeat.

  4. javascripts小结

    1 NAN-isNaN():判断是否数值 2 数值转换 Number()-任何数据类型,parseInt(),parseFloat()-字符串 3数组转字符串 var a=["red&quo ...

  5. NSArray的4种遍历方式

    前言:NSArray对应的是java的List,不同的是其元素不能更改,不过其派生类NSMutableArray可以更改,遍历的方式跟java的List基本一样 一.  for循环 Student * ...

  6. Hibernate之工具类HibernateUtil

    原创文章,转载请注明:Hibernate之工具类HibernateUtil  By Lucio.Yang 1.最简单的工具类,实现SessionFactory的单例共享,session的管理 pack ...

  7. 运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程,把获取的信息存入数据库

    运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程 有关前两篇的链接: 运用Python语言编写获取Linux基本系统信息(一):获得Linux版本.内核.当前时间 运 ...

  8. Eclipse中DTD验证导致无法进行代码提示的问题(转)

    eclipse的xml插件进行dtd验证的时候由于找不到dtd或请求主机相应超时,会出现黄色的警告 The file cannot be validated as the host "www ...

  9. S2S:分享出的营销机遇

    (速途网专栏 作者:高学争)经常在网上购物的你,有没有遇到过这样的问题:你知道自己想买什么,但是在淘宝上一搜,出来了数以万计的同类型,他们有着同样的价位(甚至可能是同样的图片),但是由不同的商家提供, ...

  10. Linux 中将用户添加到组的指令

    在 Linux 操作系统下,如何添加一个新用户到一个特定的组中?如何同时将用户添加到多个组中?又如何将一个已存在的用户移动到某个组或者给他增加一个组?对于不常用 Linux 的人来讲,记忆 Linux ...