Python对Excel操作
简介
利用代码实现自动化办公,在Python对Excel操作的库当中,主要使用以下第三方库。
WIN | MAC | PY2 | PY3 | .xls | .xlsx | 读 | 写 | 修改 | |
---|---|---|---|---|---|---|---|---|---|
xlrd |
√ | √ | √ | √ | √ | √ | √ | × | × |
xlwt |
√ | √ | √ | √ | √ | × | × | √ | √ |
xlutils |
√ | √ | √ | √ | √ | × | × | × | √ |
xlwings |
√ | √ | √ | √ | √ | √ | √ | √ | √ |
openpyxl |
√ | × | √ | √ | × | √ | √ | √ | √ |
xlswriter |
√ | √ | √ | √ | × | √ | × | √ | × |
win32com |
√ | √ | √ | √ | √ | √ | √ | √ | √ |
DataNitro |
√ | × | √ | √ | √ | √ | - | - | - |
pandas |
√ | √ | √ | √ | √ | √ | √ | √ | × |
主要介绍xlrd
、xlwt
、xlutils
的结合使用,openpyxl
的使用,使用win32com
转换表格的后缀,pandas
对数据的操作。
xlrd、xlwt、xlutils结合使用
安装
在Python当中都使用pip
来安装第三方库,安装第三方库时一般使用国内的镜像,在使用pip
安装时使用-i
指定数据源。
常用的国内镜像源:
清华大学
:https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学
:https://pypi.mirrors.ustc.edu.cn/simple
豆瓣
:http://pypi.douban.com/simple/
阿里云
:http://mirrors.aliyun.com/pypi/simple/
华中科技大学
:http://pypi.hustunique.com/
山东理工大学
:http://pypi.sdutlinux.org/
百度
:https://simple.baidu.com/pypi/simple
网易云
:https://mirrors.163.com/pypi/simple
安装:
pip install xlrd -i https://pypi.douban.com/simple
pip install xlwt -i https://pypi.douban.com/simple
pip install xlitils -i https://pypi.douban.com/simple
在调用时首先需要对包导入
import xlrd
import xlwt
from xlutils.copy import copy
xlwt
使用
使用xlwt
写入到Excel
工作簿支持两种扩展名:.xls
和.xlsx
这两种扩展名代表两种不同的Excel
版本。xls
为 Excel 2003 及以前的版本扩展名,支持的最大行数为 65536, 最大列数为 256. 而xlsx
为 Excel 2007 及以后的版本扩展名,它的最大支持行数为 1048576, 最大支持列数为 16384。
xlwt
只能对表格进行写,不能进行读的操作。如果需要对已存在的表格进行操作的话,先利用xlrd进行对表格的读取,然后再通过xlutils.copy
对表格复制再利用xlwt
进行对表格操作。
import xlwt
# 新建工作簿
workBook = xlwt.WorkBook()
# 创建新的表格
workSheet = workBook.add_sheet('xxx') # xxx为表格的名称
创建新工作簿方法:
xlwt.Workbook(encoding='ascii', style_compression=0)
参数介绍:
encoding
:文件编码格式,默认为ascii,一般默认设置为utf-8;
style_compression
:是否压缩。
新建工作表:
add_sheet(sheetname, cell_overwrite_ok=False)
参数介绍:
sheetname
:工作表名称;
cell_overwrite_ok
:是否可以覆盖单元格,默认为False,如果想对同一单元格多次操作时要设置为True,否则会报错。
保存工作簿:
save(filename_or_stream)
参数介绍:
filename_or_stream
:文件路径或者文件流。
单元格的操作
单元格的写入
write(row,column,label='',style=<xlwt.Style.XFStyle object>)
参数介绍:
row
:要写入单元格的行,从0开始;
column
:要写入单元格的列,从0开始;
label
:要写入的数据,label可以省略;
style
:单元格的样式设置。
单元格的合并
merge(self, row1, row2, column1, column2, style=<xlwt.Style.XFStyle object>)
参数介绍:
row1
:合并单元格的起始行;
row2
:合并单元格的结束行;
column1
:合并单元格的起始列;
column2
:合并单元格的结束列;
style
:单元格的样式设置。
单元格的写入合并
write_merge(self, row1, row2, column1, column2, label="", style=<xlwt.Style.XFStyle object>)
参数介绍:
row1
:合并单元格的起始行;
row2
:合并单元格的结束行;
column1
:合并单元格的起始列;
column2
:合并单元格的结束列;
label
:要写入的数据,可为空;
style
:单元格的样式设置。
单元格冻结
首先需要将set_panes_frozen
设置为1,再来设定需要冻结的列或行。
# 设置冻结窗口
# 设置冻结为真
work_sheet.set_panes_frozen('1')
# 水平冻结
work_sheet.set_horz_split_pos(x) # 设定需要冻结的行
# 垂直冻结
work_sheet.set_vert_split_pos(x) # 设定需要冻结的列
样式设置
在xlwt
当中提供了一些对单元格样式设置的类,通过对类属性的设值,可以修改单元格当中的样式。如下表
Group |
Attributes |
---|---|
Number format |
Number format index (index to FORMAT record) |
Font |
Font index (index to FONT record) |
Alignment |
Horizontal and vertical alignment, text wrap, indentation, orientation/rotation, text direction |
Border |
Border line styles and colours |
Background |
Background area style and colours |
Protection |
Cell locked, formula hidden |
在设置这些对象之前,都需要先创建一个设置属性的对象
# 创建一个样式对象,初始化样式 style
style = xlwt.XFStyle()
设置单元格的宽高
首先需要选择工作表
import xlwt
workBook = xlwt.WorkBook() # 创建工作簿
workSheet = workBook.add_sheet('test') # 创建工作表
col = workSheet.col(0) # 选择第一列
# 列设置宽
col.wight = 256*20 # 256为衡量单位,20表示20个字符宽度
row = workSheet.row(0) # 选择第一行
test_style = xlwt.easyxf('font:height 720') # 设置行高
row.set_style(test_style) # 对第一列设置行高
设置单元格的数据类型
使用num_format_str
来设置数据的格式。
首先是需要先初始化样式,再对样式对象设置值。
style.num_format_str = "XXX"
其中XXX
为需要设置的数字格式,一下为常用的数据格式:
类型 | 数据格式 |
---|---|
general |
常规 |
0 |
整数 |
0.00 |
小数点后两位 |
#,##0 |
三分位整型 |
#,##0.00 |
三分位小数点后两位 |
"$"#,##0_);("$"#,##0) |
三分位整型 |
"$"#,##0_);[Red]("$"#,##0) |
三分位小数点后两位 |
"$"#,##0.00_);("$"#,##0.00) |
$+三分位(取小数点后两位) |
"$"#,##0.00_);[Red]("$"#,##0.00) |
$+三分位(取小数点后两位) |
0% |
百分数 |
0.00% |
百分数 |
0.00E+00 |
科学计数法(取小数点后两位) |
# ?/? |
几有几分之几 |
# ??/?? |
几有几分之几 |
M/D/YY |
月/日/年 |
D-MMM-YY |
日-月英文简写-年 |
D-MMM |
日-月英文简写 |
MMM-YY |
月英文简写-年 |
h:mm AM/PM |
时:分 早上/下午 |
h:mm:ss AM/PM |
时:分:秒 早上/下午 |
h:mm |
时:分 |
h:mm:ss |
时:分:秒 |
M/D/YY h:mm |
月/日/年 时:分 |
_(#,##0_);(#,##0) |
三分位(取证) |
_(#,##0_);[Red](#,##0) |
三分位(取证) |
_(#,##0.00_);(#,##0.00) |
三分位(取小数点后两位) |
_(#,##0.00_);[Red](#,##0.00) |
三分位(取小数点后两位) |
_("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_) |
$+三分位(取证) |
_(* #,##0_);_(* (#,##0);_(* "-"_);_(@_) |
三分位(取证) |
_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_) |
$+三分位(取小数点后两位) |
_(* #,##0.00_);_(* (#,##0.00);_(* "-"??_);_(@_) |
三分位(取小数点后两位) |
mm:ss |
分:秒 |
[h]:mm:ss |
时:分:秒 |
mm:ss.0 |
分:秒 |
##0.0E+0 |
科学计数法(取整) |
@ |
科学计数法 |
设置单元格背景
设置单元格的填充色,首先还是需要初始样式,后再设置填充颜色的样式。
# 设置背景颜色
pattern = xlwt.Pattern()
# 设置背景颜色的模式
pattern.pattern = xlwt.Pattern.SOLID_PATTERN
# 背景颜色
pattern.pattern_fore_colour = x
其中x位颜色的index,对应位下图色卡。
设置背景颜色的模式有两种: pattern solid
和fore_colour ice_blue
简单来说第一种是只设置一种颜色,第二章为设置颜色为渐变模式。
设置字体格式
设置字体格式同样也需要初始化样式,然后创建字体样式。
font = xlwt.Font()
font.name = 'xxx' # 设置字体(宋体、仿宋。。。)
font.colour_index = x # 根据色卡设置字体颜色
font.height = 400 # 字体大小
其中还有其他对字体格式的设置:
对象 | 描述 |
---|---|
height |
设置字体大小。默认字号:10(200也就是20*10,其中20为衡量单位,10为字号)。 |
italic |
是否设置斜体。默认不设置:False;斜体:True |
struck_out |
是否设置删除线。默认不设置:False,删除线:True |
outline |
是否设置轮廓,默认不设置:False,添加轮廓:True。讲真,这个设没设置区别不大。 |
shadow |
是否设置阴影,默认正常:False,添加阴影:True。 |
colour_index |
设置字体颜色。默认:32767(0x7FFF) |
bold |
是否设置加粗。默认不设置:False,加粗:True。 |
weight |
设置笔画宽度。默认400,可以设置成600看看区别。 |
escapement |
是否设置为上下标。默认正常(0),上标(1),下标(2)。 |
underline |
是否设置下划线。默认不带下划线(0),单下划线(1),双下划线(2),会计用单下划线(3),会计用双下划线(4) |
family |
设置字体集。默认0 |
charset |
设置字符集。默认1,取值0-255。 |
name |
设置字体名称。默认字体:Arial |
位置设置
设置位置,可以设置的选项为以下选项,首先需要设置初始化样式,再设置样式。
alignment = xlwt.Alignment() # 创建一个对齐格式
对象 | 描述 |
---|---|
horz |
设置水平对齐方式,默认0。常规(0);左对齐(1); 居中(2); 右对齐(3);填充(4);两端对齐(5);跨列居中(6);分散对齐(7)。 |
vert |
设置垂直对齐方式,默认2。顶端对齐(0); 垂直居中(1); 底端对齐(2);两端对齐(3);分散对齐(4)。 |
dire |
设置文字方向,默认0。根据内容(0),总是从左到右(1),总是从右到左(2) |
orie |
默认为0 |
rota |
设置旋转方向,默认为0,范围:0-255 |
wrap |
是否设置自动换行,默认不自动换行:0。自动换行:1 |
shri |
是否设置缩小字体填充,也就是根据单元格缩小字体,默认不设置:0。设置:1 |
inde |
默认为0 |
merg |
默认为0 |
边框设置
设置表格当中的边框,首先初始化,再创建需要设置的单元格边框对象。
borders = xlwt.Borders()
若需要设置不同的可创建多个单元格表格边框对象,对不同的对象设置不同的值就可达到效果。
可以设置对象值有以下:
对象 | 描述 |
---|---|
left |
设置左边框样式,默认为不设置边框(0x00) |
right |
设置右边框样式,默认为不设置边框(0x00) |
top |
设置上边框样式,默认为不设置边框(0x00x00) |
bottom |
设置下边框样式,默认为不设置边框(0x00) |
diag |
设置对角线样式,要先设置显示对角线才能设置,默认为不设置对角线(0x00) |
left_colour |
设置左边框颜色,默认为64 |
right_colour |
设置右边框颜色,默认为64 |
top_colour |
设置上边框颜色,默认为64 |
bottom_colour |
设置下边框颜色,默认为64 |
diag_colour |
设置对角线颜色,要先设置显示对角线才能设置,默认为64 |
need_diag1 |
设置是否显示左上-右下对角线,默认不显(示0:NO_NEED_DIAG1),显示(1:NEED_DIAG1) |
need_diag2 |
设置是否显示左下-右上对角线,默认不显示(0:NO_NEED_DIAG2),显示(1:NEED_DIAG2) |
插入位图
插入位图,使用insert_bitmap
方法。
# 插入位图
work_sheet.insert_bitmap('test.bmp',5,0)
"insert_bitmap(self, filename, row, col, x = 0, y = 0, scale_x = 1, scale_y = 1)"
参数说明:
filename
:文件路径
row,col
:行、列
x,y
:设定距单元格的x,y 距离
scale_x,scale_y
:缩放比例
xlrd
对于xlrd
来说,只能读取Excel
表格,并不能修改表格当中的内容。
使用
首先需要先读取文件,打开表格文件,使用xlrd
当中的open_workbook
方法读取。
import xlrd
workBook = xlrd.open_workbook(filename,logfile,verbosity,use_mmap,file_contents,encoding_override,formatting_info,on_demand,ragged_rows)
参数解释:
filename
:要打开的文件或者文件路径。
logfile
:存放log的文件路径。
verbosity
:增加写入日志文件的跟踪材料的数量。
use_mmap
:是否使用mmap模块是通过试探法确定的。(使用此参数覆盖结果。)
file_contents
:字符串或:class:mmap.mmap
对象或其他行为类似的对象。如果提供了file_contents
,则不会使用filename
,除非(可能)在消息中。
encoding_override
:用于克服旧版本文件中缺少或错误的代码页信息。
formatting_info
:修改Excel内容但保留格式。
on_demand
:控制是在最初加载工作表还是在调用者要求时加载工作表。
ragged_rows
:默认值“False”表示所有行都用空单元格填充,以便所有行的大小与:attr:~xlrd.sheet.sheet.ncols
中的大小相同。
工作表的读取
调用方法需要先打开文件,后对文件对象调用方法。
import xlrd
# 打开文件
workBook = xlrd.open_workBook('file.xls')
#返回表格的所有sheet名字
workSheet = workBook.sheet_names()
方法 | 描述 | 返回值 |
---|---|---|
sheet_names() |
返回表格的所有sheet名字 | 返回表格当中所有sheet的名字列表 |
nsheets |
获取sheet数量 | 返回数值 |
sheets() | 获取所有的sheet对象 | 返回由所有sheet对象组成的列表 |
sheet_by_name() |
通过sheet名查找 | 返回复合查找条件的sheet对象 |
sheet_by_index() |
通过索引查找sheet | 返回对应索引的sheet对象 |
行的操作
对行和列的操作,都需要先选择工作表Sheet的对象,后续才能够使用方法。
例如:
import xlrd
# 打开文件
workBook = xlrd.open_workBook('file.xls')
# 通过下标选择sheet
workSheet = workBook.sheet_by_index(1)
行操作常用的方法:
方法 | 描述 | 返回值 |
---|---|---|
nrows |
获取该sheet的有效行数 | 返回sheet的有效行数 |
row(rowx) |
获取Sheet当中的某一行 | 返回由该行中所有的单元格对象组成的列表(可以指定列索引) |
row_slice(rowx,start_col,end_col) |
获取某一行的单元格,某一部分的对象(切片) | 返回由该列中所有的单元格对象组成的列表 |
row_types(rowx, start_colx=0, end_colx=None) |
获取某一行当中的单元格数据类型 | 返回由该行中所有单元格的数据类型组成的列表 |
row_values(rowx, start_colx=0, end_colx=None) |
获取某一行当中的单元格的内容 | 返回由该行中所有单元格的数据组成的列表 |
row_len(rowx) |
获取Sheet中某一列中的有效单元格长度 | 返回该列的有效单元格长度 |
列的操作
列操作常用的方法:
方法 | 描述 | 返回值 |
---|---|---|
ncols |
获取列表的有效列数,注:i表示第几列,不能超过总列数(i<=ncols) | 返回列表的有效列数 |
col(i, start_rowx=0, end_rowx=None) |
获取Sheet当中的某一列 | 返回由该列中所有的单元格对象组成的列表 |
col_slice(i, start_rowx=0, end_rowx=None) |
获取某一列的单元格,某一部分的对象(切片) | 返回由该列中所有的单元格对象组成的列表 |
col_types(i, start_rowx=0, end_rowx=None) |
获取某一列当中的单元格数据类型 | 返回由该列中所有单元格的数据类型组成的列表 |
col_values(i, start_rowx=0, end_rowx=None) |
获取某一列当中的单元格的内容 | 返回由该列中所有单元格的数据组成的列表 |
xlwt、xlrd、xlutils结合使用
因为三个可以的特点有所不同,xlwt
只能创建表格,不能修改已存在的文件,xlrd
只能读取已存在的文件,不能修改,两者通过xlutils
可以实现对已存在的excel表格进行修改操作。
使用
首先需要使用xlrd
导入已存在的表格,通过xlutils
当中的copy
,将xlrd
导入的数据复制到xlw
t当中,即可实现对已存在的表格进行修改操作。
先导入需要的库,通过xlrd
导入已存在的表格,对导入的文件对象通过copy
,变成xlwt
当中的可写workbook
对象。
import xlrd
import xlwt
from xlutils.copy import copy
# 导入已存在的表格
oldWorkBook = xlrd.open_workbook(file)
# 将需要修改的文件对象,变为可修改的workbook对象
newWorkBook = copy(oldWorkBook)
# 获取了xlwt中的文件对象后,就可采用xlwt当中的方法对对象进行操作
# 文件保存采用xlwt当中的方法
newWorkBook.save(file)
在Excel当中插入富文本单元格内容(奇葩需求,踩过的坑)
场景:
在开发自动化脚本时,有这样一个需求,在表格的结尾,需要根据表格当中的数据,输出一端话,这段话内容当中包含了多种样式(富文本格式)。在这样的情况下需要使用到xlwt
当中的write_rich_text
方法写入到单元格当中。
wirte_rich_text(r,c,rich_text_list,style)
参数介绍:
r
:单元格的行
c
:单元格的列
rich_text_list
:由要写入富文本的内容组成的列表
style
:单元格样式(边框\其他)
# 创建样式
# 添加表格边框
title_style.alignment = conent_alignment
content_border = xlwt.Borders()
content_border.top = xlwt.Borders.THIN
content_border.left = xlwt.Borders.THIN
content_border.right = xlwt.Borders.THIN
content_border.bottom = xlwt.Borders.THIN
# 样式一、二、三初始化
contentFontStyle1 = xlwt.Font()
contentFontStyle2 = xlwt.Font()
contentFontStyle3 = xlwt.font()
# 添加不同的样式
# 样式一
contentFontStyle1.name = '仿宋'
contentFontStyle1.height = 20*14
contentFontStyle1.bold = True
# 样式二
contentFontStyle2.name = '微软雅黑'
contentFontStyle2.height = 20*15
contentFontStyle2.bold = True
# 样式三
contentFontStyle3.name = '楷书'
contentFontStyle3.height = 20*16
contentFontStyle3.bold = False
#添加内容
seg1 = ('样式一', contentFontStyle1)
seg2 = ('样式二', contentFontStyle2)
seg3 = ('样式三', contentFontStyle3)
# 写入表格
workSheet.write_rich_text(r, c, [seg1, seg2, seg3], title_style)
openpyxl使用
openpyxl
模块属于第三方模块,是一个在 python
中能够处理 excel
文件的模块,还有比较出名的是xlrd
、xlwt
分别控制excel
文件的读写,这俩个能够兼容所有版本的文件。openpyxl
针对 excel 2003版本之前的兼容性可能不好 但是功能更加强大。
对于Excel
的版本不同,在2003版本之后Excel
的文件后缀由xls
变为了xlsx
、csv
。
excel文件的版本及后缀
2003版本之前 excel的文件后缀是xls
2003版本之后 excel的文件后缀是xlsx、csv
使用
创建文件
创建文件对象使用Workbook
方法
import openpyxl
workBook = openpyxl.Workbook()
打开已存在的文件
使用load_workbook()
方法
workBook = openpyxl.load_workbook(file)
创建工作簿
workSheet = workBook.create_sheet('test', 0)
# 对工作簿修改名称
workSheet.title = 'newtest'
打开已存在的工作簿
通常使用get_index()
和get_sheet_by_name()
方法来打开已存在的工作簿
# 需先创建表格的文件对象,然后才能进行操作
# 通过工作簿的索引打开工作簿
workSheet = workBook.get_index(0)
# 通过工作簿的名称打开工作簿
workSheet = workBook.get_sheet_by_name('test')
保存文件
通过save
方法进行保存
workBook.save(file)
修改标题背景
workSheet.sheet_properties.tabColor = 'FFFFFF' # 设置背景颜色需要使用对应颜色的十六进制
获取工作簿的所有标题
使用sheetnames
来获取表格当中所有工作簿的名称
workSheet.names
访问单元格
使用workSheet[]
方法:
workSheet['A1':'B12']
# 这种方法访问较为便捷,如果需要访问这其中的每一个单元格时,只需要对这个列表进行遍历即可
# 取每一个单元格时,可以对每个单元格进行赋值
for item in workSheet['A1':'B12']:
item = 'test'
# 这样就能对‘A1’-‘B12’这个范围的单元格赋‘test’的值
使用workSheet.cell()
方法:
workSheet.cell(row, column, value)
参数说明:
row:行
column:列
value:值
此方法是通过指定坐标的方式赋值,其中 row 参数代表行数, column 代表列数,value 是填入的数据。
对表格就进行追加操作
workSheet.append()
workSheet.append(['1', '2', '3'])
在表格当中添加公式
在表格当中,对单元格设置一个适合Excel的公式,即可实现在表格当中添加公式。
例如在Excel
当中平均数公式为’=AVERAGE(C{i}:CM{i})‘
,在代码当中可设置单元格的值为这样即可插入公式到Excel
当中
# 在某一列当中插入计算平均数公式:
for i in range(2, 16):
workSheet[f'B{i}'] = f'=AVERAGE(C{i}:CM{i})'
其他
-
获取最大行
workSheet.max_row
-
获取最大列
workSheet.max_column
-
获取每一个单元格
for row in workSheet.rows: for cell in workSheet.colums: print(cell.value) # 先遍历每一行,在每一行下,遍历每一列,就可以获得到每一个单元格
-
合并单元格
merge_cells('A1:B2') # 当中设置的为单元格的范围
样式设置
在openpyxl
当中,设置单元格的样式需要使用到其中的Style
类。
导入类:
from openpyxl.styles import *
字体
contFontStyle = Font(name='等线', size=24, italic=True, color=colors.RED, bold=True)
# 指定了等线24号,加粗斜体,字体颜色红色。
Font
当中的所有属性
Font(name=None, sz=None, b=None, i=None, charset=None, u=None, strike=None, color=None, scheme=None, family=None, size=None, bold=None, italic=None, strikethrough=None, underline=None, vertAlign=None, outline=None, shadow=None, condense=None, extend=None)
在Font
对象中,常设值的属性有:
属性 | 描述 |
---|---|
name | 字体名称 |
size | 字体大小 |
sz | 字体大小 |
b | 是否加粗 |
bold | 是否加粗 |
i | 是否斜体 |
italic | 是否斜体 |
charset | 字符 |
u | 是否加下划线 |
underline | 是否加下划线 |
strike | 是否加删除线 |
strikethrough | 是否加删除线 |
color | 字体颜色 |
scheme | 标题(major)\正文(minor) |
vertAlign | 上标(superscript)\下标(subscript) |
shadow | 字体阴影 |
边框
设置边框会使用style
当中的Border
类。
需要配合Side
类设置线条使用
# 首先先设置线条的样式,再使用线条的样式,去设置单元格的边框。
side = Side(style='dashDot', color=Color(indexed=10))
border = Border(left=side, right=side, top=side, bottom=side, vertical=side)
其中SIde
当中可设置的值有:
Side(style, color, border_style)
参数介绍:
style
/border_style
:线条样式。(可设置值有dashDot’, ‘dashDotDot’, ‘dashed’, ‘mediumDashDot’, ‘double’, ‘slantDashDot’, ‘thin’, ‘hair’, ‘dotted’,‘thick’, ‘mediumDashed’, ‘mediumDashDotDot’, ‘medium’)
color
:设置边框颜色
Border
中常设置的值有:
Border(left, right, top, bottom, diagonalUp, diagonalDown)
参数介绍:
left
/right
/top
/bottom
:分别对上下左右设置边框
diagonalUp
:是否设置对角线向上
diagonalDown
:是否设置对角线向下
对齐方式
设置对齐方式要使用Alignment
对象
Alignment(horizontal=None, vertical=None, textRotation=0, wrapText=None, shrinkToFit=None, indent=0, relativeIndent=0, justifyLastLine=None, readingOrder=0, text_rotation=None, wrap_text=None, shrink_to_fit=None)
常用参数介绍:
horizontal
:水平对齐方式
值 | 解释 |
---|---|
general |
常规 |
left |
靠左 |
center |
居中 |
right |
靠右 |
fill |
填充 |
justify |
两端对齐 |
centerContinuous |
跨列居中 |
distributed |
分散对齐 |
vertical
:垂直对齐方式
值 | 解释 |
---|---|
top | 顶部 |
center | 居中 |
bottom | 底部 |
justify | 两端对齐 |
distributed | 分散对齐 |
wrapText
/ wrap_text
:是否自动换行
shrinkToFit
/ shrink_to_fit
:是否缩小字体填充
justifyLastLine
:是否合并单元格
indent
:缩进
textRotation
/ text_rotation
:文本旋转角度
设置填充色
设置填充色需要使用PatternFill
PatternFill(patternType=None, fgColor=Color(), bgColor=Color(), fill_type=None, start_color=None, end_color=None)
参数介绍:
patternType
/ fill_type
: 填充样式
注:设置了起始色和结束色,可设置渐变色填充到单元格当中。
设置数字格式
可以设置全部或单元格,设置.number_format
的值即可
示例:
workSheet['A1'].number_format = 'General' # 将A1列数字类型为常规
设置的值可以查看xlwt当中设置单元格的数据类型
的表格。
一个xls转换为xlsx的方法
因为部分库之间对两种Excel的后缀支持不同,可以采用这种方法,来接合多种库的使用。
使用的库为win32com
,封装了一个方法:
首先需要导入库
import win32com.client as win32
def xls_to_xlsx(file_path):
"""
将xls表格转换为xlsx表格
:param file_path:需要转换xls文件的绝对路径
:return: None
"""
excel = win32.gencache.EnsureDispatch('Excel.Application')
wb = excel.Workbooks.Open(file_path)
wb.SaveAs(file_path + "x", FileFormat=51)
wb.Close()
excel.Application.Quit()
os.remove(file_path)
总结
充色
设置填充色需要使用PatternFill
PatternFill(patternType=None, fgColor=Color(), bgColor=Color(), fill_type=None, start_color=None, end_color=None)
参数介绍:
patternType
/ fill_type
: 填充样式
注:设置了起始色和结束色,可设置渐变色填充到单元格当中。
设置数字格式
可以设置全部或单元格,设置.number_format
的值即可
示例:
workSheet['A1'].number_format = 'General' # 将A1列数字类型为常规
设置的值可以查看xlwt当中设置单元格的数据类型
的表格。
一个xls转换为xlsx的方法
因为部分库之间对两种Excel的后缀支持不同,可以采用这种方法,来接合多种库的使用。
使用的库为win32com
,封装了一个方法:
首先需要导入库
import win32com.client as win32
def xls_to_xlsx(file_path):
"""
将xls表格转换为xlsx表格
:param file_path:需要转换xls文件的绝对路径
:return: None
"""
excel = win32.gencache.EnsureDispatch('Excel.Application')
wb = excel.Workbooks.Open(file_path)
wb.SaveAs(file_path + "x", FileFormat=51)
wb.Close()
excel.Application.Quit()
os.remove(file_path)
总结
所有的库都为自己总结,可能会有不全的地方,欢迎指出,后续有踩的坑也会加入到里面。