这个是 多个txt,一个txt4万个数据,转为excel1秒不到。

这个是 转换好的excel

下面是代码解析

第一步 获取txt的数据

这个网上比较多,推荐QT 读取txt文件的几种方法

先获取所有的txt文件的名称:

   QString path1 = QDir::currentPath();QDir dir(path1);QStringList nameFilters;nameFilters << "*.txt" << "*.png";//获取名字QStringList files = dir.entryList(nameFilters, QDir::Files | QDir::Readable, QDir::Name);qDebug() << files;

对每一个txt 读取数据

for each (QString name in files){//   打开txt文件QString path = path1 + "/" + name;qDebug() << path;QFile f(path);if (!f.open(QIODevice::ReadOnly | QIODevice::Text)){/*  cout << "Open failed." << endl;return -1;*/}
//读取txt 流QTextStream txtInput(&f);/*    QString astr = "";QStringList alldata;*/int numK = 0;QList<QVariant> allRowData;while (!txtInput.atEnd()){
//读取每一行的数据numK++;QString lineStr;QStringList linedata;lineStr = txtInput.readLine();//   astr.append(lineStr);
//根据空格来分成多个数据linedata = lineStr.split(" ");/*    while (!linedata.isEmpty()){aRowData.append((linedata.front()));linedata.pop_front();}*/
//将多个数据转为QVariant类型(这个是qt的任意类型)allRowData.append(QVariant(linedata));}

这样就获取到了txt的所有数据

2  打开并创建excel

首先添加头文件,参考了

#include<ActiveQt\qaxobject.h>
#include<ActiveQt/qaxwidget.h>

接着打开连接office excel

            //一定要是QAxWidget QAxWidget *excel = NULL;    //本例中,excel设定为Excel文件的操作对象QAxObject *workbooks = NULL;QAxObject *workbook = NULL;  //Excel操作对象excel = new QAxWidget("Excel.Application");excel->dynamicCall("SetVisible(bool)", false); //true 表示操作文件时可见,false表示为不可见excel->setProperty("DisplayAlerts", false);//excel的对话弹窗关闭workbooks = excel->querySubObject("WorkBooks");

创建excel或者打开excel'文件

 QString fileName = QDir::currentPath() + "/" + name.remove(".txt") + ".xlsx";fileName.replace("/", "\\");workbooks->dynamicCall("Add");workbook = excel->querySubObject("ActiveWorkBook");//如果有excel 就不用这一步创建了//51是xlsx,csv是6;56表示创建的文件格式为xlsworkbook->dynamicCall("SaveAs (const QString&,int,const QString&,const QString&,bool,bool)",fileName, 51, QString(""), QString(""), false, false);workbook = workbooks->querySubObject("Open(const QString &)", fileName);

打开具体某个sheet

// 获取打开的excel文件中所有的工作sheetQAxObject * worksheets = workbook->querySubObject("WorkSheets");//—————————————————Excel文件中表的个数:——————————————————int iWorkSheet = worksheets->property("Count").toInt();// ————————————————获取第n个工作表 querySubObject("Item(int)", n);——————————QAxObject * worksheet = worksheets->querySubObject("Item(int)", 1);//本例获取第一个,最后参数填1

数据  写入excel

这里很重要:一般的是对每一个单元格操作,但是对大批量的数据时需要消耗太多时间

  //获取单元格cell = worksheet->querySubObject("Cells(int, int", 1, 1);//储存一个字符串数据至表格cell->dynamicCall("setValue(const QVariant&", QVariant("abc"));

所以是先将数据保存为一个有序的状态,一步就完成输入,不用多次命令

 QAxObject* range;QString asd = "A1:E" + QString::number(numK);//获取范围 range = worksheet->querySubObject("Range(const QString)", asd);//批量写入range->dynamicCall("SetValue(const QVariant&", QVariant(allRowData));//设置字体大小//range->querySubObject("Font")->setProperty("Size", 30);//range->setProperty("Value", allRowData);delete range;

最后 保存数据关闭excel。

 workbook->dynamicCall("Save()");workbook->dynamicCall("Close()");excel->dynamicCall("Quit()");if (excel){delete excel;excel = NULL;}}

qt txt快速转excel相关推荐

  1. qt快速读取excel

    很多人搜如何读写excel都会看到用QAxObject来进行操作,很多人试了之后都会发现一个问题,就是慢,非常缓慢!因此很多人得出结论是QAxObject读写excel方法不可取,效率低. 后来我曾试 ...

  2. QT导出数据到Excel的方法

    一.系统库中自带的写入方法写入Excel 使用QAxObject,系统自带的参数. 使用方法参考:https://blog.csdn.net/cannon_qi/article/details/799 ...

  3. Qt Creator快速入门(第3版)

    ​​​第1章Qt Creator简介 可以参考Qt开源社区(www.qter.org)  打开文件所在的文件夹: Ctrl+ Tab快捷键,可以在多个打开的文档切换 帮助里面的: 书签:Ctrl十 M ...

  4. input不管用 vue_Vue自定义指令实现快速读取Excel

    前几天因为业务需求,所维护的而后台中出现了大量关于上传下载Excel的操作.因为我们的后台是基于Vue,并且是在 vue-element-admin 的基础上结合实际需求开发而来.vue-elemen ...

  5. 将txt文件和excel文件导入SQL2000数据库

    将txt文件和excel文件导入SQL2000数据库 在做一些web数据库管理系统的时候经常要实现将帐户批量注册的功能,今天就来讲讲如何在C#-web项目中将txt文件和excel文件导入SQL200 ...

  6. ASP程序快速生成Excel文件

    ASP程序快速生成Excel文件 在一个web项目中,要求将数据生成Excel文件保存到本地,最早使用的方法是直接使用Microsoft的Office Web组件,但是总体感觉是慢(微软的通病).然后 ...

  7. Python Qt GUI快速编程第六章代码分析

    这是我敲的Python Qt Gui快速编程第六章上的代码,以后可能要用到其中一些,如果忘记了就来这里看看. #coding=utf-8 #d import os import platform im ...

  8. Qt Designer快速入门

    Qt Designer快速入门 Qt Designer快速入门 Qt Designer快速入门 使用Qt Designer涉及四个基本步骤: 选择你的形式和对象 将对象放在表格上 将信号连接到插槽 预 ...

  9. Qt Assistant快速指南

    Qt Assistant快速指南 Qt Assistant快速指南 管理书签 搜索关键词 使用自由文本搜索 Qt Assistant快速指南 一旦安装了Qt,就可以像开发主机上的任何其他应用程序一样启 ...

  10. 用C#快速往Excel写数据

    用C#快速往Excel写数据 本示例是用于将ListView中的内容倒入到Excel,与常用的逐单元格写不同的是,本例子采用数据写入到range的方法.该方法效率 明显较高. Excel.Applic ...

最新文章

  1. NSArray排序问题
  2. 一篇文章搞定,SpringBoot 创建定时任务
  3. 学习ASP.NET Core Razor 编程系列十八——并发解决方案
  4. 边缘计算与云计算的不同,这篇说明白了!
  5. 缓存雪崩处理方法-双缓存思路
  6. python面向对象编程指南 豆瓣_一文看懂Python面向对象编程(Python学习与新手入门必看)-绝对原创...
  7. 【BZOJ3924】[Zjoi2015]幻想乡战略游戏 动态树分治
  8. 12.凤凰架构:构建可靠的大型分布式系统 --- 容器间网络
  9. Let’s Encrypt 免费ssl加密
  10. leetcode LCP3 机器人大冒险(C++)
  11. android格式化SD卡,获取其它程序的缓存大小,清理数据
  12. python iter( )函数
  13. 【源码共享】我花2小时写了微信官网的响应式布局HTML+CSS 换成旅行主题风格更炫酷了
  14. Ruoyi若依前后端分离框架【若依登录详细过程】
  15. linux服务器503怎么解决,宝塔linux面板apache网站访问报错503 Service Unavailable怎么解决...
  16. Go学习笔记_环境搭建
  17. MethodHandle.invoke and MethodHandle.invokeExact are only supported starting with Android O
  18. 使用Redis实现整个页面的缓存
  19. Spring学习个人记录
  20. android.app.WallpaperManager壁纸管理类

热门文章

  1. linux下vmware的安装、物理分区使用及卸载
  2. Asp.Net中SqlServer数据库连接方式
  3. CORS(跨域资源共享) 的配置
  4. 详解ProToolkit注册文件
  5. python绘制贝塞尔曲线_贝塞尔曲线数学原理及Python实现
  6. gstream初次尝试
  7. Windows10 的简单脚本 杀死所有表格程序
  8. 关闭Linux 内存地址随机化机制
  9. 无线接入控制服务器(ac),网络ac和ap是什么意思(图文)
  10. CSDN新版下载频道介绍之三——用户权限及积分规则详解