开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 283|回复: 7
收起左侧

[易语言] 几万行超级列表框导出问题

[复制链接]
结帖率:67% (12/18)
发表于 2025-7-30 22:13:09 | 显示全部楼层 |阅读模式   湖南省岳阳市
30精币
超级列表框中有几万行的数据 然后有8列
现在的问题就是用循环读取数据太慢了 4w条数据编译后读取出来保存到文件 需要几分钟
有没有快速的导出的方法


回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:33% (1/3)

签到天数: 8 天

发表于 2025-7-30 22:27:44 | 显示全部楼层   广东省深圳市
用线程池,多线程读取同个控件或数据变量没问题,分段读取,然后保存时加入许可证,这样的速度比单独快些。具体快多少,得试验对比。保存我没有试验,但是多线程在处理数据是快了很多,大大缩短时间。
回复

使用道具 举报

签到天数: 7 天

发表于 2025-7-30 23:00:18 | 显示全部楼层   山东省滨州市
操作组件的耗时,简单点的办法就是空间换时间,把数据存到内存中一份,导出时读内存。整一个数组存放数据
回复

使用道具 举报

结帖率:100% (47/47)

签到天数: 3 天

发表于 2025-7-30 23:12:46 | 显示全部楼层   河北省秦皇岛市
  
子程序名返回值类型公开备 注
快速导出超级列表框数据  
参数名类 型参考可空数组备 注
列表框超级列表框
文件路径文本型
变量名类 型静态数组备 注
文件号整数型 
行数整数型 
列数整数型 
i整数型 
j整数型 
缓冲区文本型 
开始时间整数型 
开始时间 = 取启动时间 ()
行数 = 列表框.取表项数 ()
列数 = 列表框.取列数 ()
' 创建缓冲区(预分配内存)
缓冲区 = 取空白文本 (行数 × 列数 × 50)  ' 预估每单元格50字符
' 添加表头
计次循环首 (列数, j)
缓冲区 = 缓冲区 + 列表框.取列标题 (j - 1)#引号 + ","
计次循环尾 ()
缓冲区 = 取文本左边 (缓冲区, 取文本长度 (缓冲区) - 1)#换行符
' 使用API直接访问内部数据
变量名类 型静态数组备 注
hList整数型 
lvItemLVITEM 
pszText文本型 
文本长度整数型 
hList = 列表框.取窗口句柄 ()
' 设置LVITEM结构
lvItem.mask = #LVIF_TEXT
lvItem.iSubItem = 0
pszText = 取空白文本 (1024)
lvItem.pszText = 取变量指针 (pszText)
lvItem.cchTextMax = 1024
' 批量获取数据
计次循环首 (行数, i)
计次循环首 (列数, j)
lvItem.iItem = i - 1
lvItem.iSubItem = j - 1

' 使用API直接获取文本
SendMessage (hList, #LVM_GETITEMTEXT, i - 1, 取变量指针 (lvItem))

' 添加到缓冲区(处理特殊字符)
缓冲区 = 缓冲区 + #引号替换特殊字符 (pszText)#引号
如果真 (j < 列数)
缓冲区 = 缓冲区 + ","

计次循环尾 ()
缓冲区 = 缓冲区 + #换行符

' 每1000行写入一次文件
如果真 (i % 1000 = 0)
写到文件 (文件路径, 到字节集 (缓冲区))
缓冲区 = ""

计次循环尾 ()
' 写入剩余数据
如果真 (缓冲区 ≠ "")
写到文件 (文件路径, 到字节集 (缓冲区), )  ' 追加模式

调试输出 ("导出完成!耗时:" + 到文本 (取启动时间 () - 开始时间) + "毫秒")
子程序名返回值类型公开备 注
替换特殊字符文本型 
参数名类 型参考可空数组备 注
文本文本型
变量名类 型静态数组备 注
结果文本型 
结果 = 子文本替换 (文本, #引号, #引号 + #引号, , , )  ' 转义双引号
结果 = 子文本替换 (结果, #换行符, " ", , , )        ' 替换换行符
结果 = 子文本替换 (结果, #回车符, " ", , , )        ' 替换回车符
返回 结果
' ============== API声明 ==============
DLL命令名返回值类型公开备 注
SendMessage整数型 
DLL库文件名:
user32.dll
在DLL库中对应命令名:
SendMessageA
参数名类 型传址数组备 注
hWnd整数型
Msg整数型
wParam整数型
lParam整数型
常量名称常量值公 开备 注
LVM_GETITEMTEXT 



i支持库列表   支持库注释   
iext扩展界面支持库一
spec特殊功能支持库
eAPI应用接口支持库

回复

使用道具 举报

结帖率:96% (154/161)

签到天数: 8 天

发表于 2025-7-31 09:05:30 | 显示全部楼层   四川省乐山市
精易模块的”外部超级列表框_保存数据“挺快的
回复

使用道具 举报

签到天数: 7 天

发表于 2025-7-31 10:08:48 | 显示全部楼层   广东省东莞市
看下这个,速度超快

补充内容 (2025-7-31 10:08):
https://bbs.125.la/forum.php?mod=viewthread&tid=14859935
回复

使用道具 举报

结帖率:100% (41/41)

签到天数: 9 天

发表于 2025-7-31 13:31:21 | 显示全部楼层   重庆市重庆市
用虚表吧
回复

使用道具 举报

签到天数: 4 天

发表于 2025-7-31 14:32:06 | 显示全部楼层   四川省南充市
写入的时候就写出临时表,导出的时候直接一个复制粘贴
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备2025452707号) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表