美文网首页8 分钟系列
用 python 读写 excel 文件

用 python 读写 excel 文件

作者: 空之古城 | 来源:发表于2018-10-22 22:16 被阅读20次

介绍

python-excel 是一组用 python 实现的 excel 文件访问库,包括 xlrdxlwtxlutils 三个模块。这里介绍一下它的基本用法,大约需要 10 分钟阅读。

安装

mac 上的安装命令

sudo pip install xlrd
sudo pip install xlwt
sudo pip install xlutils

扩展:其他的安装方式参见这里

读文件

读文件示例代码如下:

# -*- coding: utf-8 -*- 

import sys  
reload(sys)  
sys.setdefaultencoding('utf8')  
import xlrd

def 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_function
import sys  
reload(sys)  
sys.setdefaultencoding('utf8')  
import xlrd

def 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 xlwt

def 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 data

def 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 xlrd
import 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 文件内容为:

id value
0 0
1 10
3 30
2 20
4 40
5 50
6 60
7 70
8 80
9 90

高级用法

xlutils 的使用,留在以后分享。

相关文章

网友评论

    本文标题:用 python 读写 excel 文件

    本文链接:https://www.haomeiwen.com/subject/lepnzftx.html