爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11257|回复: 5

[参考资料] [已收纳]python之读取Excel(xls/xlsx)文件

[复制链接]
发表于 2019-5-31 14:41:46 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 15195775117 于 2021-1-27 10:37 编辑

很多数据是以表格形式存储的,主要是csv、xls和xlsx格式,csv是文本格式,可以直接读取,不存在障碍,
但是IDL读取xls文件是通过ODBC的,需要数据库支持,比较麻烦,因为我目前不用数据库
万能的python中有读写xls的模块,
分别是读取模块xlrd和写出模块xlwt,支持python2和python3,
经检查,在Anaconda中我已经安装了这2个模块,所以使用就可以了,
这个帖子说的比较细致,后面就按照这个帖子来发散学习、举一反三:
https://www.cnblogs.com/linyfeng/p/7123423.html
附件表格是用来读取的素材,我放在了桌面,
以后关于xls文件处理的技巧我都跟帖在这个主题下。
下面开始:

某国控点部分数据.xls

23.5 KB, 下载次数: 8, 下载积分: 金钱 -5

密码修改失败请联系微信:mofangbao
 楼主| 发表于 2019-5-31 14:49:58 | 显示全部楼层
#清屏是Ctrl+L
#注释/取消注释若干行是Ctrl+1


#xls文件读取模块:
import xlrd
#xls文件写出模块:
import xlwt
#引入时间处理工具:
from datetime import datetime,date


#xls文件路径:
path='C:\\Users\\Administrator\\Desktop\\'
filename='某国控点部分数据.xls'
file=path+filename


#获取所有sheet表
workbook = xlrd.open_workbook(file)
#输出所有表名:
print('所有子表名:',workbook.sheet_names())


#第一个表名:
sheet1_name=workbook.sheet_names()[0]
#输出第一个表名:
print('第一个子表名:',sheet1_name)


#获取并输出行列数
sheet1 = workbook.sheet_by_index(0)
print('行数:',sheet1.nrows,'列数:',sheet1.ncols)
#整行列读取
#第3行:
rows = sheet1.row_values(3)
#第0列:
cols = sheet1.col_values(0)

密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-31 15:00:39 | 显示全部楼层
#获取单元格数据类型
#类型是按数字表示的:
#ctype : 0 empty,1 string, 2 number, 3 date, 4 boolean, 5 error
typename=['empty','string','number','date','boolean','error']
#某单元格类型:
celltype=sheet1.cell(6,0).ctype
print('该单元格数据类型:',typename[celltype])
if(celltype == 3):
    print('数据类型是时间型')
if(celltype != 3):
    print('数据类型不是时间型!!')




#以下为时间型单元格处理办法:
#首先得确认类型是时间,即ctype=3
jultime=sheet1.cell(12,0).value#这里时间好像是儒略格式
#转换为年月日时分秒:
time=xlrd.xldate_as_tuple(sheet1.cell_value(12,0),workbook.datemode)
print(time)
#以下输出格式不懂:
print(date(*time[:3]))
print(date(*time[:3]).strftime('%Y/%m/%d'))


程序输出结果:
该单元格数据类型: date
数据类型是时间型
(2019, 2, 1, 9, 0, 0)
2019-02-01

2019/02/01

密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-31 17:44:38 | 显示全部楼层
今天读写国控点数据表,老是报编码错误,经过艰苦卓绝的研究,终于发现,
python不能读写上下标!!!
其他特殊字符也应注意!!!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 2019-5-31 17:53:17 | 显示全部楼层
python能不能"读"上下标我不知道,但是我知道python一定能"写"上下标。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-1 00:37:31 | 显示全部楼层
一人。 发表于 2019-5-31 17:53
python能不能"读"上下标我不知道,但是我知道python一定能"写"上下标。

有代码借鉴下?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表