python3中openpyxl的一些操作笔记
- #!/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 # 最大列数