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
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
openpyxl引擎是用于读写Excel文件的一个Python库。它是使用python操作excel的库,具有许多功能,可以轻松地读取、写入和修改Excel文件。 openpyxl引擎适用于处理扩展名为.xlsx和.xlsm的文件。在获取到文件扩展名后,使用get_default_engine函数可以获取默认的处理引擎,其中对于.xlsx和.xlsm文件,使用的是openpyxl引擎。 如果要使用openpyxl库读写.xlsx文件,可以使用pandas库中的read_excel函数,并通过engine参数设置为'openpyxl'来指定使用openpyxl引擎进行读取。例如,可以使用以下代码读取.xlsx文件: ``` data = pd.read_excel('filepath.xlsx', engine='openpyxl') ``` 需要注意的是,.xlsx文件最大可支持1048576行和16384列。在使用pandas库读取.xlsx文件时,需要低版本xlrd支持(1.2.0)或使用openpyxl引擎。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [openpyxl.pdf](https://download.csdn.net/download/wolf_2017/12379607)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [pandas读取Excel核心源码剖析,面向过程仿openpyxl源码实现Excel数据加载](https://blog.csdn.net/as604049322/article/details/130096021)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [excel文件.xlsx操作 openpyxl 笔记](https://blog.csdn.net/bigfishfish/article/details/123091194)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值