Excel的数据类型转换方法

来源:互联网 发布:远景能源怎么样 知乎 编辑:程序博客网 时间:2024/06/07 23:43

导论

最近在用程序读写excel文件,碰到了一些excel单元格的数据类型的相关问题。总结了几个小技巧。对于用程序操作excel,或者需要用excel函数的朋友会有一些助益。

Excel的数据类型

Excel,在逻辑上分为这样几层关系:
book–就是整个excel文件。
sheet–工作表。一个excel文件至少有一个工作表,可能有多个工作表。sheet在excel界面上的一个个TAB。
row–行
column–列
cell–单元格

每个格子就是一个单元格。每个单元格中的数据都有其数据类型。在Excel中可以用TYPE函数获取数据类型。
如果 value 为 函数 TYPE 返回
数字 1
文本 2
逻辑值 4
误差值 16
数组 64

对excel公式执行type函数,返回8。因此推测类型8可能指的是公式。

不考虑误差、错误和数组这些类型,excel有如下这些常用类型:
数值
文本
布尔
日期
实际上,可以认为,excel单元格的数据类型,就是数值类型文本类型两种。
因为,布尔类型,实际上会转为整数0和1来表示。
日期类型,实际上存储为整数类型。1900-01-01是第一天。日期存储的是自1900-01-01那天后的第几天。
日期类型,可以用文本形式给出,但实际上会自动转换为日期类型,用整数存储。

判断Excel单元格的数据类型的方法

Excel软件版本较多,而且还存在大量第三方软件。如我在Linux下常用openoffice打开Excel文件。要找到一个在所有兼容Excel的软件下正确判断Excel单元格的数据类型的方法是比较困难的。
经过摸索,我发现了一种通用的判断Excel单元格中的数据类型的方法。至少我还没有发现这种方法在哪种Excel兼容软件中不可用。

1,选中要查看的单元格,选择【开始】-【清除】,下拉选择【清除格式】。
2,然后,查看 当前的单元格中的数字是左对齐还是右对齐,如果是左对齐,那么就是文本格式储存的,如果是右对齐,那么则是以数字格式存储的。

正确判断Excel单元格的数据类型是非常重要的。很多Excel函数会挑单元格的数据类型。不经意间,你的excel公式的计算结果可能就是错的。

如Excel的SUM函数,不会统计数据类型是文本的单元格的数据。这样得到的错误结果可能会导致严重的经济损失。

数字存储为文本

默认,我们在单元格中录入能够转为数字的字符串,Excel兼容软件就会把它存为。
在数字前加半角的’(单引号),即可换成文本,但如果需要转换的数字较多,则这种办法较麻烦。
在程序中读取excel的数据时,不会把这个‘单引号读取出来。

文本存储为数字

1,新建一个1的数值类型单元格。
2,选中它。
3,再选中需要转为数字的一组单元格。
4,右键”选择性粘贴“。选择乘,确定后目标单元格就会变成数字。

如果是用上一节前面加上’变成的文本,则这招可能不管用。需要把文本前面的‘去掉。

总结

Excel编程中,单元格的数据类型是非常关键的。本文给出了几种查看和转换Excel单元格数据类型的通用方法。

注意

有很多种方法可以对Excel文件进行程序操作。如微软自己的.net类库和其他语言提供的第三方的类库。
建议不要使用微软自己的.net类库。因为,微软自己用来操作Excel的.net类库,是COM组件。不同版本的Excel软件都是不同的。如果最终用户安装的Excel软件版本和程序员开发时的Excel版本不同,那么就会发生找不到COM组件的错误。影响程序的可用性。
因此,我建议程序员使用第三方跨平台的Excel操作类库或者函数库。避免微软官方Excel类库的DLL地狱!

参考资料

1,Excel官方帮助文档:
https://support.office.com/zh-cn/excel
2,Excel函数大全:
https://support.office.com/zh-cn/article/Excel-%E5%87%BD%E6%95%B0%EF%BC%88%E6%8C%89%E7%B1%BB%E5%88%AB%E5%88%97%E5%87%BA%EF%BC%89-5f91f4e9-7b42-46d2-9bd1-63f26a86c0eb?ui=zh-CN&rs=zh-CN&ad=CN

1 0