IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> openpyxl 操作Excel笔记 -> 正文阅读

[开发测试]openpyxl 操作Excel笔记

一、常用库引入

from openpyxl import Workbook,load_workbook
from openpyxl.styles import *

import warnings
warnings.filterwarnings('ignore')

二、基本操作

1.工作簿操作

1.创建新的工作簿
wb1 = Workbook()

2.加载已存在的工作簿
wb = load_workbook('./000.xlsx')
# openpyxl只能处理 .xlsx 合适的表格

3.保存工作簿
wb.save()
wb.save("name.xlsx")  # 另存为

4.关闭工作簿
wb.close()

2.工作表操作

1.建新的工作表
ws1 = wb.create_sheet('111')

2.当前工作表
ws2 = wb.active

3.查看已存在的全部工作表
wb.sheetnames
wb.sheetnames[0]	# 查看第一个工作表名称

4.指定工作表
ws = wb['sheet_name']
ws = wb[wb.sheetnames[0]]
ws = wb.get_sheet_by_name("sheet_name")

5.表的属性
ws.max_col		最大列数
ws.max_row		最大列数
ws.values		获取的内容是从 “A1” 到 “最大行最大列”
ws.rows			按行
ws.iter_rows()
ws.columns		按列
ws.iter_col() 
rows 和 iter_row()的区别在于,iter_row()可以指定区域,rows是全部单元格

6.操作
ws.delete_cols(1)		删除第一列
ws.delete_rows(3)		删除第三行
ws.merge_cells("A1:B1")		合并单元格
ws.merge_cells(start_column=3,end_column=6,start_row=2,end_row=3)
ws.merged_cells	   已存在的合并单元格(合并后的单元格,只会保留最上角的值,其他单元格的值全部为空(None))
ws.auto_filter.ref = "A:B"	过滤和排序
ws.auto_filter.add_filter_column(0, ['ASC','DWS'])	# 给指定列添加过滤条件
ws.auto_filter.add_sort_condition("B2:B15")


7.引入pandas
import pandas as pd
df = pd.DataFrame(ws.values)

3.单元格操作

1.选择单个单元格
ws['A1']
ws.cell(1,1)    # 先行后列,都是索引下标

2.单元格属性
cell = ws['A1']
cell.col_idx	索引idx(列)
cell.column  	列索引
cell.row		行索引
cell.column_letter	单元格列名
cell.coordinate		单元格的坐标
cell.data_type		日期时间
cell.encoding		单元格编码格式,默认 utf-8
cell.has_style		是否有样式(默认样式是 Normal,如果是默认样式,返回False)
cell.style			单元格样式
cell.style_id		单元格样式id
cell.font			单元格的样式属性
cell.alignment
cell.border
cell.fill
cell.number_format
cell.hyperlink


3.单元格值
ws['A1'].value	单个单元格值
ws.cell(1,1).value
ws['A']			一列 字符串
ws[1]			一行,数字
ws['A:B']		多行
ws[5:10]
ws['A3:B9']		指定区域单元格

for i in ws[1]:      打印一行所有值
    print(i.value)

4.单元格赋值
ws['A1'] = 20
ws.cell(2,2).value = 30
ws.append([1,2,3])		增加一行

5.单元格遍历
方法一:
for i in ws.values:
    print(i)
方法二:  
for i in ws.rows:
    for j in i:
        print(j.value)
方法三:
for i in ws.iter_rows(min_col=1,max_col=3,min_row=1,max_row=10):
    print(i)

三、样式

1.颜色

Color(index=0) # 根据索引进行填充
# 
Color(rgb='00000000') # 根据rgb值进行填充
# index 
COLOR_INDEX = (
    '00000000', '00FFFFFF', '00FF0000', '0000FF00', '000000FF', #0-4
    '00FFFF00', '00FF00FF', '0000FFFF', '00000000', '00FFFFFF', #5-9
    '00FF0000', '0000FF00', '000000FF', '00FFFF00', '00FF00FF', #10-14
    '0000FFFF', '00800000', '00008000', '00000080', '00808000', #15-19
    '00800080', '00008080', '00C0C0C0', '00808080', '009999FF', #20-24
    '00993366', '00FFFFCC', '00CCFFFF', '00660066', '00FF8080', #25-29
    '000066CC', '00CCCCFF', '00000080', '00FF00FF', '00FFFF00', #30-34
    '0000FFFF', '00800080', '00800000', '00008080', '000000FF', #35-39
    '0000CCFF', '00CCFFFF', '00CCFFCC', '00FFFF99', '0099CCFF', #40-44
    '00FF99CC', '00CC99FF', '00FFCC99', '003366FF', '0033CCCC', #45-49
    '0099CC00', '00FFCC00', '00FF9900', '00FF6600', '00666699', #50-54
    '00969696', '00003366', '00339966', '00003300', '00333300', #55-59
    '00993300', '00993366', '00333399', '00333333',  #60-63
)
BLACK = COLOR_INDEX[0]
WHITE = COLOR_INDEX[1]
RED = COLOR_INDEX[2]
DARKRED = COLOR_INDEX[8]
BLUE = COLOR_INDEX[4]
DARKBLUE = COLOR_INDEX[12]
GREEN = COLOR_INDEX[3]
DARKGREEN = COLOR_INDEX[9]
YELLOW = COLOR_INDEX[5]
DARKYELLOW = COLOR_INDEX[19]

2.字体

ws.cell(5,3).value='哈哈哈'
ws.cell(5,3).font = Font(name='仿宋',size=12,color=Color(index=0),b=True,i=True)

# size   sz  字体大小
# b bold  是否粗体
# i italic  是否斜体
# name family  字体样式

3.边框

Side(style='thin',color=Color(index=0))

# style可选项
style = ('dashDot','dashDotDot', 'dashed','dotted',
'double','hair', 'medium', 'mediumDashDot', 'mediumDashDotDot',
'mediumDashed', 'slantDashDot', 'thick', 'thin')
#  'medium' 中粗
#  'thin'  细
#  'thick'  粗
#  'dashed'  虚线
#  'dotted'  点线
Border(left=Side(),
      right=Side(),
      top=Side(),
      bottom=Side())
<openpyxl.styles.borders.Border object>
Parameters:
outline=True, diagonalUp=False, diagonalDown=False, start=None, end=None, left=<openpyxl.styles.borders.Side object>
Parameters:
style=None, color=None, right=<openpyxl.styles.borders.Side object>
Parameters:
style=None, color=None, top=<openpyxl.styles.borders.Side object>
Parameters:
style=None, color=None, bottom=<openpyxl.styles.borders.Side object>
Parameters:
style=None, color=None, diagonal=<openpyxl.styles.borders.Side object>
Parameters:
style=None, color=None, vertical=None, horizontal=None

4.填充

PatternFill(patternType='solid',fgColor=Color(), bgColor=Color())
# fgColor   前景色
# bgColor   后景色
# 参数可选项
patternType = {'darkDown', 'darkUp', 'lightDown', 'darkGrid', 'lightVertical', 
               'solid', 'gray0625', 'darkHorizontal', 'lightGrid', 'lightTrellis', 
               'mediumGray', 'gray125', 'darkGray', 'lightGray', 'lightUp', 
               'lightHorizontal', 'darkTrellis', 'darkVertical'}

ws.cell(3,3).fill = PatternFill()

5.对齐

Alignment(horizontal='fill',vertical='center')

# 参数可选项
horizontal = {'fill', 'distributed', 'centerContinuous', 'right',
              'justify', 'center', 'left', 'general'}

vertical = {'distributed', 'justify', 'center', 'bottom', 'top'}

ws.cell(3,3).alignment= Alignment()

6.数字显示样式

wb.guess_types = True		设置工作薄自动识别单元格样式

7.链接

1.Excel的链接公式
ws['C5'].value = '=HYPERLINK("#Sheet!B2","名称")'

2.hyperlink参数
from openpyxl.worksheet.hyperlink import Hyperlink
ws['C6'].hyperlink = Hyperlink(ref='',location='Sheet!H5',target='')
ws['C6'].value = '这是链接'
# 参数说明
	target : 目标文件
	location :目标单元格 工作表名 + ! + 单元格名

3.如果需要显示蓝色字体和下划线,需要设置字体
link = NamedStyle(name='link',font=Font(color=colors.BLUE,underline='single'))
ws['C6'].style = link

8.行高 列宽

row =ws.row_dimensions[1]
row.height = 15

col = ws.column_dimensions['E']
col.width = 10
  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章           查看所有文章
加:2021-09-03 12:13:08  更:2021-09-03 12:16:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 2:10:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码