python读取写入excel文件

本文介绍了如何使用Python的openpyxl库在Excel文件中进行表的读取、写入,包括获取表格、单元格数据、创建和删除工作表,以及数据的批量写入。涵盖了活动表的选择、单元格定位、切片操作和文件操作的基本流程。
摘要由CSDN通过智能技术生成

Excel文件包含多个表,当前查看的表为活动表。每个表有多列,从A开始编号;也有多个行,从1开始计数。

读取文件

  1. 打开文件

python打开excel文件需要导入openpyxl模块,使用openpyxl.load_workbook()函数,该函数接受一个文件名,获得Workbook()对象。

import openpyxl
wb = openpyxl.load_workbook('table.xlsx')
  1. 读取表格

get_sheet_names()可以取得文件中所有表名,返回一个列表。

wb.get_sheet_names()

get_sheet_by_name()放入传入表名可以获得表,返回一个Worksheet对象。该对象的.title属性可以获得名称。

sheet = wb.get_sheet_by_name('Sheet1')
sheet.title

active属性可以获得活动表,也即当前查看的表。

anotherSheet = wb.active
  1. 获取一个单元格

获得表格后,通过下表访问单元格,获得Cell对象。单元格有value属性,得到单元格中保存的值。

sheet = wb.get_sheet_by_name('Sheet1')
sheet['A1'].value

Worksheet对象的max_row()max_column()属性获得表的大小。

sheet.max_row
sheet.max_column

Cell对象也有rowcolumncoordinate属性,提供单元格位置信息。

c = sheet['A1']
c.row     # 行信息,1
c.column  # 列信息,2
c.coordinate  # 行列信息,A1

获得单元格时也可以传入rowcolumn关键字参数来指定。

sheet.cell(row=1, column=1).value
for i in range(1, 5):
    print(sheet.cell(row=i, column=1).value)

第一行或第一列从1开始编号。

  1. 获得一片单元格

Worksheet对象可以切片,获得一行、一列或者一个区域中的全部单元格对象,然后使用循环遍历每个单元格。
Worksheet对象可以通过rowscolumns属性获得行和列的切片。

list(sheet.rows)[1]
list(sheet.columns)[2]
for i in (sheet.columns)[1]:
	print(i.value)

还可以获得矩形切片。

for i in sheet sheet['A1', 'D4']
	for j in i:
		print(j.coordinate, j.value)

这里遍历的是A1到D4中全部单元格对象,外层循环遍历每一行,内层循环遍历每个单元格。

写入文件

  1. 创建文档

调用openpyxl.Workbook()函数创建一个新的Workbook对象。

wb = openpyxl.Workbook()
wb.get_sheet_names()
sheet = wb.active
sheet.title = 'sheet1'

创建Workbook对象后有一个名为Sheet的表,可以通过title属性修改表名。

  1. 保存文档

调用save()方法保存文档,传入一个文件名。

wb.save('table.xlsx')
  1. 创建工作表

利用create_sheet()方法添加工作表。

wb.create_sheet()

新创建的表默认是最后一个工作表,可以利用index参数指定新工作表的索引。

wb.create_sheet(index=0)

还可以利用title参数指定工作表名称。

wb.create_sheet(index=0, title='New Sheet')
  1. 删除工作表

利用remove_sheet()方法删除工作表。该方法接受一个Worksheet对象作为参数,而不是工作表的名称。因此,就需要调用get_sheet_by_name()方法输入表的名称,将返回结果传入remove_sheet()方法。

wb.remove_sheet(wb.get_sheet_by_name('New Sheet'))
  1. 写入数据

通过下标的方式把数据写入单元格。

sheet['A1'] = 'hello world'
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值