Loading

excel操作openpyxl插件

安装openpyxl

pip install openpyxl

 

创建一个工作簿

 使用openpyxl没有必要先在系统中新建一个.xlsx,我们需要做的只需要引入Workbook这个类,接着开始调用它。

创建

from openpyxl import Workbook

# 实例化
wb = Workbook()

# 激活 worksheet
ws = wb.active

一个工作簿(workbook)在创建的时候同时至少也新建了一张工作表(worksheet)。你可以通过openpyxl.workbook.Workbook.active()调用得到正在运行的工作表。

注意:该函数调用工作表的索引(_active_sheet_index),默认是0。除非你修改了这个值,否则你使用该函数一直是在对第一张工作表进行操作。

 

打开已有

from openpyxl import load_workbook

wb2 = load_workbook('E:\\全部_原始数据.xlsx')

 

工作表操作

使用create_sheet()新建一张表

ws1 = wb.create_sheet() # 默认插在工作簿末尾

ws2 = wb.create_sheet(0) # 插入在工作簿的第一个位置

 

 修改表名称

ws1 = wb.create_sheet().title = "最帅" 

ws2 = wb.create_sheet(0).title = "最丑"

 

获取工作表

print(wb.get_sheet_names()) # get_sheet_names()获取所有sheet

# 通过sheet的name获取sheet
ws3 = wb['最帅'] 
ws4 = wb['最丑']

也可以循环得到所有的工作表

for sheet in wb:
    print(sheet.title)

 

更改标签栏背景色

 标签栏的背景色默认为白色。你可以通过提供一个RRGGBB颜色码改变标签栏的字体颜色:

在线工具:https://m.fontke.com/tool/rgb/1072ba/
ws.sheet_properties.tabColor = 'FF90A3'
ws3.sheet_properties.tabColor = '00FFFF'
ws4.sheet_properties.tabColor = '990099'

 

使用一个单元格

索引直接获得

单元格的值也可以直接赋值

# 通过索引获得
c = ws['A2']

# 直接赋值
ws['A2'] = 'zheng.gu'

 

用 cell() 方法获取单元格

  • 坐标获取(行,列)
  • 行列获取
# cell() 坐标
c = ws.cell(3,1)

# 通过行列获取
d = ws.cell(row=4,column=1)

# 赋值
c.value = 'liangliang'
d.value = 'HeHan'

 

使用多个单元格

使用切片获取多个单元格

# 获取多个单元格
cell_range = ws['A1':'A4']
print(cell_range)

 

使用iter_rows() 方法获取多个单元格

for row in ws.iter_rows(1,4,1,2):
    for cell in row:
        print(cell)

 

存储数据

数据直接赋值到单元格

ws['A1'] = 'jun.chen'

 

cell()赋值

e = ws.cell(4,2)

e.value = '12%'
print(e.value)

import datetime

f = ws.cell(5,3)
f.value = datetime.datetime.now()
print(f.value)

g = ws.cell(4,3)
g.value = '31.51'
print(g.value)

 

保存文件

 保存工作簿最简单最安全的方式是使用openpyxl.workbook.Workbook的save()方法

wb.save('new.xlsx')

特别警告:这个操作将会在没有认识提示的情况下用现在写的内容,覆盖掉原文件中的所有内容

 

获取最大行,最大列

ws = wb['客户信息']

# 因为按行,所以返回A1、B1、C1这样的顺序
for row in ws.rows:
    for cell in row:
        print(cell.value)
# A1、A2、A3这样的顺序
for column in ws.columns:
    for cell in column:
        print(cell.value)

 

删除工作表

方法一:remove()

ws = wb['一般']

# 删除‘一般’这张表sheet
wb.remove(ws)

wb.save('new.xlsx')

方法二:def 

del wb['一般']

wb.save('new.xlsx')

 

设置单元风格

需要导入的类

from openpyxl.styles import Font, colors, Alignment

字体

下面的代码指定了等线24号加粗斜体,字体颜色红色。直接使用cell的font属性,将Font对象赋值给它。

bold_itatic_24_font = Font(name='等线',size=24,italic=True,color=colors.RED,bold=True)

ws['A1'].font = bold_itatic_24_font

wb.save('new.xlsx')

 

对齐方式

也是直接使用cell的属性aligment,这里指定垂直居中和水平居中。除了center,还可以使用rightleft等等参数。

ws['B4'].alignment = Alignment(horizontal='center',vertical='center')

 

设置行高和列宽

# 第2行行高
ws.row_dimensions[2].height = 40
# C列列宽
ws.column_dimensions['B'].width = 30

wb.save('new.xlsx')

 

合并和拆分单元格

  • 所谓合并单元格,即以合并区域的左上角的那个单元格为基准,覆盖其他单元格使之称为一个大的单元格。
  • 相反,拆分单元格后将这个大单元格的值返回到原来的左上角位置。
# 合并单元格,往左上角写入数据即可
ws.merge_cells('C1:F1')
ws.merge_cells('A6:D8')

 

  • 合并后只可以往左上角写入数据,也就是区间中:左边的坐标。
  • 如果这些要合并的单元格都有数据,只会保留左上角的数据,其他则丢弃。换句话说若合并前不是在左上角写入数据,合并后单元格中不会有数据。
  • 以下是拆分单元格的代码。拆分后,值回到A1位置。
ws.unmerge_cells('A6:D8')

 

posted @ 2020-07-31 23:05  Binzichen  阅读(306)  评论(0编辑  收藏  举报