A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不二晨 金牌黑马   /  2018-11-12 09:09  /  1385 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

介绍
python-excel 是一组用 python 实现的 excel 文件访问库,包括 xlrdxlwtxlutils 三个模块。这里介绍一下它的基本用法,大约需要 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



3 个回复

倒序浏览
~(。≧3≦)ノ⌒☆
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马