首先导入 openpyxl 模块及各种方法以便使用,可以简单命名一下

import openpyxl as pl   # 导入模块
from openpyxl import Workbook   # 导入新建表格方法
from openpyxl.styles import Font, Alignment, Side, Border    #   导入表格字体、样式编辑方法
from openpyxl.drawing.image import Image   # 导入图片编辑方法

创建表格的方法

excel= Workbook()   # 创建一个表格
filename = '表格.xlsx'   # 表格名称
sheet = excel.active    # 创建一个工作表
sheet.title = 'Sheet1'   # 命名工作表
sheet['A1'] = '时间'   # 在A1单元格添加内容
sheet['B1'] = '地点'	 # 在B1单元格添加内容
sheet['C1'] = '时间'	 # 在C1单元格添加内容
excel.save(filenname)    # 将编辑的内容进行保存

打开表格进行编辑

excel = pl.load_workbook(filename)   # 参数填入表格名进行加载
sheet= excel['Sheet1']   # 获取工作簿
sheet.cell(1, 1).value = '时间'   # 在第一行第一列写入数据
sheet.cell(1, 2).value = '地点'   # 在第一行第二列写入数据
sheet.cell(1, 3).value = '事件'   # 在第一行第三列写入数据
cell = sheet['D1']
cell.value = '时间'    # 在A1单元格写入数据
excel.save(filenname)   # 将编辑的内容进行保存

获得sheet中的最大行和最大列、获取内容

excel = pl.load_workbook(filename)   # 参数填入表格名进行加载
sheet= excel['Sheet1']   # 获取工作簿
rows = sheet.max_row   # 当前表格最大行
cols = sheet.max_column    # 当前表格最大列
val =sheet.cell(1,1).value #取到第一行第一列的值

合并单元格

sheet.merge_cells('A2:A10')    # 合并A2到10的单元格

判断是否存在表格

filename = '表格.xlsx' 
if not os.path.isfile(filename):   # 判断是否存在表格
    sheet = Workbook()
    filename = '表格.xlsx'
	sheet = self.wb1.active
	sheet.title = 'Sheet1'
	self.wb1.save(filename)

判断是否存在工作表

excel = pl.load_workbook(filename)  # 加载表格
sheets = excel.sheetnames   # 获取表格内所有工作表
if 'Sheet1' not in sheets :   # 遍历Sheet1是否存在
	sheet = excel.create_sheet(index=0, title='Sheet1')   # 在第一个位置插入工作表
else:
	sheet = excel['Sheet1']

设置行高与列宽

# 单列单行修改行列的宽高
sheet.column_dimensions['A'].width = 13.0   # 将A列列宽设置为13
sheet.row_dimensions[1].height = 20   # 设置第一行行高20
# 设置所有行高与列宽
from openpyxl.utils import get_column_letter
for i in range(1, sheet.max_row+1):
    sheet.row_dimensions[i].height = height
for i in range(1, sheet.max_column+1):
    sheet.column_dimensions[get_column_letter(i)].width = width

字体样式

from openpyxl.styles import Font 
"""
Font 对象参数说明:
Font(
    name=None,      # 字体名,可以用字体名字的字符串
    strike=None,    # 删除线,True/False
    color=None,     # 文字颜色
    size=None,      # 字号
    bold=None,      # 加粗, True/False
    italic=None,    # 倾斜,Tue/False
    underline=None # 下划线, 'singleAccounting', 'double', 'single', 'doubleAccounting'
)
"""
cell = sheet['A1'] 
font = Font(name='Arial', size=12, bold=True, italic=True, color='FF0000') 
cell.font = font

对齐居中

# 段落对齐
from openpyxl.styles import Alignment 
cell = sheet['B2'] 
alignment = Alignment(horizontal='center', vertical='center', text_rotation=45, wrap_text=True)    # 文本旋转、自动换行
cell.alignment = alignment 
# A列一整列居中对齐
align = Alignment(horizontal='center', vertical='center',wrap_text=True)
colA = self.sheet['A']
for cell in colA:
	cell.alignment = align
# 全部居中对齐
for i in range(sheet.max_row):
	for j in range(sheet.max_column):
		self.ws3.cell(row=i + 1, column=j + 1).alignment =Alignment(horizontal='center', vertical='center', wrap_text=True)

边框设置

# 边框样式
from openpyxl.styles import Side, Border 
cell = sheet['B2'] 
side1 = Side(style='thin', color='FF0000')     # 红色实线边框
side2 = Side(style='dashed')   # 虚线边框,默认黑色
border = Border(left=side1, right=side1, top=side2, bottom=side2) 
cell.border = border

单元格填充

fill = pl.styles.PatternFill("solid", fgColor="FFFF00")   # 实心、红色
sheet.cell(1, 1).fill = fill    # 第一行第一列填充

插入图片

from openpyxl.drawing.image import Image   # Image库有时会与其他库重名
img = Image('picture.jpg')   # 参数填入图片名
newsize = (180, 360)
img.width, img.height = newsize # 设置图片的宽和高
sheet.add_image(img, 'A2') # 往A2单元格插入图片