赞
踩
1.Excel简介
Excel 是 Microsoft(微软)为使用 Windows 和 macOS 操作系统开发的一款电子表格软件。Excel 凭借其直观的界面,出色的计算功能和图表工具,再加上成功的市场营销,一直依赖都是流行的个人计算机数据处理软件。当然,Excel 也有很多竞品,例如 Google Sheets、LibreOffice Caic、Numbers 等,这些竞品基本上也能够兼容 Excel,至少能够读写较新版的 Excel 文件,当然这些不是我们讨论的重点。掌握用 Python 程序操作 Excel 文件,可以让日常办公自动化的工作更加轻松愉快,而且再很多商业项目中,导入导出 Excel 文件都是特别常见的功能
Python 操作 Excel 需要三方库的支持,如果要兼容 Excel 2007 以前的版本,也就是 xls 格式的 Excel 文件,可以使用三方库 xlrd 和 xlwt,前者用于读 Excel文件,后者用于写 Excel 文件。如果使用较新的 Excel,即操作 xlsx 格式的 Excel 文件,可以使用 openpyxl 库,当然这个库不仅仅可以操作 Excel,还可以操作其他基于 Office Open XML 的电子表格文件、openpyxl 并不是支持 Office 2007 以前版本的 Excle 文件
2.xls 和 xlsx 和 csv 有什么区别
文件格式不同。xls 是一个特有的二进制格式,其核心结构是复合文档类型的结构,而 xlsx 的核心结构式 XML 类型的结构,采用的是基于 XML 的压缩方式,使其占用的空间更小。xlsx 中最后一个 x 的意义就在于此
版本不同。xls 是 excel 2003 及以前版本生成的文件格式,而 xlsx 是 excel 2007 及以后版本生成的文件格式
兼容性不同。xlsx 格式是向下兼容的,可兼容 xls 格式
csv 是文本文件,用记事本就能打开
3.基于 xlwt 和 xlrd 操作 Excle 文件
可以使用下面的命令安装这两个三方库以及配合使用的工具模块 xlutils
- pip install xlwt # 用于向xls格式的文件中写入内容 Successfully installed xlwt-1.3.0
- pip install xlrd # 用于从xls格式的文件中读取内容 Successfully installed xlrd-2.0.1
- pip install xlutils # 工具模块 Successfully installed xlutils-2.0.0
4.读 xls 格式文件
例如再当前文件夹下有一个名为“阿里巴巴2020年股票数据.xls”的 Excel文件,如果想读取并显示该文件的内容,可以通过如下所示的代码
- # 导入 xlrd 模块
- import xlrd
-
- # 读取 xls 文件的中作对象
- wb = xlrd.open_workbook(r"./阿里巴巴2020年股票数据.xls")
- # print(wb)
-
- # 获取所有的工作表名称
- sheet_names = wb.sheet_names()
- # print(sheet_names)
-
- # 选择要读取的具体的工作表对象
- sheet = wb.sheet_by_name(sheet_names[0])
- # print(sheet)
-
- # 查看工作表的行和列数
- # print(sheet.nrows, sheet.ncols)
-
- # 通过循环的方式获取工作表中的每行和每列的数据
- for row in range(sheet.nrows):
- for col in range(sheet.ncols):
- # print(row, col)
- # 通过cell对象中的value属性获取具体单元格的数据
- value = sheet.cell(row, col).value
- # print(value)
- # 将第一行以外的数据进行格式化处理
- if row > 0:
- # 将第一列的数据转换为年月日的格式
- if col == 0:
- value = xlrd.xldate_as_tuple(value, 0)
- # print(value) # (2020, 11, 13, 0, 0, 0)
- # :>02d 表示月份和日期保留2位(01月08日)
- value = f"{value[0]}年{value[1]:>02d}月{value[2]:02d}日"
- # print(value) # 2020年10月01日
- else:
- # 将处理第一列的数据之外的数据格式保留2位小数
- value = f"{value:.2f}"
- print(value, end="\t")
- print() # 实现换行的效果
执行结果
- Date High low Open Close Volume Adj Close
- 2020年12月01日 213.63 210.73 211.47 212.48 673600.00 212.11
- 2020年12月02日 214.63 211.73 212.47 213.48 673601.00 213.11
- 2020年12月03日 215.63 212.73 213.47 214.48 673602.00 214.11
- 2020年12月04日 216.63 213.73 214.47 215.48 673603.00 215.11
- 2020年12月05日 217.63 214.73 215.47 216.48 673604.00 216.11
- 2020年12月06日 218.63 215.73 216.47 217.48 673605.00 217.11
- 2020年12月07日 219.63 216.73 217.47 218.48 673606.00 218.11
- 2020年12月08日 220.63 217.73 218.47 219.48 673607.00 219.11
- 2020年12月09日 221.63 218.73 219.47 220.48 673608.00 220.11
- 2020年12月10日 222.63 219.73 220.47 221.48 673609.00 221.11
- 2020年12月11日 223.63 220.73 221.47 222.48 673610.00 222.11
- 2020年12月12日 224.63 221.73 222.47 223.48 673611.00 223.11
- 2020年12月13日 225.63 222.73 223.47 224.48 673612.00 224.11
- 2020年12月14日 226.63 223.73 224.47 225.48 673613.00 225.11
- 2020年12月15日 227.63 224.73 225.47 226.48 673614.00 226.11
- 2020年12月16日 228.63 225.73 226.47 227.48 673615.00 227.11
- 2020年12月17日 229.63 226.73 227.47 228.48 673616.00 228.11
- 2020年12月18日 230.63 227.73 228.47 229.48 673617.00 229.11
- 2020年12月19日 231.63 228.73 229.47 230.48 673618.00 230.11
- 2020年12月20日 232.63 229.73 230.47 231.48 673619.00 231.11
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。