找回密码
 立即注册

QQ登录

只需一步,快速开始

小小义

注册会员

5

主题

13

帖子

38

积分

注册会员

积分
38
最新发帖
小小义
注册会员   /  发表于:2024-7-18 16:12  /   查看:2282  /  回复:13
5金币
本帖最后由 Joestar.Xu 于 2024-7-23 09:40 编辑


调研编号:DOCXLS-10866

image.png423184813.png rowCount大概2W左右 加载要10来秒

最佳答案

查看完整内容

您好,经调研,目前的性能表现和预期的一样,对于文本,GcExcel会获取值和数字格式,然后将值格式化为字符串,这是一个非常耗时的操作。 所以,您可以跳过格式化操作以加快速度: 或者一次性获取所有的数据。 如:Range["C1:C20000"].getValue()

13 个回复

倒序浏览
最佳答案
最佳答案
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-7-18 16:12:39
来自 13#
您好,经调研,目前的性能表现和预期的一样,对于文本,GcExcel会获取值和数字格式,然后将值格式化为字符串,这是一个非常耗时的操作。

所以,您可以跳过格式化操作以加快速度:

  1. for (int rowIndex = 0; rowIndex < dataRows.GetLength(0); rowIndex++)
  2. {
  3.     for (int colIndex = 0; colIndex < 300; colIndex++)
  4.     {
  5.         if (worksheet.Range[rowIndex, colIndex].Value != null &&
  6.             (worksheet.Range[rowIndex, colIndex].NumberFormat == null || string.Equals(worksheet.Range[rowIndex, colIndex].NumberFormat,"General", StringComparison.InvariantCultureIgnoreCase)))
  7.         {
  8.             var text = worksheet.Range[rowIndex, colIndex].Value.ToString();
  9.         }
  10.         else
  11.         {
  12.             //data processing operations
  13.             var text = worksheet.Range[rowIndex, colIndex].Text;
  14.         }
  15.     }
  16. }
复制代码


或者一次性获取所有的数据。

如:Range["C1:C20000"].getValue()
回复 使用道具 举报
Lewis
初级会员   /  发表于:2024-7-18 17:06:52
2#
可以试一下一次性取出来会不会快
  1. worksheet.getRange("C1:C100000")
复制代码

回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-7-18 17:52:38
3#
Lewis 发表于 2024-7-18 17:06
可以试一下一次性取出来会不会快

回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-7-18 17:53:10
4#
楼主可以参考一下楼上热心用户的回复看能否达到更好的性能表现。
回复 使用道具 举报
小小义
注册会员   /  发表于:2024-7-18 18:55:41
5#
Lewis 发表于 2024-7-18 17:06
可以试一下一次性取出来会不会快

直接取出来是挺快 但是要遍历这个range还是要10几秒
回复 使用道具 举报
小小义
注册会员   /  发表于:2024-7-18 19:05:16
6#
Joestar.Xu 发表于 2024-7-18 17:53
楼主可以参考一下楼上热心用户的回复看能否达到更好的性能表现。

直接取出来是挺快 但是要遍历这个range还是要10几秒
77679ccfb06df3b967b44942f4175ee.png
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-7-19 09:44:09
7#
您好,遍历这一步具体是要实现什么样的需求呢?这边看看有没有其他性能更好的实现方法。
回复 使用道具 举报
小小义
注册会员   /  发表于:2024-7-19 09:53:42
8#
Joestar.Xu 发表于 2024-7-19 09:44
您好,遍历这一步具体是要实现什么样的需求呢?这边看看有没有其他性能更好的实现方法。

我文件发你 你测试下遍历单元格数据看看速度
mmexport1721300253966.png
mmexport1721300253966.png

test.rar

187.86 KB, 下载次数: 519

回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-7-19 17:34:04
9#
您好,我这边运行的时间大约为40秒,您这边具体是什么需求呢?为什么要遍历这么多次单元格?

image.png986706542.png
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部