python使用OpenPyXl库对Excel进行操作,workbooksh


python使用OpenPyXl库对Excel进行操作

参考:知乎文章 / OpenPyXL教程 / 博客园

目录
  • python使用OpenPyXl库对Excel进行操作
    • 1. 基本概念
    • 2. 判断文件是否存在
    • 3. 创建和打开Excel文件
      • 3.1. 创建Excel文件
      • 3.2. 打开已有的Excel文件
    • 4. 储存数据
    • 5. sheet操作
    • 6. cell操作

1. 基本概念

在OpenPyXl中的基本改变跟Excel文件中是完全一致的。

workbook sheet cell
工作表 工作簿 单元格
相当于是一个Excel文件 每个文件都都可以包含多个表单 每个可以填写数据的小格就是单元格

2. 判断文件是否存在

判断文件是否存在的方法并没有用到OpenPyXl库,但是在实际场景中比较容易遇见,所以我也就补充在了这里。
例如,有时判断该文件是否存在,如果存在就在文件中添加新行进行数据写入,如果不存在就先创建一个Excel文件,再进行数据写入。

file_name = 'test.xlsx'
if os.path.exists(file_name):
    print("文件存在")
else:
    print("文件不存在")

3. 创建和打开Excel文件

3.1. 创建Excel文件

from openpyxl import Workbook
import os
file_name = 'test.xlsx'

wb = Workbook() # 创建一个workbook对象
ws = wb.active # 创建workbook会将第一个sheet激活,通过 wb.active获取引用
wb.save(file_name)

3.2. 打开已有的Excel文件

from openpyxl import load_workbook
import os
file_name = 'test.xlsx'

wb = load_workbook(file_name) # 无非是调用的函数存在区别
ws = wb.active 
wb.save(file_name)

4. 储存数据

我感觉这部分内容并不足以作为一个单独的标题,但是我用到了,所以单独把它拎出来写了一下。

ws['A1'] = 123.11 # 调整对应单元格的内容

ws.append([1, 2, 3]) # 在Excel表中添加新行

5. sheet操作

通过一段代码来展示sheet操作相关的功能:

  1. 创建sheet
  2. 修改sheet名称
  3. 设置sheet标签背景色
  4. 查看所有sheet的名称
  5. 获取sheet
  6. 复制sheet
  7. 删除sheet
from openpyxl import load_workbook
import os
file_name = 'test.xlsx'

wb = load_workbook(file_name) 

ws1 = wb.create_sheet("sheet") # 创建sheet,默认插在后面
ws1.title = "新表单"  # 设置sheet标题

ws2 = wb.create_sheet("mysheet", 0) # 创建一个sheet,插入到最前面 

ws2.sheet_properties.tabColor = "1072BA" # 设置sheet标签背景色

ws3 = wb.copy_worksheet(ws2) # ws3为ws2的复制

print(wb.sheetnames) # 查看该文件所有的sheet名称

ws4 = wb.get_sheet_by_name(u"新表单") # 根据名称获取sheet

wb.remove(ws1) # 删除sheet ws1

6. cell操作

  1. 单独操作
  2. 批量操作
  3. 合并单元格
from openpyxl import load_workbook
import os
file_name = 'test.xlsx'

wb = load_workbook(file_name) 
ws = wb.active

c = ws['A1'] # 通过单元格名称访问
d = ws.cell(row=4, column=2, value=10) # 通过行列坐标访问

# 操作单列
for cell in ws["A"]: 
    print(cell.value)
# 操作单行  
for cell in ws["1"]: 
    print(cell.value)
# 操作多列
for column in ws['A:C']: 
    for cell in column:
        print(cell.value)
# 操作多行
for row in ws['1:3']: 
    for cell in row:
        print(cell.value)
# 指定范围
for row in ws['A1:C3']: 
    for cell in row:
        print(cell.value)

# 所有行
for row in ws.iter_rows():
    for cell in row:
        print(cell.value)
# 所有列
for column in ws.iter_cols():
    for cell in column:
        print(cell.value)

# 合并
ws.merge_cells('A2:D2')
# 解除合并
ws.unmerge_cells('A2:D2')
# 合并
ws.merge_cells(start_row=2,start_column=1,end_row=2,end_column=4)
# 解除合并
ws.unmerge_cells(start_row=2,start_column=1,end_row=2,end_column=4)

评论关闭