zoukankan      html  css  js  c++  java
  • qt技巧--使用html导出表格替代excel

            曾经为qt不能直接导出excel而困扰,后来经过深入了解,得知qt支持xml国际语言,html是xml的一种。html是做网页的,相信大家比较熟悉。所以使用html的<table></table>生成表格。然后导出html格式文件。或者直接导出xls格式。excel是能够直接识别的。
            下附简短代码:
    //初始化QTextEdit里面的内容
    void MainWindow::initText()
    {
        QString begin = QString::fromLocal8Bit("<HTML><HEAD></HEAD><BODY><TABLE CELLSPACING=0 cellpadding=10 COLS=8  BORDER=1 ><TR><TD COLSPAN=8  ALIGN=CENTER VALIGN=MIDDLE><FONT SIZE=8 COLOR=RED>表格测试</TD></TR><TR><TD  ALIGN=CENTER VALIGN=MIDDLE><FONT SIZE=4 > 序号 </TD><TD  ALIGN=CENTER VALIGN=MIDDLE><FONT SIZE=4> 日期 </TD><TD  ALIGN=CENTER VALIGN=MIDDLE><FONT SIZE=4> 飞机 </TD><TD  ALIGN=CENTER VALIGN=MIDDLE><FONT SIZE=4> 大炮 </TD><TD  ALIGN=CENTER VALIGN=MIDDLE><FONT SIZE=4> 火箭 </TD><TD  ALIGN=CENTER VALIGN=MIDDLE><FONT SIZE=4> 轮船 </TD><TD  ALIGN=CENTER VALIGN=MIDDLE><FONT SIZE=4> 汽车 </TD><TD ALIGN=CENTER VALIGN=MIDDLE><FONT SIZE=4> 我的自行车 </TD></TR>");
        QString mid = QString::fromLocal8Bit("<TR><TD  ALIGN=CENTER VALIGN=MIDDLE >%1</TD><TD  ALIGN=CENTER VALIGN=MIDDLE >%2</TD><TD  ALIGN=CENTER VALIGN=MIDDLE >%3</TD><TD  ALIGN=CENTER VALIGN=MIDDLE >%4</TD><TD  ALIGN=CENTER VALIGN=MIDDLE >%5</TD><TD  ALIGN=CENTER VALIGN=MIDDLE >%6</TD><TD  ALIGN=CENTER VALIGN=MIDDLE >%7</TD><TD  ALIGN=CENTER VALIGN=MIDDLE >%8</TD></TR>");
         QString end = QString::fromLocal8Bit("</TABLE></BODY></HTML>");
        QString mid2 = mid.arg(1).arg(2).arg(3).arg(4).arg(5).arg(6).arg(7).arg(8);
        QString mid3 = mid.arg("a").arg("b").arg("c").arg("d").arg("e").arg("f").arg("g").arg("h");
        begin.append(mid2);
        begin.append(mid3);
          begin.append(end);
        textEdit->setText(begin);
    }
    //保存文件对话框(对于某些格式QTextDocumentWriter可直接保存,其他不支持的格式就用QTextStream以流的形式保存 )
    void MainWindow::on_actionSave_as_triggered()
    {
        QString fn = QFileDialog::getSaveFileName(this, tr("Save as..."),
                                                  QString(), tr("EXCEL files (*.xls);;ODS files (*.ods);;ODF files (*.odt);;HTML-Files (*.htm *.html);;All Files (*)"));
        if (fn.isEmpty())
            return;
        if (! (fn.endsWith(".xls", Qt::CaseInsensitive)||fn.endsWith(".odt", Qt::CaseInsensitive) || fn.endsWith(".htm", Qt::CaseInsensitive) || fn.endsWith(".html", Qt::CaseInsensitive)|| fn.endsWith(".ods", Qt::CaseInsensitive)) )
            fn += ".xls"; // default
        if (fn.endsWith(".odt", Qt::CaseInsensitive)){
            QTextDocumentWriter writer(fn);
            writer.write(textEdit->document());
        }else{
            QFile index(fn);
            if (index.open(QFile::WriteOnly | QIODevice::Text))
            {
                QTextStream liu(&index);
                liu.setCodec("UTF-8");
                liu<<textEdit->document()->toHtml("UTF-8");
            }
        }
    }
     

    本文出自 “人生得意须尽欢” 博客,请务必保留此出处http://no001.blog.51cto.com/1142339/274776

  • 相关阅读:
    git 备忘录
    模拟HTTP协议接收请求并返回信息
    微信公众号支付回调页面处理asp.net
    WinForm下判断文件和文件夹是否存在
    C# 如何判断ie版本号和获取注册表中的信息
    【转】GDI+中发生一般性错误的解决办法
    c# winform 获取当前程序运行根目录
    模拟按下某快捷键:keybd_event使用方法
    如何使用存储过程来实现分页功能
    用ASP.NET实现下载远程图片保存到本地的方法 保存抓取远程图片的方法
  • 原文地址:https://www.cnblogs.com/findumars/p/5167083.html
Copyright © 2011-2022 走看看