Python操作Excel|Python方法总结

Python对Excel操作

简介

​ 利用代码实现自动化办公,在Python对Excel操作的库当中,主要使用以下第三方库。

WIN MAC PY2 PY3 .xls .xlsx 修改
xlrd × ×
xlwt × ×
xlutils × × ×
xlwings
openpyxl × ×
xlswriter × × ×
win32com
DataNitro × - - -
pandas ×

​ 主要介绍xlrdxlwtxlutils的结合使用,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 solidfore_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导入的数据复制到xlwt当中,即可实现对已存在的表格进行修改操作。

​ 先导入需要的库,通过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 文件的模块,还有比较出名的是xlrdxlwt 分别控制excel文件的读写,这俩个能够兼容所有版本的文件。openpyxl 针对 excel 2003版本之前的兼容性可能不好 但是功能更加强大。

对于Excel的版本不同,在2003版本之后Excel的文件后缀由xls变为了xlsxcsv

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)

总结

​ 所有的库都为自己总结,可能会有不全的地方,欢迎指出,后续有踩的坑也会加入到里面。

猜你喜欢

转载自blog.csdn.net/weixin_44030265/article/details/127619567