曾经为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

qt技巧--使用html导出表格替代excel的更多相关文章

  1. Vue 导出表格为Excel

    放法有多种,我这里是直接转JSON数据为Excel. 1.既然要使用,那首先当然是安装依赖,在终端命令输入: npm install -S file-saver xlsx npm install -D ...

  2. 【js】js导出表格到excel

    js: function method(tableid) //读取表格中每个单元到EXCEL中 { var curTbl = document.getElementById(tableid); var ...

  3. FineUI小技巧(3)表格导出与文件下载

    需求描述 实际应用中,我们可能需要导出表格内容,或者在页面回发时根据用户权限下载文件(注意,这里的导出与下载,都是在后台进行的,和普通的一个链接下载文件不同). 点击按钮导出表格 由于FineUI 默 ...

  4. 百度地图里面搜索到的公司商家电话导出表格?怎样将把百度地图里面搜索到的公司 电话 地址 等数据导出excel里?

    好多人在问:如何将百度地图里面搜索到的公司商家电话导出表格?怎样将把百度地图里面搜索到的公司 电话 地址 等数据导出excel里? 现在,很多人都在网络上找商家,联系业务. 百度地图里有很多的商家联系 ...

  5. 在ASP.NET Web Forms中使用页面导出伪xls Excel表格

    将数据导出为Excel表格是比较常见的需求,也有很多组件支持导出真正的Excel表格.由于Excel能打开HTML文件,并支持其中的table元素以及p之类的文本元素的显示,所以把.html扩展名改为 ...

  6. PHP批量导出数据为excel表格

    之前用插件phoexcel写过批量导入数据,现在用到了批量导出,就记录一下,这次批量导出没用插件,是写出一个表格,直接输出 //$teacherList 是从数据库查出来的二维数组 $execlnam ...

  7. thinkphp导出csv文件,用表格输出excel

    1.thinkphp导出csv文件 导出csv文件可能就那几行代码,今天有个问题困扰我好久,就是导出之后出现一些html代码,这个不应该,view里面是空的,controller中最后也没有$this ...

  8. PHP读取excel表格,和导出表格

    读取表格 public function excel(){ import("Common.Vendor.Excel.PHPExcel"); $filename="./fi ...

  9. java使用freemarker导出复杂的excel表格

    正常导出excel表格使用的poi,但是导出复杂的excel有点困难,但是可以使用freemaker模板来导出复杂的excel. 1.都是先生成一个Excel表格的模板,最好是增加一行数据.具体看图里 ...

随机推荐

  1. erlang抽象码与basho的protobuf

    erlang抽象码与basho的protobuf(一)使用 erlang抽象码与basho的protobuf(二)代码生成原理之词法与语法分析 erlang抽象码与basho的protobuf(三)代 ...

  2. java生成二维码,读取(解析)二维码图片

    二维码分为好多种,我们最常用的是qrcode类型的二维码,以下有三种生成方式以及解析方式: 附所需jar包或者js地址 第一种:依赖qrcode.jar import java.awt.Color; ...

  3. freemarker自己定义标签(一)

    freemarker自己定义标签 1.自己定义标签说明 宏变量存储模板片段能够被用作自己定义指令macro 2.演示样例说明 <html> <head> <meta ht ...

  4. 【matlab】GPU 显卡版本与计算能力(compute capability)兼容性问题

    MathWorks - Bug Reports 1. 问题说明 当运行 alexnet 等卷积神经网络需要使用 GPU 加速时,matlab 如果提示如下的警告信息: GPUs of compute ...

  5. 求 1~n 之间素数的个数

    求1到n之间素数的个数 1. 筛选法 筛选掉偶数,然后比如对于 3,而言,筛选掉其整数倍数:(也即合数一定是某数的整数倍,比如 27 = 3*9) int n = 100000000; bool fl ...

  6. WCF客户端C#代码 配置config文件

    不多说了,直接上代码吧.... 服务端Web.config文件中bindings配置 <bindings> <wsHttpBinding> <binding name=& ...

  7. NET媒体文件操作组件TagLib

    开源的.NET媒体文件操作组件TagLib#解析   人生得意须尽欢 莫使金樽空对月.写博客都会在吃饭后,每次吃饭都要喝上二两小酒,写博客前都要闲扯,这些都是个人爱好,改不掉了,看不惯的人,还望多多包 ...

  8. javascript学习-创建json对象数据,遍历

    之前我已经有讲过后台返回json数据到前台,并在前台遍历json数据. 这里讲下直接在JS里创建JSON数据,然后遍历使用~ 创建代码例如以下:(创建的是JSON对象) var YearSelect ...

  9. 下面介绍一个 yii2.0 的 Rbac 权限设置,闲话少说,直接上代码,

    1.首先我们要在组件里面配置一下 Rbac ,如下所示(common/config/main-local.php或者main.php).  'authManager' => [  'class' ...

  10. Hadoop和RDBMS的混合系统介绍

    现在大数据概念被时常提起,社会各界对其关注度越来越高.往往越是火热的东西,人们越容易忽略它的本质.在 slides 中,我首先按照自己的理解,简单的理顺数据处理领域的发展历程.之后,落脚点是两个比较有 ...