找回密码
 立即注册

QQ登录

只需一步,快速开始

funnychen

注册会员

6

主题

23

帖子

57

积分

注册会员

积分
57
最新发帖
funnychen
注册会员   /  发表于:2024-10-25 17:10  /   查看:369  /  回复:14
1金币
1. 使用单元格绑定时,某个单元格是日期选择器,选择某个日期后,获取 datasource 发现值为 "/OADate(45575.70532407407)/" 有什么方式可以做些格式化,比如 YYYY-MM-DD 格式
image.png162028807.png



2. 使用表格绑定数据源时,初始渲染数据可能只有一行,绑定后会有多行,比如我在第一行给某些单元设置了一些样式,比如:水印/文本格式/下拉选择器等,绑定渲染完成后,表格中只有一行有样式,剩下的几行没有应用样式,有什么方式可以在绑定的时候就做好嘛?
image.png357744750.png


14 个回复

正序浏览
Wilson.Zhang
超级版主   /  发表于:2024-11-6 08:40:02
15#
funnychen 发表于 2024-11-5 18:11
好的,感谢,刚好帖子里还有个公式扩展的问题,顺便也学习到了

不客气,问题即已解决,那就结贴了。如有新问题,欢迎发新帖沟通。
回复 使用道具 举报
funnychen
注册会员   /  发表于:2024-11-5 18:11:41
14#
Wilson.Zhang 发表于 2024-11-5 17:43
您试下Worksheet:copyTo()或clipboardPaste命令,在使用clipboardPaste命令时,需要注意设置pasteOption ...

好的,感谢,刚好帖子里还有个公式扩展的问题,顺便也学习到了
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-11-5 17:43:21
13#
funnychen 发表于 2024-11-5 14:56
这个一直有使用的,但是复制的列数和行数多了之后,提升上感知不大

您试下Worksheet:copyTo()或clipboardPaste命令,在使用clipboardPaste命令时,需要注意设置pasteOption属性的值。请参考如下博客:
https://gcdn.grapecity.com.cn/showtopic-225662-1-1.html
回复 使用道具 举报
funnychen
注册会员   /  发表于:2024-11-5 14:56:00
12#
Wilson.Zhang 发表于 2024-11-5 14:20
尝试下使用挂起/绘制机制提升性能,如下代码所示:

这个一直有使用的,但是复制的列数和行数多了之后,提升上感知不大
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-11-5 14:20:31
11#
funnychen 发表于 2024-11-5 09:55
关于样式复制的我想再问下,当我使用 datasource 绑定表单/表格后,我想对每一列都复制第一行的数据,我看 ...

尝试下使用挂起/绘制机制提升性能,如下代码所示:
  1. sheet.suspendPaint();
  2. //  设置样式代码
  3. ......
  4. sheet.resumePaint();
复制代码
回复 使用道具 举报
funnychen
注册会员   /  发表于:2024-11-5 09:55:57
10#
关于样式复制的我想再问下,当我使用 datasource 绑定表单/表格后,我想对每一列都复制第一行的数据,我看了下相关文档,好像只能手动去复制,比如使用 cellRange.setStyle(style),然后循环每一列(每列的样式可能不一样),有没有什么高性能一点的方式,目前测试下来,复制样式和不复制样式的情况下数据绑定,渲染时间相差还是挺大的,大概有 2.3 倍的差距
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-11-4 08:59:12
9#
了解您的场景了,建议您参考4楼和8楼版主提供的解决方案,在getDataSource()后转换处理,处理时结合实际存库的数据类型需求即可,比较灵活。
回复 使用道具 举报
funnychen
注册会员   /  发表于:2024-10-31 17:37:17
7#
Wilson.Zhang 发表于 2024-10-31 17:14
问题1:经调研了解到,Excel中日期系统默认基于1900年日期系统,基准日期为1900年1月1日。那么,为什么在4 ...

关于问题2是这样子的,就是我初始的时候确实会以“2024-10-31”这种形式去做数据绑定,但是当我重新选择日期后,日期的值不是会变成 /OADate(xxx)/的形式嘛。所以我想在 datasource 变化的时候,可能有某些监听事件,当我知道这是个日期选择器做的改动,就直接做个 format 再更新到 datasource 里,这样我最终获取 datasource 的时候就很省力,直接 sheet.getDatasource() 就可以了,而不需要获取之后再修改里面的日期
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-10-31 17:14:23
6#
问题1:经调研了解到,Excel中日期系统默认基于1900年日期系统,基准日期为1900年1月1日。那么,为什么在4楼的日期字符串解析代码中以1899年12月30日为基准日期呢?这是因为允许输入小于1的小数作为日期,Excel把日期序列号小于1的部分按照一定比例映射到1899年12月30日之后的时间上,时Excel内部对日期和时间的数字表示方式导致的一种特殊现象。因此,在日期解析代码中以1899年12月30日为基准日期。

问题2:您是需要以数据绑定的方式将日期数据绑定到设置了日期选择器的单元格吗?如果是这样的话,将日期数据组织为如”2024-10-31“的字符串即可,如下动图所示:
数据绑定设日期.gif
回复 使用道具 举报
funnychen
注册会员   /  发表于:2024-10-31 13:57:16
5#
Wilson.Zhang 发表于 2024-10-28 17:29
了解了,根据您的描述操作后复现了现象,您可以参考如下代码解析日期:

有几个问题:
1. 为什么 baseDate 是 1899 / 12 / 30
2. 假如我想在重新选择日期的时候,调用这段代码设置到绑定的 dataSource 中需要如何实现,不然每次都需要循环遍历所有的数据来实现
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部