首先导入 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单元格插入图片