#!/usr/bin/env python
# coding=utf-8
# https://blog.csdn.net/baili_sinan/article/details/78054037 python 操作Excel openpyxl的使用
from openpyxl import Workbook
from openpyxl.styles import Font, Alignment
from openpyxl.styles import PatternFill
wb = Workbook() # Create a workbook
# 需要获得特定的sheet,需要使用的方法是:
ws3 = wb['Sheet2']#通过list传入名字的方式 或者以下方法
# wb.get_sheet_by_name(title:str)#title为想要获取的sheet_name
print('----------------插入表操作--------------------')
ws1 = wb.create_sheet('第一个sheet表',index=0) # 插入新的工作表,放在0位置
ws2 = wb.create_sheet('最后一个工作表')# 默认插在最后
print('----------------查看表操作--------------------')
ws = wb.active #获得这个book的第一个sheet表名
print(ws)
print(wb.worksheets) # 打印这个book里面的所有工作表
print(wb.worksheets[1]) # 打印这个book里面的第二个工作表
print(wb.sheetnames) # 查看所有的sheet表,结果是列表形式,也可以用遍历:
for sheet in wb:
print(sheet.title) # 相当于遍历上面wb.sheetnames的列表
print('----------------修改表操作--------------------')
ws.title = '修改第一个表名' # 因为 ws = wb.active获取的是第一个表名,所以修改的就是第一个
wb.worksheets[1].title = '修改索引为1的表名'
wb['最后一个工作表'].title = '修改名为最后一个工作表的表名' # 修改名为‘最后一个工作表’的表名字
print('----------------单元格、字体格式操作--------------------')
d = ws.cell(row=1, column=1)
d.value = '单元格赋值'
# 单元格填充颜色,fill_type纯色填充
# fgColor或start_color前景色,或起始颜色;bgColor或end_color背景色,或结束颜色
d.fill = PatternFill(start_color='00ff00', fill_type="solid")
d.font = Font(name='微软雅黑', size=14, bold=True) # bold=True加粗
# 第一行第一列单元格内容水平居中和垂直居中
d.alignment = Alignment(horizontal='center', vertical='center')
# 设置行高
ws.row_dimensions[1].height = 20
# 设置A列宽度,这样只能设置一列宽度
# ws.column_dimensions['A'].width = 10
# 字典遍历一起设置列宽
dic = {'A': '22', 'B': '13', 'C': '60', 'D': '27'} # 如果表头数据增减,这里面也要相应修改
for i, j in dic.items():
ws.column_dimensions[i].width = j # 列宽
# 冻结首行
ws.freeze_panes = 'A2'
# 设置第一行第七列单元格格式为日期格式
ws.cell(row=1, column=7).number_format = 'yyyy/mm/dd'
print('----------------copy表操作--------------------')
copy_sheet = wb.copy_worksheet(wb.active) # copy第一个表
copy_sheet2 = wb.copy_worksheet(wb.worksheets[1]) # copy索引1位置的表
copy_sheet3 = wb.copy_worksheet(wb['最后一个工作表']) # copy名为‘最后一个工作表’的表
print('----------------单元格内容操作--------------------')
A4 = ws['A4'] # 因为 ws = wb.active获取的是第一个表名,所以直接访问第一个表的A4单元格,返回A4单元格,或者是创建一个原本不存在的单元格
A4 = 'A4内容'# 对A4单元格内容修改
d = ws.cell(row = 4,column=2,value = 10) #修改4行2列(也就是B4)的值为10
data=['姓名','杰克','里斯','安妮']
for i in range(len(data)):
ws['A%d'%(i+1)]=data[i] # 写入第一个工作表A列数据
for j in range(len(data)):
wb.worksheets[1]['A%d'%(i+1)] = data[i] # 写入索引为1的工作表的A列数据
print('----------------删除表操作--------------------')
wb.remove(wb.worksheets[0]) # 删除索引为0的sheet表
wb.remove(wb['最后一个工作表']) # 删除名为‘最后一个工作表’的表
print('----------------保存工作簿操作--------------------')
wb.save('测试.xlsx') # 只有保存后里面修改的内容才可以找到
# 保存完文件后,可以通过如下方法查找文件路径
import os
print(os.path.abspath('测试.xlsx')) #查找打印某个文件的路径
ws_rows_len = ws.max_row # 最大行数
ws_columns_len = ws.max_column # 最大列数
python3中openpyxl的一些操作笔记
于 2018-06-29 13:22:33 首次发布