精易论坛

标题: 屎山求调整 [打印本页]

作者: 易编小萌新    时间: 2024-7-17 21:28
标题: 屎山求调整
  
子程序名返回值类型公开备 注
_按钮1_被单击  
变量名类 型静态数组备 注
数据文本型 
局_计次整数型 
Excel程序1.创建 ()
Excel程序1.取程序对象 ()
Excel工作簿1.置程序 (Excel程序1)
Excel工作簿1.打开 (“H:\易语言程序设计\成套资料\亚盘测算汇总表.xlsx”)
' 需要调整代码段,该段代码是将Excel文件读取到高级表格中,原Excel工作簿一共有10张表,第一张表是亚盘数据,总共有78列*100行,其余9张表是4列*100行的,数据就这么个规模,目前的问题是读取数据很慢,读取一次需要30秒左右,
计次循环首 (10, 表数)  ' 查找所有E表的开盘时间,汇总形成开盘时间数组并写入高表首列
Excel工作簿1.表格序号 = 表数
i = 1
判断循环首 ()  ' 查找表格首列最后一行非空行号
Excel工作簿1.首单元格 = 字符 (97)到文本 (i)
Excel工作簿1.尾单元格 = 字符 (97)到文本 (i)
如果真 (删全部空 (Excel工作簿1.内容)“”)
跳出循环 ()
i = i + 1
判断循环尾 ()
N = i - 1
加入成员 (表格行数数组, N)
计次循环首 (N, 单表行数)
Excel工作簿1.首单元格 = 字符 (97)到文本 (单表行数)
Excel工作簿1.尾单元格 = 字符 (97)到文本 (单表行数)
开盘时间 = Excel工作簿1.内容
加入成员 (开盘时间数组, 开盘时间)
计次循环尾 ()
计次循环尾 ()
数组_去重复 (开盘时间数组)
数组_排序1 (开盘时间数组)
高级表格1.行数 = 取数组成员数 (开盘时间数组) + 2
计次循环首 (取数组成员数 (开盘时间数组), i)
高级表格1.置数据 (i + 1, 0, #表格常量 .文本型, 开盘时间数组 [i])
计次循环尾 ()
计次循环首 (9, 表数)  ' 第二张表——第十张表的格式是一样的,用计次循环的方式,写入高级表格
Excel工作簿1.表格序号 = 表数 + 1
计次循环首 (表格行数数组 [表数 + 1], 盘计次)
计次循环首 (取数组成员数 (开盘时间数组), 全盘计次)
Excel工作簿1.首单元格 = “A”到文本 (盘计次)
Excel工作簿1.尾单元格 = “A”到文本 (盘计次)
如果真 (Excel工作簿1.内容 = “”)
跳出循环 ()
如果真 (Excel工作簿1.内容 = 开盘时间数组 [全盘计次])
写入行数 = 全盘计次 + 1
计次循环首 (3, 列计次)
Excel工作簿1.首单元格 = 字母赋值 (97 + 列计次)到文本 (盘计次)
Excel工作簿1.尾单元格 = 字母赋值 (97 + 列计次)到文本 (盘计次)
数据 = Excel工作簿1.内容
数据 = 文本_替换 (数据, , , , “→”, “”, “↓”, “”, “←”, “”, “↑”, “”)
如果真 (列计次 = 1)
高级表格1.置数据 (写入行数, 表数 × 3 - 2, #表格常量 .文本型, 数据)
如果真 (列计次 = 2)
高级表格1.置数据 (写入行数, 表数 × 3 - 1, #表格常量 .文本型, 数据)
如果真 (列计次 = 3)
高级表格1.置数据 (写入行数, 表数 × 3, #表格常量 .文本型, 数据)

计次循环尾 ()

计次循环尾 ()
计次循环尾 ()
计次循环尾 ()
Excel工作簿1.表格序号 = 1  ' 单独把第一张表内容读取并写入高级表格
计次循环首 (表格行数数组 [1], 盘计次)
计次循环首 (取数组成员数 (开盘时间数组), 全盘计次)
Excel工作簿1.首单元格 = “A”到文本 (盘计次)
Excel工作簿1.尾单元格 = “A”到文本 (盘计次)
如果真 (Excel工作簿1.内容 = “”)
跳出循环 ()
如果真 (Excel工作簿1.内容 = 开盘时间数组 [全盘计次])
写入行数 = 全盘计次 + 1
计次循环首 (74, 列计次)
Excel工作簿1.首单元格 = 字母赋值 (97 + 列计次)到文本 (盘计次)
Excel工作簿1.尾单元格 = 字母赋值 (97 + 列计次)到文本 (盘计次)
数据 = Excel工作簿1.内容
数据 = 文本_替换 (数据, , , , “→”, “”, “↓”, “”, “←”, “”, “↑”, “”)
高级表格1.置数据 (写入行数, 列计次 + 27, #表格常量 .文本型, 数据)
计次循环尾 ()

计次循环尾 ()
计次循环尾 ()
' 第一段屎山代码写完,至此将需要的数据全部读取并写入高级表格了
Excel工作簿1.保存 (“亚盘测算汇总表.xlsx”)
Excel工作簿1.关闭 ()
Excel工作簿1.释放 ()
Excel程序1.退出 ()
Excel程序1.释放 ()
计次循环首 (取数组成员数 (开盘时间数组), 局_计次)
组合框1.加入项目 (开盘时间数组 [局_计次], )
计次循环尾 ()


i支持库列表   支持库注释   
eExcel2000EXCEL2000支持库
eGrid高级表格支持库


读取写入10张e表文件,速度太慢了,读一次差不多要半分钟,这种屎山有没有大神给帮忙调整一下下,全部身家

作者: anyuezhiji    时间: 2024-7-17 21:35
每次读写单元格肯定慢,得一次读入一个区域然后处理
作者: anyuezhiji    时间: 2024-7-17 21:53
读取excel文件到高级表格.zip (11.91 KB, 下载次数: 3)
你试下这个例子的速度


补充内容 (2024-7-17 21:53):
把excel当做数据库,一次读入一张表,然后再循环为高级表格赋值
作者: anyuezhiji    时间: 2024-7-17 22:08
超级列表框_EXCEL_导入导出.zip (1.25 MB, 下载次数: 2)
或者试下 XL工作表类


作者: 易编小萌新    时间: 2024-7-18 10:55
anyuezhiji 发表于 2024-7-17 22:08
或者试下 XL工作表类

谢谢,我先研究学习一下
作者: 易编小萌新    时间: 2024-7-18 11:11
anyuezhiji 发表于 2024-7-17 21:53
你试下这个例子的速度

有点困难,我看上去他的写法和我的写法没啥区别呀,还有运行的时候就只读了一列
作者: 笨来无一悟    时间: 2024-7-18 15:20
既然是读写表格的速度慢 那么可不可以不读写表格
作者: 易编小萌新    时间: 2024-7-18 16:06
笨来无一悟 发表于 2024-7-18 15:20
既然是读写表格的速度慢 那么可不可以不读写表格

大哥,你猜猜我为啥要从excel里面读取数据???
作者: 易编小萌新    时间: 2024-7-18 16:07
anyuezhiji 发表于 2024-7-17 22:08
或者试下 XL工作表类

屌大的哥,例程我没看明白,原谅我这个新手小白吧,我全部身家都在这了,能不能帮我调整一下下




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4