如何使用Python操作Excel

在进行操作前,我们先熟悉一下excel表格的基本术语:

  • 工作簿:workbook。包含多个工作表的。
  • 表单:worksheet。指一个工作簿里面的每个表单。
  • 行:row
  • 列:column
  • 单元格:cell

这里我们使用openpyxl读取数据。

查看工作簿/工作表的内容

1  
2  
3  
4  
5  
6  

|

import openpyxl  
  
wb = openpyxl.load_workbook('examble.xlsx')  
  
# 从工作簿查看工作表  
print(wb.sheetnames)  
  

—|—

也可以通过循环的形式打开工作表

1  
2  
3  
4  
5  
6  
7  

|

import openpyxl  
  
wb = openpyxl.load_workbook('examble.xlsx')  
  
# 从工作簿查看工作表  
for sheet in wb:  
  print(sheet.title)  
  

—|—

假如要想增加工作表,可以通过下面的程序实现

1  
2  
3  
4  
5  
6  
7  
8  
9  

|

import openpyxl  
  
wb = openpyxl.load_workbook('examble.xlsx')  
  
# 增加表单  
Mysheet = wb.create_sheet("保育猪成本")  
Mysheet2 = wb.create_sheet("育肥猪成本")  
  
print(wb.sheetnames)  
  

—|—

读取某个单元格内容

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  

|

import openpyxl  
  
wb = openpyxl.load_workbook('examble.xlsx')  
  
ws = wb.active  
  
# 读取表单对象  
print(ws['A1'])  
  
# 读取单元格的内容  
print(ws['A1'].value)  
  

—|—

上面的程序未表示出行列坐标,如果想表示“第X行X列是X”,使用下面方法

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  

|

import openpyxl  
  
wb = openpyxl.load_workbook('examble.xlsx')  
  
ws = wb.active  
  
c = ws['A1']  
  
# 读取单元格的第一种方法  
print('row {} column {} is {}'.format(c.row, c.column, c.value))  
  
# 读取单元格的第一种方法  
print(ws.cell(row=1, column=3).value)  
  
# 读取一行多个单元格  
for i in range(1,8):  
  print(ws.cell(row=i, column=3).value)  
  

—|—

遍历某行或者某列的内容

通过下面的程序可以读取工作表中第五列的所有内容

1  
2  
3  
4  
5  
6  
7  
8  
9  

|

mport openpyxl  
  
wb = openpyxl.load_workbook('examble.xlsx')  
ws = wb.get_sheet_by_name("原始数据")  
  
for i in range(5, ws.max_row+1):  
    name = ws.cell(row=i, column=5).value  
  
    print(name)  
  

—|—

总结:

1  
2  
3  
4  

|

[1] import openyxl  
[2] wb = openpyxl.load_wookbook("文件名")  
[3] ws = wb.active or  ws = wb.get_sheet_by_name(sheettitle)  
[4] ws = ['A1'] or ws.cell(row=3, column=2)  
  

—|—

新工作表的创建及保存

工作表和工作簿的创建比较简单。

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  

|

import openpyxl  
  
# 创建工作簿  
ws = openpyxl.Workbook()  
sheet = ws.active  
  
# 给工作表命名  
sheet.title = "first"  
  
# 保存工作表  
ws.save("examble2.xlsx")  
  

—|—

当然也可以在原有文件的基础上创建工作表,注意最后保存文件时,使用另外一个名字,防止覆盖原文件的内容。

如果想要创建新的工作表,则使用create_sheet(index=0, title='名称'),index代表表单的位置,title表示表单的名称,如果不填写表单的名称,会默认为sheet。

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  

|

import openpyxl  
  
# 创建工作簿  
ws = openpyxl.Wookbook()  
  
sheet = ws.active  
  
ws.create_sheet(index=3, title='second')  
  
# 保存工作表  
ws.save("examble2.xlsx")  
  

—|—

表单的删除使用如下程序

1  

|

ws.remove_sheet(wb.get_sheet_by_name('second'))  
  

—|—

向单元格写内容

最简单的是手工往里面填,这个用得少

1  

|

sheet['A1'] = "填写单元格的内容"  
  

—|—

向单元格批量填写如下:

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  

|

import openpyxl  
  
wb = openpyxl.Workbook()  
  
sheet = wb.active  
  
# 创建工作表  
ws = wb.create_sheet("First")  
  
for row in range(1,1000):  
    ws.append(range(1, 100, 2))  
  
wb.save("excamble5.xlsx")  
  

—|—

单元格内容的批量改写

基本方法是使用for循环对单元格进行遍历,当查找到需要改写的内容时,直接改写

遍历的程序如下:

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  

|

import openpyxl  
  
wb = openpyxl.load_workbook('examble.xlsx')  
ws = wb.get_sheet_by_name("原始数据")  
  
# 遍历第4列  
for i in range(5, ws.max_row+1):  
    name = ws.cell(row=i, column=5).value  
  
    print(name)  
  

—|—

参考资料

用Python处理Excel数据,中文全基础系列教程

用Python处理Excel数据,中文全基础系列教程

openpyxl官方文档