在后台回复【阅读书籍】
即可获取python相关电子书~
Hi,我是山月。
之前给大家分享了openpyxl的基础教程:Python自动化办公:openpyxl教程(基础)。不知道大家学习的怎么样了。
今天给大家分享一下整理了一周的openpyxl进阶教程。
全文一共16000+字,包括了:批注、表格、条件格式、公式、筛选和排序、验证单元格、定义名称、分级显示、设置九个部分。
其中由于数据透视表和图表创建篇幅较长、难度较大,会在之后给他们两个分别写篇教程。
在这之前,必须重新把官网摆一次。官网+help函数+dir函数简直是学习的好帮手。
dir函数:新手到大师的进阶之路
官网:https://openpyxl.readthedocs.io/en/stable/
下面我们一起来看吧。
01
批注
from openpyxl.comments import Comment
Comment(text, author, height=79, width=144)
参数说明:
text # 批注的内容,必填
author # 批注的作者,必填。
height # 批注框高,默认79。
width # 批注框宽,默认144。
from openpyxl import Workbook
from openpyxl.comments import Comment
wb = Workbook()
ws = wb.active
ws["A1"] = '默认'
ws["B2"] = '批注'
ws["C3"] = '批注'
#在B2单元格设置批注
comment_B2 = Comment('这是默认的批注', '山月')
ws["B2"].comment = comment_B2
#在C3单元格设置批注
ws["C3"].comment = Comment('设置了高宽', '山月', height=50, width=80)
# 获取批注的信息
print(comment_B2.text) # 获取B2单元格批注的内容,结果--->>>这是默认的批注
print(comment_B2.author) # 获取B2单元格批注的作者,结果--->>>山月
wb.save('实例.xlsx')
效果:
02
表格
1)表格样式设置
name:样式名称
'''
可选项:
"TableStyleMedium1" - "TableStyleMedium28"
"TableStyleLight1" - "TableStyleLight21"
"TableStyleDark1" - "TableStyleDark11"
'''
showRowStripes=True:显示镶边行
showColumnStripes=True:显示镶边列
showFirstColumn=True:显示表格中第一列的特殊格式
showLastColumn=True:显示表格中最后一列的特殊格式
样式名称对应的样式:
2)实例
from openpyxl import Workbook
from openpyxl.worksheet.table import Table, TableStyleInfo
wb = Workbook()
ws = wb.active
data = [
["Fruit", "2011", "2012", "2013", "2014"],
['Apples', 10000, 5000, 8000, 6000],
['Pears', 2000, 3000, 4000, 5000],
['Bananas', 6000, 6000, 6500, 6000],
['Oranges', 500, 300, 200, 700],
]
# 在表中写入数据
for row in data:
ws.append(row)
tab = Table(displayName="Table1", ref="A1:E5") # 表名称和数据区域
# tab.headerRowCount = False # 省略标题行。如果不省略,标题行数据默认是第一行,注意标题行数据必须得是字符串,否则会报错。
# 设置表样式
style = TableStyleInfo(name="TableStyleMedium9", showFirstColumn=False,
showLastColumn=False, showRowStripes=False, showColumnStripes=False)
tab.tableStyleInfo = style
ws.add_table(tab) # 添加表
wb.save("实例.xlsx")
效果:
#获取所有表信息
ws.tables
#获取指定表信息
ws.tables["Table1"] #Table1为表名称
#遍历所有表信息
for table in ws.tables.values():
print(table)
#获取工作表中所有表的表名和范围
ws.tables.items()
#遍历表中表名
for table in ws.tables:
print(table)
#删除表
del ws.tables["Table1"] #Table1为表名称
#返回工作表中的表数
len(ws.tables)
03
条件格式
Excel支持三种不同类型的条件格式:内置、标准和自定义:
内置的条件格式将特定的规则与预定义的样式相结合;
标准条件格式将特定规则与自定义格式相结合;
自定义格式将自定义的规则与自定义格式相结合。
1)创建使用规则
2)使用规则
worksheet.conditional_formatting.add(range_string, cfRule)
参数说明:
range_string:应用条件格式的单元格区域
cfRule:要应用的条件格式规则
内置条件格式有:ColorScale(色阶),IconSet(图标集),DataBar(数据条)。
其中三种内置格式里的参数cfvo是一个由【openpyxl.formatting.rule.FormatObject】对象组成的序列(列表或元组)。
FormatObject对象的语法:
from openpyxl.formatting.rule import FormatObject
FormatObject(type, val=None, gte=None, extLst=None)
参数:
val:值,是个浮点型
type:可选项有:百分比(percent),最小值(min),百分点值(percentile),公式(formula),最大值(max),数字(num)
1、ColorScale
色阶作为一种直观的指示,可以帮助了解数据分布和数据变化。
有两种选择:
双色刻度:使用两种颜色的渐变来帮助您比较单元格区域。颜色的深浅表示值的高低。
三色刻度:使用三种颜色的渐变来帮助您比较单元格区域。颜色的深浅表示值的高、中、低。
1)语法
# 1)通过ColorScale创建ColorScale规则
from openpyxl.formatting.rule import ColorScale
ColorScale(cfvo=None, color=None) #创建色阶
# 2)通过ColorScaleRule创建使用ColorScale规则
from openpyxl.formatting.rule import ColorScaleRule
ColorScaleRule(start_type=None, start_value=None, start_color=None, mid_type=None, mid_value=None, mid_color=None, end_type=None, end_value=None, end_color=None)
2)实例
from openpyxl import Workbook
from openpyxl.formatting.rule import ColorScale, FormatObject
from openpyxl.formatting.rule import Rule
from openpyxl.styles import Color
wb = Workbook()
ws = wb.active
first = FormatObject(type='min')
last = FormatObject(type='max')
# 创建双色刻度
colors = [Color('EE1111'), Color('00AA00')]
cs2 = ColorScale(cfvo=[first, last], color=colors)
# 创建三色刻度
mid = FormatObject(type='num' , val=40)
colors.insert(1, Color('0000AA'))
cs3 = ColorScale(cfvo=[first, mid, last], color=colors)
#创建使用双色刻度的规则
rule = Rule(type='colorScale', colorScale=cs2)
ws.conditional_formatting.add('A1:A10', rule) #应用规则
#创建使用三色刻度的规则
rule = Rule(type='colorScale', colorScale=cs3)
ws.conditional_formatting.add('B1:B10', rule) #应用规则
wb.save("实例.xlsx")
等同于:
from openpyxl import Workbook
from openpyxl.formatting.rule import ColorScaleRule
wb = Workbook()
ws = wb.active
# 创建使用双色刻度
ws.conditional_formatting.add('A1:A10',
ColorScaleRule(start_type='min', start_color='EE1111',
end_type='max', end_color='00AA00')
)
# 创建使用三色刻度
ws.conditional_formatting.add('B1:B10',
ColorScaleRule(start_type='min', start_color='EE1111',
mid_type='num', mid_value=40, mid_color='0000AA',
end_type='max', end_color='00AA00')
)
wb.save("实例.xlsx")
效果:
2、IconSet
使用图标集可以对数据进行注释,并可以按阈值将数据分为三到五个类别。 每个图标代表一个值的范围。
例如,在三向箭头图标集中,绿色的上箭头代表较高值,黄色的横向箭头代表中间值,红色的下箭头代表较低值。
图标集名称:注意图标集名称前的数字是说这个图标集有几个图标,想设置含几个图标的图标集就得把数据分为几个类别。
1)语法
# 1)通过 IconSet创建IconSet 规则
from openpyxl.formatting.rule import IconSet
classopenpyxl.formatting.rule.IconSet(iconSet=None, showValue=None, percent=None, reverse=None, cfvo=None) #创建IconSet
'''
iconSet可选项:4Rating,3Symbols,3Symbols2,4ArrowsGray,5ArrowsGray,
5Arrows,3TrafficLights2,3ArrowsGray,3TrafficLights1,5Rating,
3Signs,3Flags,3Arrows,4RedToBlack,4TrafficLights,5Quarters,4Arrows
'''
# 2)通过IconSetRule创建使用IconSet规则
from openpyxl.formatting.rule import IconSetRule
IconSetRule(icon_style=None, type=None, values=None, showValue=None, percent=None, reverse=None)
2)实例
from openpyxl import Workbook
from openpyxl.formatting.rule import IconSet, FormatObject
from openpyxl.formatting.rule import Rule
wb = Workbook()
ws = wb.active
# 创建一个3图标的图标集
first = FormatObject(type='num', val=0)
second = FormatObject(type='num', val=33)
third = FormatObject(type='num', val=67)
iconset = IconSet(iconSet='3Arrows', cfvo=[first, second, third])
# 将图标集赋给规则
rule = Rule(type='iconSet', iconSet=iconset)
ws.conditional_formatting.add('A1:A10', rule) #应用规则
wb.save("实例.xlsx")
等同于:
from openpyxl import Workbook
from openpyxl.formatting.rule import IconSetRule
wb = Workbook()
ws = wb.active
# 创建+使用图标集
ws.conditional_formatting.add('A1:A10',
IconSetRule(icon_style='3Arrows', type='num', values=[0, 33, 67]))
wb.save("实例.xlsx")
效果:
3、DataBar
数据条可帮助查看某个单元格相对于其他单元格的值。
数据条的长度代表单元格中的值。 数据条越长,表示值越高,数据条越短,表示值越低。
1)语法
#通过DataBar创建DataBar规则
from openpyxl.formatting.rule import DataBar
DataBar(minLength=None, maxLength=None, showValue=None, cfvo=None, color=None)
#通过DataBarRule创建使用DataBar规则
from openpyxl.formatting.rule import DataBarRule
DataBarRule(start_type=None, start_value=None, end_type=None, end_value=None, color=None, showValue=None, minLength=None, maxLength=None)
2)实例
from openpyxl import Workbook
from openpyxl.formatting.rule import DataBar, FormatObject
from openpyxl.formatting.rule import Rule
wb = Workbook()
ws = wb.active
# 创建数据条
first = FormatObject(type='min')
second = FormatObject(type='max')
data_bar = DataBar(cfvo=[first, second], color="638EC6")
#将数据条赋给规则
rule = Rule(type='dataBar', dataBar=data_bar)
ws.conditional_formatting.add('A1:A10', rule) #应用规则
wb.save("实例.xlsx")
等同于:
from openpyxl import Workbook
from openpyxl.formatting.rule import DataBarRule
wb = Workbook()
ws = wb.active
#创建使用数据条
ws.conditional_formatting.add('A1:A10',
DataBarRule(start_type='min', end_type='max', color="638EC6"))
wb.save("实例.xlsx")
效果:
标准条件格式有:
Average:平均值
Percent:百分比
Unique or duplicate:唯一值或重复值
Value:值
Rank:排名
1、CellIsRule
基于单元格内容设置条件格式规则。
1)语法
from openpyxl.formatting.rule import CellIsRule
CellIsRule(operator=None, formula=None, stopIfTrue=None, font=None, border=None, fill=None)
2)实例
from openpyxl import Workbook
from openpyxl.styles import PatternFill
from openpyxl.formatting.rule import CellIsRule
wb = Workbook()
ws = wb.active
# 创建填充
redFill = PatternFill(start_color='EE1111',end_color='EE1111',fill_type='solid')
# 单元格小于C1的值的条件格式
ws.conditional_formatting.add('B2:B10',
CellIsRule(operator='lessThan', formula=['B$1'], stopIfTrue=True, fill=redFill))
# 单元格介于1-5之间的条件格式
ws.conditional_formatting.add('D2:D10',
CellIsRule(operator='between', formula=['1','5'], stopIfTrue=True, fill=redFill))
wb.save("实例.xlsx")
效果:
2、FormulaRule
基于公式设置条件格式规则。
1)语法
from openpyxl.formatting.rule import FormulaRule
FormulaRule(formula=None, stopIfTrue=None, font=None, border=None, fill=None)
2)实例
from openpyxl import Workbook
from openpyxl.styles import PatternFill
from openpyxl.formatting.rule import FormulaRule
wb = Workbook()
ws = wb.active
# 创建填充
redFill = PatternFill(start_color='EE1111',end_color='EE1111',fill_type='solid')
# B1为空白的条件格式
ws.conditional_formatting.add('B2:B10',
FormulaRule(formula=['ISBLANK(B$1)'], stopIfTrue=True, fill=redFill))
# D1=0的条件格式
ws.conditional_formatting.add('D2:D10',
FormulaRule(formula=['D$1=0'], fill=redFill))
wb.save("实例.xlsx")
效果:
3、DifferentialStyle
差异化样式设置。
1)语法
from openpyxl.styles.differential import DifferentialStyle
DifferentialStyle(font=None, numFmt=None, fill=None, alignment=None, border=None, protection=None, extLst=None)
2)实例
from openpyxl import Workbook
from openpyxl.formatting import Rule
from openpyxl.styles import PatternFill, Font
from openpyxl.styles.differential import DifferentialStyle
wb = Workbook()
ws = wb.active
# 创建字体、填充格式
red_text = Font(bold=True)
red_fill = PatternFill(bgColor="EE1111")
# 单元格包含文本【light】时的条件格式
dxf = DifferentialStyle(font=red_text, fill=red_fill)
rule = Rule(type="containsText", operator="containsText", text="light", dxf=dxf)
rule.formula = ['NOT(ISERROR(SEARCH("light",A1)))'] #如果单元格包含【light】值为True,反之,为False
ws.conditional_formatting.add('A1:F10', rule)
wb.save("实例.xlsx")
效果:
04
公式
查看openpyxl支持写的excel 函数公式:
from openpyxl import load_workbook
from openpyxl.utils import FORMULAE
print(FORMULAE)
结果:
1、Tokenizer
Excel工作表公式的标记器。将表示Excel公式的str字符串转换为“Token”对象序列。
1、语法
Tokenizer(formula)
说明:
formula:要标记化的公式,字符串格式。
标记器定义了一个方法【._parse()】将公式解析为标记,然后可以通过【.items】访问这些标记。
【.items】返回的是一个Token对象序列,Token对象有三个属性:
1).value:产生此标记的公式的子字符串。
2).type: 表示的标记类型, 可以是:
3).subtype:上面的一些标记类型使用子类型来提供关于标记的额外信息。可能的子类型有:
2、实例
from openpyxl.formula import Tokenizer
tok = Tokenizer("=IF($A$1,'then True',MAX(DEFAULT_VAL,'Sheet 2'!B1))")
print("\n".join("%12s%11s%9s" % (t.value, t.type, t.subtype) for t in tok.items))
结果:
将公式从一个位置转移到另一个位置
1、语法
Translator(formula, origin)
'''
定义的方法:
get_tokens(self)
translate_formula(self, dest=None, row_delta=0, col_delta=0)
'''
2、实例
from openpyxl import Workbook
from openpyxl.formula.translate import Translator
wb = Workbook()
ws = wb.active
ws['F2'] = "=SUM(B2:E2)"
# 将一列公式向右移动
ws['G2'] = Translator("=SUM(B2:E2)", origin="F2").translate_formula("G2")
move_results = ws['G2'].value
print(move_results) # --->>> =SUM(C2:F2)
05
筛选和排序
注意:只会将相关指令添加到文件中,不会实际过滤或排序。
1、语法
AutoFilter(ref=None, filterColumn=(), sortState=None, extLst=None)
'''
ref (string):筛选排序的 单元格范围
方法:
add_filter_column(col_id, vals, blank=False)
#为指定列添加筛选
col_id (int) : 0表示第一列
vals (str[]): 要显示的值列表
blank (bool) : 如果为 True,则显示具有空白单元格的行(默认 =``False``)
add_sort_condition(ref, descending=False)
#为指定的单元格范围添加排序条件
ref (string): 单元格范围
descending (bool): 是否降序排序,默认为False,也就是升序排序。True:降序排序
'''
2、实例
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
data = [
["Fruit", "Quantity"],
["Kiwi", 3],
["Grape", 15],
["Apple", 3],
["Peach", 3],
["Pomegranate", 3],
["Pear", 3],
["Tangerine", 3],
["Blueberry", 3],
["Mango", 3],
["Watermelon", 3],
["Blackberry", 3],
["Orange", 3],
["Raspberry", 3],
["Banana", 3]
]
# 按行写入数据
for r in data:
ws.append(r)
# 设置筛选排序的单元格区域
ws.auto_filter.ref = "A1:B15"
# 筛选第1列里值是Kiwi/Apple/Mango的
ws.auto_filter.add_filter_column(0, ["Kiwi", "Apple", "Mango"])
# 按B列的值升序排序
ws.auto_filter.add_sort_condition("B2:B15")
wb.save("实例.xlsx")
效果:
06
验证单元格
1、语法
2、实例
from openpyxl import Workbook
from openpyxl.worksheet.datavalidation import DataValidation
# 创建我们将使用的工作簿和工作表
wb = Workbook()
ws = wb.active
# 使用列表验证创建数据验证对象
dv = DataValidation(type="list", formula1='"Dog,Cat,Bat"', allow_blank=True)
# 出错警告
dv.error ='您的条目不在列表中' # 错误信息
dv.errorTitle = '无效条目' # 标题
# 输入信息
dv.prompt = '请从列表中选择一个值' # 输入信息
dv.promptTitle = '值输入' # 标题
# 将数据验证对象添加到工作表中
ws.add_data_validation(dv)
# 创建一个单元格,并将它们添加到数据验证对象中
c1 = ws["A1"]
c1.value = "Dog"
dv.add(c1)
# 将验证应用于一系列单元格
dv.add('B1:B1048576') # 这与整个B列相同
wb.save('实例.xlsx')
效果:
3、其他验证示例
任意整数:
dv = DataValidation(type="whole")
任何大于 100 的整数:
dv = DataValidation(type="whole",
operator="greaterThan",
formula1=100)
任何十进制数:
dv = DataValidation(type="decimal")
0 到 1 之间的任何十进制数:
dv = DataValidation(type="decimal",
operator="between",
formula1=0,
formula2=1)
任何日期:
dv = DataValidation(type="date")
任何时间:
dv = DataValidation(type="time")
最多 15 个字符的任意字符串:
dv = DataValidation(type="textLength",
operator="lessThanOrEqual"),
formula1=15)
单元格范围验证:
from openpyxl.utils import quote_sheetname
dv = DataValidation(type="list",
formula1="{0}!$B$1:$B$10".format(quote_sheetname(sheetname))
)
自定义规则:
dv = DataValidation(type="custom",
formula1"=SOMEFORMULA")
07
定义名称
可为单元格区域、函数、常量或表格定义名称。
一旦采用了在工作簿中使用名称的做法,便可轻松地更新、审核和管理这些名称。
1、语法
2、实例
import openpyxl
from openpyxl.workbook.defined_name import DefinedName
wb = openpyxl.Workbook()
ws=wb.active
ws["A1"] = 5 # 在A1写入5
# 为A1单元格创建名称:test
sheetid = wb.sheetnames.index('Sheet')
test_definedname = DefinedName('test', attr_text='Sheet!$A$1', localSheetId=sheetid)
wb.defined_names.append(test_definedname)
ws["C3"] = "=test" #使用名称test
# 获取名称信息
print(wb.defined_names.localnames(sheetid)) # 返回--->> ['test']
print(wb.defined_names.get('test', sheetid).attr_text) # 返回--->> Sheet!$A$1
definedname_results = test_definedname.destinations # test_definedname.destinations:返回(工作表标题、单元格范围)元组的生成器
print(list(definedname_results)) # 返回--->> [('Sheet', '$A$1')]
wb.save('实例.xlsx')
效果:
08
分级显示
可创建行的分级显示、列的分级显示或者行和列的分级显示。
1、语法
# 行的分级显示
worksheet.row_dimensions
# 列的分级显示
worksheet.column_dimensions
# 行/列分级显示的方法
group(start, end=None, outline_level=1, hidden=False)
'''
start :要分组的第一行或第一列(强制)
end :要分组的最后一行或最后一列(可选,默认开始)
outline_level :大纲级别
hidden :该组是否应该隐藏在打开的工作簿上
'''
2、实例
import openpyxl
wb = openpyxl.Workbook()
ws = wb.active
ws.column_dimensions.group('A','D', hidden=True) # 列分组
ws.row_dimensions.group(1,10, hidden=True) #行分组
wb.save('实例.xlsx')
效果:
09
设置
ws.freeze_panes = 'B1' # 冻结首列
ws.freeze_panes = 'A2' # 冻结首行
ws.freeze_panes = 'B2' # 冻结首行与首列
ws.page_setup.orientation = 'landscape' # 纸张方向:'landscape:横向', 'default:默认', 'portrait:纵向'
ws.page_setup.paperSize = ws.PAPERSIZE_A3 # 纸张大小设置成A3
'''
设置成A3大小也可以这样:ws.page_setup.paperSize ='8'
其它纸张大小设置选项:
信纸:ws.PAPERSIZE_LETTER/'1'
Tabloid:ws.PAPERSIZE_TABLOID / '3'
法律专用纸:ws.PAPERSIZE_LEGAL / '5'
Statement:ws.PAPERSIZE_STATEMENT/'6'
Executive:ws.PAPERSIZE_EXECUTIVE / '7'
A3:ws.PAPERSIZE_A3/'8'
A4:ws.PAPERSIZE_A4/'9'
A5:ws.PAPERSIZE_A5 / '11'
B4(JIS):'12'
B5(JIS):'13'
'''
ws.page_setup.fitToHeight = 2 # 缩放的页高
ws.page_setup.fitToWidth = 2 # 缩放的页宽
ws.page_setup.draft = True # 草稿品质,默认False。设置:True
ws.page_setup.scale = 70 # 设置缩放比例,比如值是70则为缩放70%
ws.page_setup.blackAndWhite = True # 设置单色打印,默认False,设置True
ws.page_setup.pageOrder= 'overThenDown' # 打印顺序设置,可设置项:'overThenDown(先行后列)', 'downThenOver(先列后行)'
ws.page_setup.cellComments = 'asDisplayed' # 设置批注,默认无。可设置值: 'asDisplayed:如同工作表中的显示', 'atEnd:工作表末尾'
ws.page_setup.useFirstPageNumber = True # 启动起始页码设置
ws.page_setup.firstPageNumber = 2 # 起始页码设置为2.注意首先要设置useFirstPageNumber为True
ws.page_setup.usePrinterDefaults = True # 启动错误单元格打印
ws.page_setup.errors = 'dash' # 错误单元格打印的选项:'NA'(#N/A), 'dash'(--), 'displayed'(显示值), 'blank'(空白)。要先启动错误单元格打印
ws.page_setup.fitToPage = True # 缩放设置为【调整为】
ws.page_setup.fitToHeight = 2 # 缩放的页高,缩放要先设置为【调整为】
ws.page_setup.fitToWidth = 2 # 缩放的页宽,缩放要先设置为【调整为】
ws.sheet_view.showGridLines = False #隐藏网格线
ws.sheet_view.showRowColHeaders= False # 隐藏行号、列标
ws.sheet_view.zoomScale = 80 # 缩放比例设置
ws.sheet_view.zoomScaleSheetLayoutView = 70 # 分页预览缩放比例,范围:10-400
ws.sheet_view.zoomScalePageLayoutView = 90 # 页面布局缩放比例
ws.sheet_view.rightToLeft = True # 设置从右向左
ws.sheet_view.showFormulas = True # 显示公式
ws.sheet_view.showZeros = False # 0值不显示
ws.sheet_view.topLeftCell = 'B3' # 左上角单元格设置。注意,不会删除之前的单元格
ws.sheet_view.showRuler = False # 页眉布局视图下不显示标尺,默认显示
ws.sheet_view.view = 'normal' # 视图设置。默认普通视图:'normal':普通视图, 'pageBreakPreview':分页预览视图, 'pageLayout':页眉布局视图
ws.sheet_view.windowProtection = True # 是否设置窗口保护,默认不设置。设置了之后【视图】选项卡里的新建/冻结/拆分窗口不能使用
ws.sheet_view.showOutlineSymbols = True # 显示大纲符号
ws.sheet_view.defaultGridColor = False # 网格线颜色是否设置成默认
ws.sheet_view.colorId = 5 # 网格线颜色设置,范围:0-63。如果要生效,得把默认网格线颜色设置成False
#拆分设置
ws.sheet_view.pane = 【openpyxl.worksheet.views.Pane】对象
'''
Pane对象语法:
from openpyxl.worksheet.views import Pane
Pane(xSplit=None, ySplit=None, topLeftCell=None, activePane='topLeft', state='split')
'''
#居中方式设置
ws.print_options.horizontalCentered = True # 设置水平居中方式
ws.print_options.verticalCentered = True # 设置垂直居中方式
#页眉和页脚设置,比如设置左页眉
ws.oddHeader.left.text = "Page &[Page] of &N" # 格式为:Page &[页码] of &[总页数]
ws.oddHeader.left.size = 14 # 14字号
ws.oddHeader.left.font = "Tahoma,Bold" # 字体Tahoma,加粗
ws.oddHeader.left.color = "CC3366" # 颜色设置
#打印标题
ws.print_title_cols = 'A:B' # 左端标题列
ws.print_title_rows = '1:1' # 顶端标题行
#打印区域
ws.print_area ="A1:F10"
在XLSX文件中,日期和时间可以用两种不同的方式来存储:ISO 8601格式的字符串、单个数字。
1、ISO 8601格式
如果你想在openpyxl 写入文件时以 ISO 8601 格式存储日期和时间,可以将工作簿的 iso_dates 标志设置为 True。
workbook.iso_dates = True
2、1900 和 1904 日期系统
XLSX 文件的日期系统决定了如何解释单个数字表示的日期和时间。
XLSX 文件有两种日期系统:
在 1900 日期系统(默认)中,参考日期(编号为 1)是 1900-01-01。
在 1904 日期系统中,参考日期(编号为 0)是 1904-01-01。
获得/更改工作簿的日期系统:
import openpyxl
wb = openpyxl.Workbook()
if wb.epoch == openpyxl.utils.datetime.CALENDAR_WINDOWS_1900:
print("工作薄默认使用的是 1900 日期系统")
# 将其设置为1904日期系统:
wb.epoch = openpyxl.utils.datetime.CALENDAR_MAC_1904
完结撒花
祝大家学习愉快。如果觉得对你有所帮助的话,希望能分享给更多人。
已经到底啦~(≧▽≦*)/~
Python自动化办公:openpyxl教程(基础)
2022-01-18
如何用Python做日历?
2022-01-10
Python实战:个人贷款计算器
2022-01-14
年会将近?赶紧学学如何用Python做个抽奖界面
2022-01-02
您的“点赞”、“在看”和 “分享”是我们产出的动力。