python写excel文件出错_用 python 读写 excel 文件

介绍

python-excel 是一组用 python 实现的 excel 文件访问库,包括 xlrd、xlwt 和 xlutils 三个模块。这里介绍一下它的基本用法,大约需要 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 的使用,留在以后分享。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值