开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 71256|回复: 552
打印 上一主题 下一主题
收起左侧

[易语言纯源码] libxl插件快速从[数据库][超级列表框][高级表格]导入导出Excel

    [复制链接]
结帖率:95% (42/44)
跳转到指定楼层
发表于 2020-3-22 17:54:16 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式   湖北省荆门市
分享源码
界面截图: -
是否带模块: 纯源码
备注说明: -
本帖最后由 李泽勇2 于 2020-3-22 19:15 编辑

使用libxl.dll插件可快速导入导出Excel文件,比系统自带的组件导出快N多倍,支持2007、2010、2016等文件。完全脱离office环境,独立运行。
这个插件是论坛里网友分享的,我就拿来写了几个例子,并做成了模块,源码一同分享给大家。这次新增了高级表格的导入和导出,并且我写了一个演示例子喜欢折腾的朋友拿去改进下吧,基本用还是没问题的。
增加了 [指定字段] 的导出,这样更灵活了。





附件在这里: libxl.dll插件快速从数据库导出.7z (1019.24 KB, 下载次数: 3264)




补充内容 (2020-4-11 20:37):
发现无法识别的加固段,需要安装最新的 易语言助手

补充内容 (2020-6-16 08:49):
.版本 2
.支持库 eGrid

.子程序 Excel导出_高级表格, 逻辑型, 公开
.参数 高级表格_, 高级表格, 可空, 高级表格
.参数 进度条_, 进度条
.参数 表头, 文本型, 数组, {“列1”,“列2”}
.参数 工作表名, 文本型
.参数 列宽, 整数型, 可空 数组, {19,19}默认全部19
.参数 路径, 文本型, , Excel保存路径\理论支持( 2007、2010、2016)格式文件
.局部变量 句柄, 整数型
.局部变量 总数, 长整数型
.局部变量 a, 整数型
.局部变量 b, 整数型
.局部变量 c, 整数型
.局部变量 d, 整数型
.局部变量 e, 文本型
.局部变量 f, 整数型
.局部变量 终止列, 整数型
.局部变量 qq, 整数型

总数 = 高级表格_.行数 - 1
句柄 = 初始化_ ()
c = xlBookInsertSheetA (句柄, xlBookSheetCountA (句柄), 取文本指针 (工作表名), 0)
a = xlBookAddFormatA (句柄, 0)
xlFormatSetBorderA (a, 1)
.计次循环首 (取数组成员数 (表头), b)
    xlSheetWriteStrA (c, 0, b - 1, 取文本指针 (表头 ), a)
.计次循环尾 ()
进度条_.位置 = 0
进度条_.最大位置 = 总数
终止列 = 取数组成员数 (表头)
.如果真 (是否为空 (列宽))
    .计次循环首 (终止列, )
        加入成员 (列宽, 19)
    .计次循环尾 ()
.如果真结束
.计次循环首 (总数, d)
    .计次循环首 (终止列, b)
        e = 高级表格_.取shuj (d, b - 1)
        xlSheetWriteStrA (c, d, b - 1, 取文本指针 (e), a)
    .计次循环尾 ()
    进度条_.位置 = d
.计次循环尾 ()
xlSheetAddIgnoredErrorA (c, 0, 0, d, b, 255)  ' 添加表格忽略错误
.计次循环首 (取数组成员数 (列宽), qq)
    xlSheetSetColA (c, qq - 1, qq - 1, 列宽 [qq], 0, 0)  ' 调整列宽
.计次循环尾 ()
f = xlBookSaveA (句柄, 取文本指针 (路径))
xlBookReleaseA (句柄)
返回 (f = 1)


补充内容 (2020-6-16 08:50):
修复从高级表格里导出表头问题。

补充内容 (2020-8-6 15:10):
不想默认19列宽的同志可以将:加入成员 (列宽, 19) 修改成 加入成员 (列宽, -1) 可以实现自动调整列宽

补充内容 (2020-8-12 08:33):
超过进度条的最大位置32767后只会显示进度条的最大数,超过就不准的问题
    只需要把进度条的最大位置÷ 100和进度条的位置÷ 100就可以解决。

补充内容 (2020-10-12 14:01):
.版本 2
.支持库 eGrid

.子程序 Excel导出_高级表格, 逻辑型, 公开
.参数 高级表格_, 高级表格, 可空, 高级表格
.参数 进度条_, 进度条
.参数 表头, 文本型, 数组, {“列1”,“列2”}
.参数 工作表名, 文本型
.参数 列宽, 整数型, 可空 数组, {19,19}默认全部19
.参数 路径, 文本型, , Excel保存路径\理论支持( 2007、2010、2016)格式文件
.局部变量 句柄, 整数型
.局部变量 总数, 长整数型
.局部变量 a, 整数型
.局部变量 b, 整数型
.局部变量 c, 整数型
.局部变量 d, 整数型
.局部变量 e, 文本型
.局部变量 f, 整数型
.局部变量 终止列, 整数型
.局部变量 qq, 整数型

总数 = 高级表格_.行数 - 1
句柄 = 初始化_ ()
c = xlBookInsertSheetA (句柄, xlBookSheetCountA (句柄), 取文本指针 (工作表名), 0)
a = xlBookAddFormatA (句柄, 0)
xlFormatSetBorderA (a, 1)
.计次循环首 (取数组成员数 (表头), b)
    xlSheetWriteStrA (c, 0, b - 1, 取文本指针 (表头 ), a)
.计次循环尾 ()
进度条_.位置 = 0
进度条_.最大位置 = 总数
终止列 = 取数组成员数 (表头)
.如果真 (是否为空 (列宽))
    .计次循环首 (终止列, )
        加入成员 (列宽, -1)
    .计次循环尾 ()
.如果真结束
.计次循环首 (总数, d)
    .计次循环首 (终止列, b)
        e = 高级表格_.取数据 (d, b - 1)
        xlSheetWriteStrA (c, d, b - 1, 取文本指针 (e), a)
    .计次循环尾 ()
    进度条_.位置 = d
.计次循环尾 ()
xlSheetAddIgnoredErrorA (c, 0, 0, d, b, 255)  ' 添加表格忽略错误
.计次循环首 (取数组成员数 (列宽), qq)
    xlSheetSetColA (c, qq - 1, qq - 1, 列宽 [qq], 0, 0)  ' 调整列宽
.计次循环尾 ()
f = xlBookSaveA (句柄, 取文本指针 (路径))
xlBookReleaseA (句柄)
返回 (f = 1)

点评

模块使用了助手保护,删除模块引用,重新编译一份模块即可.   河南省焦作市  发表于 2020-5-22 01:07
感谢大神分享   辽宁省大连市  发表于 2020-5-7 10:36

评分

参与人数 16好评 +14 精币 +82 收起 理由
andyfeifei + 1 + 2 支持开源~!感谢分享
可爱的咚咚咚 + 1 YYDS~!
网络注册会员 + 1 + 1 支持开源~!感谢分享
lwlylg + 1 YYDS~!
被封禁言 + 1 支持开源~!感谢分享
ノ朽默℡ + 1 [高级表格]导入导出Excel 不支持unicode 希望更新下
percher + 1 新技能已get√
1808835746 + 1 + 1 发现不可识别的程序加固段
易语言资源网 + 1 + 5 支持开源~!感谢分享
pinmac + 2 支持开源~!感谢分享
cnmice + 1 + 1 支持开源~!感谢分享
1051496412 + 1 + 3 感谢分享,很给力!~
flyhsx + 1 + 2 要怎么导入到MySQL呢
zlw310282 + 1 + 2 感谢分享,很给力!~
想学易语言 + 1 + 2 支持开源~!感谢分享
Godsteal + 1 + 60 感谢分享,很给力!~

查看全部评分


本帖被以下淘专辑推荐:

签到天数: 13 天

550
发表于 2025-4-22 02:16:18 | 只看该作者   山东省青岛市
这插件听起来挺厉害啊,处理Excel这么高效,还在用旧版的赶紧试试看呗。不过记得检查兼容性哦。
回复 支持 反对

使用道具 举报

549
发表于 2025-4-22 00:31:48 高大上手机用户 | 只看该作者   青海省海西蒙古族藏族自治州
感谢楼主分享
回复 支持 反对

使用道具 举报

548
发表于 2025-4-21 11:26:10 | 只看该作者   青海省海南藏族自治州
感谢分享
回复 支持 反对

使用道具 举报

结帖率:100% (9/9)

签到天数: 13 天

547
发表于 2025-3-21 20:10:15 | 只看该作者   江苏省无锡市
把55页回复全翻完了 感谢大佬的分享,其中有个问题也按照回复的方法调整了,请问能否像导出一样,导入也有可根据表头来选择导入的列呢?
回复 支持 反对

使用道具 举报

签到天数: 10 天

546
发表于 2025-3-21 00:59:33 | 只看该作者   云南省昆明市
666666666666666666
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 4 天

545
发表于 2025-1-25 01:15:55 | 只看该作者   广东省汕头市
666666666666666666
回复 支持 反对

使用道具 举报

544
发表于 2025-1-7 14:01:57 | 只看该作者   安徽省合肥市
感谢楼主分享
回复 支持 反对

使用道具 举报

结帖率:90% (9/10)

签到天数: 5 天

543
发表于 2025-1-5 15:33:40 高大上手机用户 | 只看该作者   湖北省武汉市
学习一下怎么导入Excel
回复 支持 反对

使用道具 举报

签到天数: 6 天

542
发表于 2024-11-30 22:20:25 | 只看该作者   广东省深圳市
支持一下的哈哈哈
回复 支持 反对

使用道具 举报

541
发表于 2024-11-30 22:03:20 | 只看该作者   河南省三门峡市
又是一个“404”,今天这是怎么了,币扣了,就是下不了
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

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

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

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