Python使用xlwt和xlrd读写excel文件
xlwt和xlrd是两个相互配套的模块,在Python中,用于将数据写入Excel文件和读取Excel文件的数据。
从字面即可看出xlwt是对xls格式的文件进行write,xlrd是对xls格式的文件进行read。
xlwt可以实现指定表单、指定单元格的写入。在写入的时候,xlwt写的过程就是一个单元格一个单元格的写。
一、安装xlwt和xlrd
pip install xlwtpip install xlrd
二、使用xlwt将数据写入excel文件
import xlwtxlwt_data = [('有', '人', '云', '淡', '风', '轻'),('有', '人', '负', '重', '前', '行'),('p', 'y', 't', 'h', 'o', 'n')]output_file_name = 'xlwt_file.xls'def save_excel(target_list, output_file_name):"""将数据写入xls文件"""if not output_file_name.endswith('.xls'):output_file_name += '.xls'workbook = xlwt.Workbook(encoding='utf-8')ws = workbook.add_sheet("sheet1")title_data = ('a', 'b', 'c', 'd', 'e', 'f')target_list.insert(0, title_data)rows = len(target_list)lines = len(target_list[0])for i in range(rows):for j in range(lines):ws.write(i, j, target_list[i][j])workbook.save(output_file_name)save_excel(xlwt_data, output_file_name)
代码描述:
1.我们先将需要保存的数据解析好,保存成固定的数据类型(一个由元组或列表构成的列表)
2.我们将保存数据到excel文件的代码封装成一个函数,方便重用
主要步骤为:
(1).创建一个xlwt.Workbook()对象,也就是创建一个表格对象
(2).使用add_sheet()方法创建或打开一张表(sheet)
(3).将数据一个单元格一个单元格的依次写入到表中
(4).保存文件,指定自己想保存成的文件名字
运行结果:
上面的代码执行后,会在代码同级目录下创建一个名字为xlwt_file.xls的excel文件,并写入xlwt_data的数据,使用excel打开结果如下:
三、使用xlrd读取excel文件数据
xlrd可以实现指定表格、指定单元格的读取。在读取的时候,xlrd可以按行、按列读,也可以一个单元格一个单元格的依次读取。
import xlrdinput_file_name = 'xlwt_file.xls'def read_excel(input_file_name):"""从xls文件中读取数据"""workbook = xlrd.open_workbook(input_file_name)print(workbook)# 可以使用workbook对象的sheet_names()方法获取到excel文件中哪些表有数据print(workbook.sheet_names())# 可以通过sheet_by_index()方法或sheet_by_name()方法获取到一张表,返回一个对象# table = workbook.sheet_by_index(0)# print(table)table = workbook.sheet_by_name('sheet1')print(table)# 通过nrows和ncols获取到表格中数据的行数和列数rows = table.nrowscols = table.ncols# 可以通过row.values()按行获取数据,返回一个列表,也可以按列for row in range(rows):row_data = table.row_values(row)print(''.join(row_data))# 也可以根据单元格获取每一个单元格的数据for row in range(rows):for col in range(cols):data = table.cell(row, col).valueprint(data, end=' ')read_excel(input_file_name)
代码描述:
1.通过xlrd的open_workbook()方法打开一个xls文件,返回一个workbook对象,这个对象是一个Book对象,即文件对象
2.通过文件对象workbook的sheet_names()方法可以获取文件中所有有数据的表名,返回一个表名构成的列表
3.通过文件对象workbook的sheet_by_id()方法或sheet_by_name()方法可以打开指定的表,返回一个表格对象table
4.通过表格对象table的nrows属性和ncols属性,可以获取到表格的行数和列数
5.获取到表格的行数和列数后,就可以用row_values()方法或col_values()方法来按行或按列来获取表格中的数据了
6.也可以使用cell().value指定单元格的行和列来读取指定单元格的值
运行结果:
<xlrd.book.Book object at 0x000002733656D0F0>['sheet1']<xlrd.sheet.Sheet object at 0x0000027336BE5BE0>abcdef有人云淡风轻有人负重前行pythona b c d e f 有 人 云 淡 风 轻 有 人 负 重 前 行 p y t h o n
现在,我们可以很方便的使用xlwt和xlrd来写入和读取xls格式的excel文件数据了。