黑马程序员技术交流社区
标题:
【上海校区】python 读写 excel
[打印本页]
作者:
不二晨
时间:
2018-11-12 09:09
标题:
【上海校区】python 读写 excel
介绍
python-excel
是一组用 python 实现的 excel 文件访问库,包括
xlrd
、
xlwt
和
xlutils
三个模块。这里介绍一下它的基本用法,大约需要 15 分钟阅读。
安装
mac 上的安装命令
sudo pip install xlrdsudo pip install xlwtsudo pip install xlutils复制代码扩展:其他的安装方式参见
这里
。
读文件
读文件示例代码如下:
# -*- coding: utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf8') import xlrddef read_file(file_path): book = xlrd.open_workbook(file_path) #得到 Excel 文件的 book 对象,实例化对象 sheet = book.sheet_by_index(0) # 通过 sheet 索引获得 sheet 对象 ncols = sheet.ncols # 列数 nrows = sheet.nrows # 行数 print("row count:{:d}, column count:{:d}".format(nrows, ncols)) for row in range(nrows): print(sheet.row_values(row))if __name__ == '__main__': read_file("test.xls")复制代码当然也可以逐个 cell 地读取文件,代码如下:
# -*- coding: utf-8 -*- from __future__ import print_functionimport sys reload(sys) sys.setdefaultencoding('utf8') import xlrddef read_file(file_path): book = xlrd.open_workbook(file_path) sheet = book.sheet_by_index(0) ncols = sheet.ncols nrows = sheet.nrows for row in range(nrows): for col in range(ncols): print(sheet.cell_value(row, col), end='') print('\t', end='') print("")if __name__ == '__main__': read_file("test.xls")复制代码扩展:xlrd 的 Api 文档在
这里
。
写文件
写文件的示例代码如下:
# -*- coding: utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf8') import xlwtdef get_data(): data = [] data.append(["id", "value"]) for i in range(10): col_data = [] col_data.append(i) col_data.append(i * 10) data.append(col_data) return datadef write_file(file_path, sheet_name, data): book = xlwt.Workbook(encoding = 'utf-8') sheet = book.add_sheet(sheet_name) row = 0 for row_data in data: col = 0 for cell_data in row_data: sheet.write(row, col, cell_data) col += 1 row += 1 book.save(file_path)if __name__ == '__main__': data = get_data() write_file("test.xls", "test sheet", data)复制代码扩展:xlwt 的 Api 文档在
这里
。
过滤文件示例
下面这个过滤文件的示例,是 excel 文件读写的综合应用:
# -*- coding: utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf8') import xlrdimport xlwt# 过滤掉第二列元素等于 keyword 的数据所在行def filter_file(src_file, src_sheet_name, desc_file, desc_sheet_name, keyword): src_book = xlrd.open_workbook(src_file) src_sheet = src_book.sheet_by_name(src_sheet_name) desc_book = xlwt.Workbook(encoding = 'utf-8') desc_sheet = desc_book.add_sheet(desc_sheet_name) ncols = src_sheet.ncols nrows = src_sheet.nrows index = 0 for row in range(nrows): content = src_sheet.cell_value(row, 1) if content == keyword: continue for col in range(ncols): desc_sheet.write(index, col, src_sheet.cell_value(row, col)) index += 1 desc_book.save(desc_file) if __name__ == '__main__': filter_file("test.xls", "test sheet", "test_desc.xls", "test sheet", 30)复制代码上述例子中的 test.xls 文件内容为:
idvalue
00
110
330
220
440
550
660
770
880
990
高级用法
xlutils 的使用,留在以后分享。
【转载】
作者:空空古城
链接:
https://juejin.im/post/5bce902de51d457abe7fd1c5
作者:
不二晨
时间:
2018-11-14 15:20
~(。≧3≦)ノ⌒☆
作者:
梦缠绕的时候
时间:
2018-11-15 15:03
作者:
魔都黑马少年梦
时间:
2018-11-15 16:31
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2