找回密码
 立即注册

QQ登录

只需一步,快速开始

wutao@digiwin
金牌服务用户   /  发表于:2024-4-26 09:33  /   查看:924  /  回复:15
1金币
本帖最后由 Richard.Huang 于 2024-4-28 10:22 编辑

产品:SpreadJS
版本:V16.0.7

image.png396869811.png
  1. sheet.getCell(0,ranges[0].col,GC.Spread.Sheets.SheetArea.colHeader).wordWrap(true);
  2. spread.commandManager().execute({cmd: "autoFitRow", sheetName: "Sheet1", rows:  [ { row: 0 } ], columnHeader: true, autoFitType: GC.Spread.Sheets.AutoFitType.cell});
复制代码


设置了表头换行并且自适应高度,但是有个问题 如果数据量大就会卡
有在社区看到处理单元格的数据量大自适应高度的问题解决方案,那有表头自适应的高度的方案吗?

15 个回复

倒序浏览
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-4-26 10:43:58
沙发
您好,请问您具体列头有多少数据呢?是否有相关demo可供我们测试,方便我们针对性的去提供对应的方案
回复 使用道具 举报
wutao@digiwin
金牌服务用户   /  发表于:2024-4-26 11:18:51
板凳
Richard.Huang 发表于 2024-4-26 10:43
您好,请问您具体列头有多少数据呢?是否有相关demo可供我们测试,方便我们针对性的去提供对应的方案

我只要表头加了这段代码 就会渲染非常慢非常慢 去掉就会很快出来

  1. spread.commandManager().execute({cmd: "autoFitRow", sheetName: "Sheet1", rows:  [ { row: 0 } ], columnHeader: true, autoFitType: GC.Spread.Sheets.AutoFitType.cell})
复制代码
还想问一句 就是我的单元格数据的高度撑开用了之前社区里面提供的可视区域内自动撑开(如下面的代码),确实不会影响性能,但是还有一个问题,我要导出表格,会有没在可视区域内的没有自动撑开单元格 还是会有遮挡的情况,这个也要麻烦帮忙看下谢谢~
  1. autoFitViewportArea(sheet) {
  2.         let topRow = sheet.getViewportTopRow(1), bottomRow = sheet.getViewportBottomRow(1);
  3.         let fitRowMap = {};
  4.           sheet.suspendPaint();
  5.             for (var row = topRow; row <= bottomRow; row++) {
  6.                 if (fitRowMap[row] == void 0) {
  7.                   sheet.autoFitRow(row);
  8.                   fitRowMap[row] = sheet.getRowHeight(row);
  9.                 }
  10.             }
  11.          sheet.resumePaint();
  12.       },
复制代码
image.png491676330.png

demo.json

211.65 KB, 下载次数: 16

回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-4-26 15:05:15
地板
wutao@digiwin 发表于 2024-4-26 11:18
我只要表头加了这段代码 就会渲染非常慢非常慢 去掉就会很快出来

还想问一句 就是我的单元格数据的高 ...

对于您的第一个问题,我这边没有复现

image.png672044372.png
对于您的第二个问题,您可以看到咱们社区给出的方案,实际上是只自适应看得到的地方的行高,对于看不到的地方的单元格行高我们不去进行操作,这样的好处就是做的操作少了,自然性能就好了。您如果期望导出的Excel文件中所有内容的行高全都自适应,那么您仍然需要给您这些大数据量的页面进行自适应行高处理(for循环搭配autoFitRow)。或者导出后,在Excel文件中进行处理。

如果您不期望使用SpreadJS的用户感知到全选自适应行高带来的页面卡顿,您可以参考这篇知识库文章进行差异化导出:https://demo.grapecity.com.cn/sp ... fferentiated-export
回复 使用道具 举报
wutao@digiwin
金牌服务用户   /  发表于:2024-4-26 15:50:08
5#
Richard.Huang 发表于 2024-4-26 15:05
对于您的第一个问题,我这边没有复现

好的,我研究一下,谢谢
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-4-26 17:48:28
6#
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-4-28 10:22:39
7#
您好,请问楼主的问题是否得到解决,如果仍然存在问题,欢迎继续跟帖询问
回复 使用道具 举报
wutao@digiwin
金牌服务用户   /  发表于:2024-4-28 15:24:23
8#
本帖最后由 wutao@digiwin 于 2024-4-28 15:25 编辑
Richard.Huang 发表于 2024-4-28 10:22
您好,请问楼主的问题是否得到解决,如果仍然存在问题,欢迎继续跟帖询问

还没有,我现在是导出时 数据量大的情况下用autoFitRow会导出很慢很慢,有什么办法可以导出的时候自适应高度,还有就是表头,可以自适应高度了,也不卡了,但是很高很高,不知道这个表头的自适应是怎么计算的?
image.png368258666.png
// 表头的自适应高度代码
  1. spread.commandManager().execute({cmd: "autoFitRow", sheetName: "Sheet1", rows: [{row:i}], columnHeader: true, autoFitType: GC.Spread.Sheets.AutoFitType.cellWithHeader});
复制代码
导出时用了差异化导出,但是绕不过去的是,用了newSheet.autoFitRow(index) 数据量大导出就会慢或者崩溃,这个autoFitRow用作全部数据还是不太行,有其他的方式吗
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-4-28 16:12:32
9#
wutao@digiwin 发表于 2024-4-28 15:24
还没有,我现在是导出时 数据量大的情况下用autoFitRow会导出很慢很慢,有什么办法可以导出的时候自适应 ...

如果您需要在导出的Excel文件中也看到所有行都行高自适应了,那么autoFitRow用作全部数据这个操作就无法避免
您可以考虑在autoFitRow前后加spread.suspendPaint()和spread.resumePaint()看是否能够提升性能

其次导出可以换做异步操作,避免用户感觉卡顿,当然也需要做一些提示提示用户导出操作还在进行中,需要等待

对于您的第一个问题需要您提供对应的json给我们进行测试,方便我们找到问题所在
回复 使用道具 举报
wutao@digiwin
金牌服务用户   /  发表于:7 天前
10#
Richard.Huang 发表于 2024-4-28 16:12
如果您需要在导出的Excel文件中也看到所有行都行高自适应了,那么autoFitRow用作全部数据这个操作就无法 ...

第二个问题我试下你说的方法,第一个问题麻烦看下,谢谢

表头自适应高度.json

124.53 KB, 下载次数: 19

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