一、生成Excel文件
安装模块
pip install openpyxl
代码示例
import openpyxl
from openpyxl.styles import Font
from openpyxl.styles import PatternFill
from openpyxl.drawing.image import Image
wb = openpyxl.Workbook() # 创建excel文件
sheet1 = wb.active # 获取第一个sheet,即"Sheet"
sheet1.title = "这里是sheet1" # 给"Sheet"改名
"""
wb.remove_sheet(wb['Sheet']) # 移除名为"Sheet"的sheet
sheet1 = wb.create_sheet('这里是sheet1') # 创建一个sheet
"""
sheet1.cell(row=1, column=5).value = '内容' # 在sheet1的第一行第E列写入内容
sheet1.cell(row=1, column=1).font = Font(color='FF0033') # 设置第1行第A列的文字颜色为FF0033(红色)
sheet1.cell(row=2, column=1).fill = PatternFill(fill_type='solid', start_color='7CFC00', end_color='7CFC00') # 设置第2行第A列的填充底色为7CFC00(绿色)
sheet1.column_dimensions['A'].width = 20 # 设置列A的宽度为20字节
image_path = 'xxxx.png'
img = Image(image_path)
sheet1.add_image(img, 'F1') # 在F1单元格开始插入图片
wb.save('xxxx.xlsx') # 保存文件名为xxxx.xlsx
二、读取Excel文件
安装模块
pip install openpyxl
代码示例
import openpyxl
# 判断是否为合并单元格,是则返回合并单元格的内容,否则返回当前单元格的内容
def merged_cells_value(sheet, axis, merged_cells):
"""
参数1:要操作的sheet
参数2:单元格位置
参数3:这个sheet里的合并单元格列表
"""
if sheet[axis].value:
return sheet[axis].value
for c in merged_cells:
t = []
l = str(c)[0]
for m in range(int(str(c).replace(l, '').split(':')[0]), int(str(c).replace(l, '').split(':')[1]) + 1):
t.append(l + str(m))
if axis in t:
return sheet.cell(row=c.min_row, column=c.min_col).value
else:
return sheet[axis].value
codes = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
wb = openpyxl.load_workbook('xxxx.xlsx') # 打开xxxx.xlsx文件
sheets = workbook.worksheets # 获取所有sheet
for sheet in sheets: # 遍历sheet列表
merged_cells = [i for i in sheet.merged_cells.ranges] # 获取当前sheet的所有合并单元格
rows = sheet.max_row # 获取当前sheet的总行数
columns = sheet.max_column # 获取当前sheet的总列数
for row in range(1, rows + 1):
for column in range(1, columns + 1):
# 拼接出当前单元格的所在位置
if column < len(codes):
axis = codes[column] + str(x)
else:
axis = codes[int(column/len(codes))] + codes[column%len(codes)] + str(x)
val = merged_cells_value(sheet, axis, merged_cells) # 获取指定单元格里的内容