使用python的openpyxl模块操作excel

openpyxl(可读写excel表)专门处理Excel2007及以上版本产生的xlsx文件,xls和xlsx之间转换容易

openpyxl的安装

模块的引入

from openpyxl import Workbook
from openpyxl.styles import Color, Font, Alignment
from openpyxl.styles import Border, Side, Font
from openpyxl import load_workbook

模块的基本用法

 创建与保存

wb = Workbook()  # 创建一个新的excel
ws = wb.active  # 获得这个excel的第一个sheet表名
wb.save('xx.xlsx') # 保存excel,若是保存路径有同名文件则会覆盖只有保存后里面修改的内容才可以找到

 

 打开存在的excel

file_home = r"E:\demo.xlsx" # 文件的绝对路径
wb = load_workbook(file_home)
根据Sheet1这个sheet名字来获取该sheet
ws = wb['Sheet1']

 

对工作表的操作

print(wb.worksheets)  # 打印这个book里面的所有工作表
print(wb.worksheets[1])  # 打印这个book里面的第二个工作表
print(wb.sheetnames)  # 查看所有的sheet表,结果是列表形式,也可以用遍历:
ws = wb.active  # 获得这个book的第一个sheet表名
wb.remove(wb.worksheets[0])  # 删除索引为0的sheet表
wb.remove(wb['xxx'])  # 删除名为‘xxx’的表ws.title = '修改第一个表名'  # 因为 ws = wb.active获取的是第一个表名,所以修改的就是第一个
wb.worksheets[1].title = '修改索引为1的表名'
wb['xxx'].title = '修改名为最后一个工作表的表名' # 修改名为‘xxx’的表名字
ws1 = wb.create_sheet('新的sheet表', index=0) # 插入新的工作表,放在0位置
ws2 = wb.create_sheet('最后一个工作表') # 默认插在最后

 

对单元格的操作

file_home = r"E:\python-file\my_python\demo.xlsx"
wb = load_workbook(file_home)
ws = wb.active  # 获取第一个工作表
ws_rows_len = ws.max_row  # 最大行数
ws_columns_len = ws.max_column  # 最大列数
ws_rows = ws.rows  # 获取所有的行,得到的是可迭代的
ws_columns = ws.columns  # 获取所有的列,得到的是可迭代的
b4_1 = ws.cell(row=1, column=1)
b4_2 = ws['B4']
print(b4_1.value, b4_2.value)  # 获取单元格内容,用过value得到其值

 

修改单元格

file_home = r"E:\python-file\my_python\demo.xlsx"
wb = load_workbook(file_home)
ws = wb.active  # 获取第一个工作表
ws.merge_cells(range_string='A1:B3')  # 合并单元格A1:B3
ws["A1"] = "=SUM(B1:C1)"  # 通过公式计算产生写入的值
ws["A1"] = 'A1内容'  # 对A1单元格内容修改,若是对合并的单元格的值进行修改,只需修改合并的单元格中左上角的单元格的内容
ws.cell(row=4, column=2, value=10)  # 通过坐标,修改4行2列(也就是B4)的值为10
ws.row_dimensions[1].height = 34  # 设置行高
ws.column_dimensions['B'].width = 22  # 设置列宽
ws["A1"] = "=SUM(B1:C1)"  # 通过公式计算产生写入的值
ws['A35'].font = Font(name='微软雅黑', size=14, bold=True)  # 设置单元格字体,bold=True加粗
ws["A1"].alignment = Alignment(horizontal='center', vertical='center')  # 第一行第一列单元格内容水平居中和垂直居中,也可以选择左对齐或右对齐
ws['A35'].border = Border(left=Side(border_style=None,  color='FF000000'),
                          right=Side(border_style=None,  color='FF000000'),
                          top=Side(border_style=None,  color='FF000000'),
                          bottom=Side(border_style=1,  color='FF000000'),)
# 设置单元格上下左右边框, style属性:'dashDot','dashDotDot', 'dashed','dotted',
#                             'double','hair', 'medium', 'mediumDashDot', 'mediumDashDotDot',
#                             'mediumDashed', 'slantDashDot', 'thin', 'thick'为excel中的默认边框
# 对合并的单元格加边框时需要注意,不像赋值一样,而是需要将其中的所有的单元格(合并前)都加边框

 

posted @ 2018-09-10 11:56  YaoSir66  阅读(399)  评论(0编辑  收藏  举报