写点什么

openpyxl 对 Excel 的基础操作

用户头像
Tango
关注
发布于: 2021 年 03 月 15 日

最近处理的数据有一部分需要写入 Excel 表,但是没有格式的表格看起来很难看,因此需要通过代码对 Excel 进行一定的修改。

openpyxl 不支持对 xls 文件的处理,且对原文件的样式保存非常不友好,如果你有保存原文件样式要求的话,建议使用 xlwings 替代 openpyxl

from openpyxl import load_workbookfrom openpyxl import Workbook
# =============== 第一部分,创建并写入数据 =====================# 创建一个test.xlsx表,并写入数据# wb = Workbook()# ws = wb.active# for row in range(1,4):# ws.append([row*10+1,row*10+2,row*10+3])# wb.save('data/test.xlsx')

# 导入一个已存在的test.xlsxload_wb = load_workbook('data/test.xlsx')# 打开活动的工作薄的活动工作簿,或者指定的工作簿load_ws = load_wb.active# 获取最后一行last_row = len(load_ws["C"]) # 获取C列为标准的最后一行
# load_ws = load_wb.get_sheet_by_name("Sheet")
# ============== 第二部分,插入、删除行和列 ========================# 1-①在第二行前插入1行# load_ws.insert_rows(2,1)# 1-②从第二行开始删除1行# load_ws.delete_rows(2,1)# 2-①在第二列前插入2列# load_ws.insert_cols(2,2)# 2-②从第二列开始删除1列# load_ws.delete_cols(2,1)
# 获取总行数(存在数据)# load_wb.save('data/test.xlsx')# rows = load_ws.max_row# cols = load_ws.max_column# print('该表格总共有:'+str(rows)+' 行')# print('该表格总共有:'+str(cols)+' 列')# exit()
# ============== 第三部分,获取单元格的值 ========================# 获第三行第一列的值,两种方法都行# 方法一,根据单元格名称获取# v = load_ws['A3'].value# 方法二,根据横纵坐标值来获取# v = load_ws.cell(3,1).value# print(v)# 获取全部的单元格# rows = load_ws.rows# for row in rows:# for cell in row:# if(cell.value==21):# print(dir(cell))# #可用属性 col_idx、column、row、value# print(cell.col_idx)# print(cell.column)# print(cell.row)

# ============== 第三部分,修改指定单元格的值 ========================# load_ws['A2'] = 'xx'# load_wb.save('data/test.xlsx')# exit()
# ============== 第四部分,合并单元格 ========================# load_ws.merge_cells('A2:B2')# load_wb.save('data/test.xlsx')# exit()
# ============== 第五部分,设置样式(文字居左) ========================# from openpyxl.styles import Alignment# # 水平居右,垂直居中,自动换行# load_ws['A2'].alignment = Alignment(horizontal='right',vertical='center',wrap_text=True)# # 自动换行# load_ws['G1'].alignment = Alignment(wrap_text=True)## from openpyxl.styles import Font# # 设置字体为“宋体”,大小为11,bold为加粗,italic为斜体,strike为删除线,颜色为黑色# font = Font(u'宋体',size = 11,bold=True,italic=True,strike=True,color='000000')# load_ws['A1'].font = font
# from openpyxl.styles import PatternFill# # 设置背景色为 #1874CD# fill = PatternFill("solid", fgColor="1874CD")# load_ws['C3'].fill = fill
# 第2行行高load_ws.row_dimensions[2].height = 40# C列列宽load_ws.column_dimensions['C'].width = 30
load_wb.save('data/test.xlsx')exit()

# ============== 第六部分,其它 ========================# # 打印设置# load_ws.print_options.horizontalCentered = True# load_ws.print_options.verticalCentered = True# load_ws.print_area = 'A1:I5'# load_wb.save('data/test.xlsx')
from openpyxl.utils import get_column_letter, column_index_from_string# 根据列的数字返回字母print(get_column_letter(2)) # B# 根据字母返回列的数字print(column_index_from_string('D')) # 4
复制代码


发布于: 2021 年 03 月 15 日阅读数: 18
用户头像

Tango

关注

一个日语专业的程序猿。 2017.09.10 加入

【坐标】无锡 【元坐标】黑龙江/北极村 【软件技能】Java,C#,Python 【爱好】炉石传说 【B站】https://space.bilibili.com/397260706/ 【个人站】www.it-worker.club

评论

发布
暂无评论
openpyxl 对Excel的基础操作