excel表格中String类型数值数据转化为int及float等格式

最近有朋友喊我帮一个忙,给了我一个xls 的表格,说求平均数的时候出现问题了。我一想处理xls表格的平均数不是就直接是调用函数吗?不是很简单吗。但拿到表格之后才发现完全不一样。
表格截图
打开之后,看起来确实是很基础的数字,我直接点击了上面的函数调用按钮。
函数按钮
找到了函数中的AVERGE函数
点击AVERGE函数
很顺利的点击框选开始选择数据
使用AVERGE函数
在实验了几次之后发现并不顺利,下方一直出现的都是 #DIV/0!
我仔细想了一下,在C++中这是数据类型出错的返回值
相比windows的Microsoft的办公软件都是以C语言为内核的吧
在实验了几次之后,小编发现了问题的所在
并不是数值
大括号中的数字都有“ ”在两边
这是String字符串的格式
当然在原生的C语言中并没有String类型,只有char[ ]数组构成的字符串
但介于这仅仅只有一个图,我也不会判断这究竟是C++亦或者是JAVA或其他啊语言的String数组还是原生的C就可以使用的二维数组
或许有的朋友会觉得这个数组里面都是字符串,应该是String类型的数组,但是C中可以使用二维数组实现
但这时我想到能不能对单元格进行设置呢?
设置单元格
在单元格设置中我将单元格的规格设为了数值
结果并没有什么用
我尝试着将数值进行手动的改变
手动输入数据
在数值被手动改为float浮点类型之后,数值靠在了右边
我看了看总共有多少数据,瞬间傻眼了
还要往后转滑轮很久才能滑完,每个表都是几页满的数据。。
我沉默了,这时我决定先搞清楚是什么原因导致的
由于现在平常都是做java和jsp或者前端的开发了,现在电脑上都没有C的编译器了
找了好久才找到了VC++6.0
一个很老的编译器
源码如下

int main(){

    char a[4][4] = {"6", "5.4", "4.9", "2.1"};

    for(int i=0; i<4; i++){
        printf("%s\n", a[i]);
    }

    return 0;
}

运行结果如下
运行结果
可以看到原生的C语言还是可以使用字符串数组,也就是二维数组来实现xls 的这个功能的
这样就不方便判断xls 的数据究竟是String类型还是char[ ]类型
但无论如何基本语法是没有变的
由于wps中是使用截取数据并放到文本框里面
我便想可以将数据转换成int吗?
答案是可以
强制转换为int
可以看到在加上强制转换符之后,得到的结果已经是int类型的了
但是如果是一列数据的话
测试
好像有问题,而且这列数据原本是小数的
而且无论是float和double的转化都不被认可
小编顿时觉得这件事比想象的还要复杂
在单元格设置中
单元格设置
只有数值这个选项,在不清楚xls 的内核或者wps的内核究竟是不是C还是只是对C进行了修改的情况下,我也找不到具体的char字符串数组或者String数组的转化函数
在小编决定测试一下C++中的类型转换函数的时候
想到了既然我把单元格规格设置为了数值,那么String类型的数据储存在里面会导致数据存储错误啊
虽然xls的兼容性很不错,不会导致数据存储错误,但至少是一个程序,开发人员在设计的时候就会考虑这一点,并作出解决方案啊
我再次看到主界面
出现提示
选取框的左上角有一个感叹号
感叹号想都不用想就是报错的标志
直觉告诉我这就是解决的关键
找到答案
原来这么简单吗。。。
这么简单的问题搞了我那么久的时间。。
真的打扰了。。
也希望朋友们不要再被相同的问题给迷惑这么久

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值