python 控制 excel
Python控制exce
关于包的说明:
- xlrd 读取excel文件, xlrd >= 2.0时,仅支持xls格式; 指定 xlrd 版本 1.2.0 可支持xlsx
- xlwt 写入excel文件,仅支持xls格式。推荐使用
- 适合与xlrd配合读取和修改excel文件,也可以直接创建新excel文件。
- xlwt不能直接写⼊已有⽂件,需要copy⼀份新⽂件进⾏操作后保存为同名⽂件覆盖
- from xlutils.copy import copy
- xlswriter 创建新excel文件,支持xlsx格式,不支持excel文件修改。适合从头创建新excel文件
xlrd
- 基本使用
import os
import xlrd
file=xlrd.open_workbook('testCase.xls')
# 获取所有sheet的名字及数量
file_name=file.sheet_names()
sheet_count=file.nsheets
# 获取指定内容
row=sheet.row_values(1)
col=sheet.col_values(1)
#获取的行、列数据均会存放在list中
cell=sheet.cell_value(1,1)
unique_row=sheet.row_values(rowx=0,start_colx=1,end_colx=3)
# 获取单元格数据类型
# python读取excel中单元格的内容返回的有5种类型,其中对应关系是:0代表empty,1代表string,2代表number, 3代表date,4代表boolean,5代表error。
cell_type=sheet.cell_value(1,1).ctype
# 将excel中的用例放入指定list中
cls=[]
for i in range(rows):
cls.append(sheet.row_values(rowx=i,start_colx=0,end_colx=None))
xlwt
-
基本使用 创建新的excel文件
import xlwt wbk = xlwt.Workbook(') sheet = wbk.add_sheet('sheet1') sheet.write(0,1,'test text') wbk.save('test.xls')
-
xlutils结合xlrd可以达到修改excel文件目的
import xlrd from xlutils.copy import copy wb = xlrd.open_workbook('demo.xls') wbnew = copy(wb) ws = wbnew.get_sheet(0) # 写入数据 values = [['小明', '18', '男'], ['小李', '27', '男'], ['小王', '90', '女']] headers = ['姓名', '年龄', '性别'] values.insert(0, headers) nrows = 0 for rowdata in values: ncols = 0 for celldata in rowdata: ws.write(nrows, ncols, celldata) ncols += 1 nrows += 1 # 结束 wb.close() wbnew.save('demo.xls')
-
设置样式
# 创建样式对象 在写入内容时作为参数传入 title_style = xlwt.XFStyle() # 标题样式 text_style = xlwt.XFStyle() # 正文样式 # 创建字体对象 type_list_font = xlwt.Font() type_list_font.name = '宋体' type_list_font.height = 230 # 字体大小 type_list_font.colour_index = 0 # 字体颜色 type_list_font.bold = True # 字体加粗 # 将字体对象赋予样式对象 title_style.font = type_list_font text_style.font = type_list_font # 背景颜色设置 pattern = xlwt.Pattern() pattern.pattern = xlwt.Pattern.SOLID_PATTERN pattern.pattern_fore_colour = 22 # 背景颜色 代号可以进入源码查看 title_style.pattern = pattern text_style.pattern = pattern # 位置设置 alignment = xlwt.Alignment() alignment.horz = 0x02 # 水平居中 可进入源码查看其他样式 alignment.vert = 0x01 # 垂直居中 可进入源码查看其他样式 title_style.alignment = alignment text_style.alignment = alignment # 设置边框 borders = xlwt.Borders() borders.left = xlwt.Borders.DASHED # DASHED虚线 边框形式 borders.right = xlwt.Borders.NO_LINE # NO_LINE没有 borders.top = xlwt.Borders.THIN # THIN实线 borders.bottom = xlwt.Borders.DASHED borders.left_colour = 4 # 边框颜色 更多颜色,进入看源码 borders.right_colour = 3 borders.top_colour = 3 borders.bottom_colour = 4 title_style.borders = borders # 列宽设置 for i in range(0, 9): if i == 1: ws.col(i).width = 256*68 else: ws.col(i).width = 256*19 # 行高设置 tall_style = xlwt.easyxf('font:height 350;') for i in range(0, 100): row_hight = ws.row(i) row_hight.set_style(tall_style) # 将数据写入 nrows = 0 for rowdata in values: ncols = 0 for celldata in rowdata: if nrows == 0: # 合并单元格,并写入 ws.write_merge(0, 0, 0, 8, celldata, title_style) else: # 按照预定样式写入数据 ws.write(nrows, ncols, celldata, text_style) ncols += 1 nrows += 1 # 将excel对象转为文件流 或 保存到本地 file_stream = io.BytesIO() wb.save(file_stream) file_stream.seek(0) wb.save('./demo.xls')
xlsxwriter
-
基本使用
import xlsxwriter as xw #新建excel workbook = xw.Workbook('myexcel.xlsx') #新建工作薄 worksheet = workbook.add_worksheet() #写入数据 worksheet.wirte('A1',1) #关闭保存 workbook.close()
-
设置样式
import xlsxwriter # 创建 excel 和 表 对象 wb = xlsxwriter.Workbook(xlspath) wbsheet = wb.add_worksheet(sheet_name) # 设置内容样式:字体大小, 字体样式,文本居中 style = wb.add_format({'font_size': 11, 'align': 'center', 'valign': 'vcenter', 'bold': True}) # 设置表格样式:列宽、行高设置 wbsheet.set_column(0, 50, 23) # 0-50列 设置列宽 23 for nrow in range(10000): wbsheet.set_row(nrow, 28) # 0-999行 设置行高 28
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下