找回密码
 立即注册

QQ登录

只需一步,快速开始

Jun2005

注册会员

17

主题

57

帖子

168

积分

注册会员

积分
168
Jun2005
注册会员   /  发表于:2024-2-1 09:57  /   查看:2357  /  回复:3
1金币
本帖最后由 Ellia.Duan 于 2024-2-17 16:04 编辑

1、背景就是用户在单元格填写了 2024 ,但是用GcExcel读取出来是2024.0 。列的格式设置的是常规


2、我想在导入的时候 批量设置列的格式 再读取数据。

现在我找不到GcExcel可以批量设置列格式为文本的api

最佳答案

查看完整内容

您好,确实如您所说,Excel中有上述的效果,具体可以参考这篇技术博客对于这个现象的解析:https://gcdn.grapecity.com.cn/showtopic-186432-1-1.html。 对于您的需求,即使给某一列设置了文本格式,也不会改变单元格的value值,您通过getValue方法获取到的依然是2024.0,您可以通过worksheet.getRange("A:A").setNumberFormat("@");这个方法来设置文本格式并用getValue获取查看效果 或者,如果您期望所见即所得,可以考虑 ...

3 个回复

倒序浏览
最佳答案
最佳答案
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-2-1 09:57:46
来自 4#
Jun2005 发表于 2024-2-1 10:34
主要我们无办法限制用户 有没有设置文本格式,但是我们读取到2024.0我直接转为字符串会变成2024.0。实际 ...

您好,确实如您所说,Excel中有上述的效果,具体可以参考这篇技术博客对于这个现象的解析:https://gcdn.grapecity.com.cn/showtopic-186432-1-1.html

对于您的需求,即使给某一列设置了文本格式,也不会改变单元格的value值,您通过getValue方法获取到的依然是2024.0,您可以通过worksheet.getRange("A:A").setNumberFormat("@");这个方法来设置文本格式并用getValue获取查看效果

或者,如果您期望所见即所得,可以考虑用getText方法,当然这并不是一个好的方法,因为这个获取到的是单元格被格式化后的值,而不是真实值
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-2-1 10:30:20
2#
您好,因为GcExcel默认会将数值类型的单元格内容以double类型进行读取,因此会有您所描述的2024.0的产生,如果您想要2024,只要将double类型转换成int类型即可,为什么还是期望让用户输入一个文本类型的内容呢,如果是文本类型的内容,那么GcExcel读取到的就是String类型,您拿到这个2024是要做什么样的处理呢?
回复 使用道具 举报
Jun2005
注册会员   /  发表于:2024-2-1 10:34:45
3#
本帖最后由 Jun2005 于 2024-2-1 10:35 编辑
Richard.Huang 发表于 2024-2-1 10:30
您好,因为GcExcel默认会将数值类型的单元格内容以double类型进行读取,因此会有您所描述的2024.0的产生, ...

主要我们无办法限制用户 有没有设置文本格式,但是我们读取到2024.0我直接转为字符串会变成2024.0。实际上我们要的是2024。

excel会有一个效果 如果你先设置了格式填写是正常的2024.但是你先填写了2024再去设置文本格式是无效的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部