Python中操作excel有xlrd,xlwt,xlutils模块,openpyxl模块,xlsxwriter等模块,这里先介绍xlrd,xlwt,xlutils模块。

xlrd是读excel的库,支持.xls,.xlsx文件的读;
xlwt是写excel的库,支持写.xls文件;
xlutils提供其他功能:如复制一份excel;

1:xlrd,xlwt,xlutils库的安装

pip install xlrd

pip install xlwt

pip install xlutils

2:查看模块的帮助文档

拿到一个新的模块,还是首先看看它里面的帮助文档,以及这个模块中所提供的方法。

# encoding=gbkimport  xlrd print(xlrd.__doc__) print(dir(xlrd)) for item in dir(xlrd):    print(item) print(help(xlrd.open_workbook)) # import  xlwt# 自己写吧.....

从上面的打印结果可以看到,xlrd除了能操作excel之外,还能操作zipfile文件,这里只练习对excel的操作。

3:xlrd模块中的常用方法

3.1:数据格式

xlrd所读取的excel数据可能的格式有七种:

0 empty(空的)
1 text(string)
2 number,
3 date,
4 boolean,
5 error,
blank(空白表格)

3.2:获取工作表

# encoding=gbk import  xlrd # 打开Book工作簿(即excel工作簿,包含所有工作表)workBook = xlrd.open_workbook('test.xlsx') # 查看工作簿对象中所有的属性与方法#print(help(workBook)) # 工作表的总数print(workBook.nsheets)# 获取所有的工作表名,返回一个列表print(workBook.sheet_names()) # 获取工作表# 获取所有的工作表,返回一个列表print(workBook.sheets())# 遍历所有的工作表# for sheet in workBook.sheets():#     print(sheet) # 获取某个工作表# 方法1:通过索引顺序获取,注意下标不要越界,最大值为workBook.nsheets - 1workSheet = workBook.sheets()[0] # 方法2:通过索引顺序获取, 最大值为workBook.nsheets - 1# workSheet = workBook.sheet_by_index(0)) # 方法3: 通过工作表名称获取;所有的工作表名:通过 workBook.sheet_names() 获取# workSheet = workBook.sheet_by_name('Sheet1') # 以上三个函数都会返回一个xlrd.sheet.Sheet()对象# # workBook.sheet_loaded(sheet_name or indx)   # 检查某个工作表是否导入完毕

3.3:行操作

# encoding=gbk import  xlrd # 打开Book工作簿(即excel工作簿,包含所有工作表)workBook = xlrd.open_workbook('test.xlsx') # 获取第一个工作表workSheet = workBook.sheets()[0] # 查看工作表对象中的所有方法# print(help(workSheet)) nrows = workSheet.nrows  #获取该工作表中的有效行数print(nrows) # 获取第n行,包括单元格数据类型与单元格数据值print(workSheet.row(3) ) #返回由该行中所有的单元格对象组成的列表#上面输出: [empty:'', number:20201601.0, number:108.0, number:96.0, number:102.0, number:92.0, number:95.0, number:93.0, number:88.0, number:90.0, empty:''] # 获取第n行,包括单元格数据类型与单元格数据值print(workSheet.row_slice(3))  #返回由该列中所有的单元格对象组成的列表#上面输出:[empty:'', number:20201601.0, number:108.0, number:96.0, number:102.0, number:92.0, number:95.0, number:93.0, number:88.0, number:90.0, empty:''] # 获取第n行单元格数据类型编号,print(workSheet.row_types(3, start_colx=0, end_colx=None) )   #返回由该行中所有单元格的数据类型组成的列表#上面输出:array('B', [0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0]) # 获取第n行,单元格数据值print(workSheet.row_values(3, start_colx=0, end_colx=None) )  #返回由该行中所有单元格的数据组成的列表#上面输出:['', 20201601.0, 108.0, 96.0, 102.0, 92.0, 95.0, 93.0, 88.0, 90.0, ''] print(workSheet.row_len(3)) #返回该行的有效单元格的长度

3.4:列操作

# encoding=gbk import  xlrd # 打开Book工作簿(即excel工作簿,包含所有工作表)workBook = xlrd.open_workbook('test.xlsx') # 获取第一个工作表workSheet = workBook.sheets()[0] # 查看工作表对象中的所有方法# print(help(workSheet)) #获取工作表的有效列数ncols = workSheet.ncolsprint(ncols) #返回由该列中所有的单元格对象组成的列表:类型+数据print(workSheet.col(1, start_rowx=0, end_rowx=None)) #返回由该列中所有的单元格对象组成的列表:类型+数据print(workSheet.col_slice(1, start_rowx=0, end_rowx=None)) #返回由该列中所有单元格的数据类型组成的列表:类型编号print(workSheet.col_types(1, start_rowx=0, end_rowx=None)) #返回由该列中所有单元格的数据组成的列表:数据print(workSheet.col_values(1, start_rowx=0, end_rowx=None)) 

3.5:单元格操作

# encoding=gbk import  xlrd # 打开Book工作簿(即excel工作簿,包含所有工作表)workBook = xlrd.open_workbook('test.xlsx') #   formatting_info 默认为False# workBook = xlrd.open_workbook('test.xls',formatting_info=True)  #  formatting_info=True 格式化信息,只支持.xls文件 # 查看工作簿对象中所有的属性与方法# print(help(workBook))# print(help(xlrd.open_workbook)) # 获取第一个工作表workSheet = workBook.sheets()[0] # 查看工作表对象中的所有方法# print(help(workSheet))  #返回单元格对象print(workSheet.cell(3,3))print(workSheet.cell(3,3).value )# 结果:number:96.0# 结果:96.0 #返回单元格中的数据类型编号print(workSheet.cell_type(3,3) )# 结果 2 #返回单元格中的数据print(workSheet.cell_value(3,3)) # 行,列# 结果:96.0 # 单元格的格式化信息,需要formatting_info=True 才能用,即 xlrd.open_workbook('test.xls',formatting_info=True)# print(workSheet.cell_xf_index(3, 3)) # print(help(workSheet.cell_xf_index)) 

4:xlwt模块中的常用方法

4.1:写入excel文件

# encoding=gbk import xlwt# 创建一个excel工作簿, 设置编码为utf-8workbook = xlwt.Workbook(encoding = 'utf-8')# 创建一个工作表,名称为"测试sheet"worksheet = workbook.add_sheet('测试sheet',cell_overwrite_ok=True)# 写入excel# 参数对应 行, 列, 值worksheet.write(1,0, label = 'this is test')worksheet.write(1,0, '测试')  # 给相同的单元格赋值:需要在调用workbook.add_sheet 函数时加上 cell_overwrite_ok=Trueworksheet.write(1,1, '999中国333')# 保存,如果文件存在,就会覆盖。workbook.save('xlwt_test1.xls')  #只能保存为xls文件

结果:

4.2:设置字体样式

# encoding=gbk import xlwt# 创建一个excel工作簿, 设置编码为utf-8workbook = xlwt.Workbook(encoding = 'utf-8')# 创建一个工作表,名称为"测试sheet"worksheet = workbook.add_sheet('测试sheet',cell_overwrite_ok=True) style = xlwt.XFStyle() # 初始化样式# 设置字体font = xlwt.Font() # 为样式创建字体font.name = 'Times New Roman'font.bold = True # 黑体font.underline = True # 下划线font.italic = True # 斜体字font.colour_index = 2 # 字体颜色 0 = Black, 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow, 6 = Magenta, 7 = Cyan, 16 = Maroon, 17 = Dark Green, 18 = Dark Blue, 19 = Dark Yellow , almost brown), 20 = Dark Magenta, 21 = Teal, 22 = Light Gray, 23 = Dark Gray, the list goes on...style.font = font # 设定样式  worksheet.write(1, 0, 'Unformatted value') # 不带样式的写入worksheet.write(2, 0, 'Formatted value', style) # 带样式的写入

结果:

4.3:设置单元格宽度

# encoding=gbkimport xlwt# 创建一个excel工作簿, 设置编码为utf-8workbook = xlwt.Workbook(encoding = 'utf-8')# 创建一个工作表,名称为"测试sheet"worksheet = workbook.add_sheet('测试sheet',cell_overwrite_ok=True) # 设置单元格宽度worksheet.col(0).width = 5000worksheet.write(1, 0, '88888_ixusy88_1')worksheet.write(2, 1, '88888_ixusy88_2',)workbook.save('xlwt_test1.xls')

结果:

4.4:输入一个日期到单元格

# encoding=gbkimport xlwtimport datetime # 创建一个excel工作簿, 设置编码为utf-8workbook = xlwt.Workbook(encoding = 'utf-8')# 创建一个工作表,名称为"测试sheet"worksheet = workbook.add_sheet('测试sheet',cell_overwrite_ok=True)style = xlwt.XFStyle()style.num_format_str = 'YYYY-MM-DD h:mm:ss' # Other options: M/D/YY,D-MMM-YY, D-MMM, MMM-YY, h:mm, h:mm:ss, h:mm, h:mm:ss, M/D/YY h:mm, mm:ss, [h]:mm:ss, mm:ss.0 # 设置单元格宽度worksheet.col(1).width = 5000worksheet.write(1, 1, datetime.datetime.now(), style)workbook.save('xlwt_test1.xls')

4.5:向单元格添加一个超链接

# encoding=gbkimport xlwt # 创建一个excel工作簿, 设置编码为utf-8workbook = xlwt.Workbook(encoding = 'utf-8')# 创建一个工作表,名称为"测试sheet"worksheet = workbook.add_sheet('测试sheet',cell_overwrite_ok=True) # 设置单元格宽度worksheet.col(1).width = 5000worksheet.write(0, 0, xlwt.Formula('HYPERLINK("https://www.baidu.com/";"百度")'))workbook.save('xlwt_test1.xls')

4.6:向单元格添加一个公式

# encoding=gbkimport xlwt # 创建一个excel工作簿, 设置编码为utf-8workbook = xlwt.Workbook(encoding = 'utf-8')# 创建一个工作表,名称为"测试sheet"worksheet = workbook.add_sheet('测试sheet',cell_overwrite_ok=True) worksheet.write(1, 1, 15)worksheet.write(1, 2, 3)worksheet.write(1, 3, 4)worksheet.write(1, 4, 5)worksheet.write(1, 5, 6) worksheet.write(2, 1, xlwt.Formula('B2*C2'))worksheet.write(2, 2, xlwt.Formula('SUM(B2,C2)'))worksheet.write(2, 5, xlwt.Formula('SUM(B2:F2)'))workbook.save('xlwt_test1.xls')

结果:

4.7:设置单元格内容的对齐方式

# encoding=gbkimport xlwt # 创建一个excel工作簿, 设置编码为utf-8workbook = xlwt.Workbook(encoding = 'utf-8')# 创建一个工作表,名称为"测试sheet"worksheet = workbook.add_sheet('测试sheet',cell_overwrite_ok=True) alignment = xlwt.Alignment() # Create Alignmentalignment.horz = xlwt.Alignment.HORZ_CENTER # May be: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTEDalignment.vert = xlwt.Alignment.VERT_CENTER # May be: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTEDstyle = xlwt.XFStyle() # Create Stylestyle.alignment = alignment # Add Alignment to Style# 设置单元格宽度worksheet.col(1).width = 6000worksheet.write(1, 1, '中国', style)worksheet.write(1, 2, '中国')workbook.save('xlwt_test1.xls')

结果:

4.8:单元格添加边框

# encoding=gbkimport xlwt # 创建一个excel工作簿, 设置编码为utf-8workbook = xlwt.Workbook(encoding = 'utf-8')# 创建一个工作表,名称为"测试sheet"worksheet = workbook.add_sheet('测试sheet',cell_overwrite_ok=True)borders = xlwt.Borders() # Create Bordersborders.left = xlwt.Borders.DASHED #  DASHED虚线  NO_LINE没有  THIN实线# May be: NO_LINE, THIN, MEDIUM, DASHED, DOTTED, THICK, DOUBLE, HAIR, MEDIUM_DASHED, THIN_DASH_DOTTED, MEDIUM_DASH_DOTTED, THIN_DASH_DOT_DOTTED, MEDIUM_DASH_DOT_DOTTED, SLANTED_MEDIUM_DASH_DOTTED, or 0x00 through 0x0D.borders.right = xlwt.Borders.DASHEDborders.top = xlwt.Borders.DASHEDborders.bottom = xlwt.Borders.DASHEDborders.left_colour = 0x40borders.right_colour = 0x40borders.top_colour = 0x40borders.bottom_colour = 0x40style = xlwt.XFStyle() # Create Stylestyle.borders = borders # Add Borders to Style# 设置单元格宽度worksheet.col(1).width = 6000worksheet.write(1, 1, 'ixusy88', style)workbook.save('xlwt_test1.xls')

结果:

4.9:单元格设置背景色

# encoding=gbkimport xlwt # 创建一个excel工作簿, 设置编码为utf-8workbook = xlwt.Workbook(encoding = 'utf-8')# 创建一个工作表,名称为"测试sheet"worksheet = workbook.add_sheet('测试sheet',cell_overwrite_ok=True) pattern = xlwt.Pattern() # Create the Patternpattern.pattern = xlwt.Pattern.SOLID_PATTERN # May be: NO_PATTERN, SOLID_PATTERN, or 0x00 through 0x12pattern.pattern_fore_colour = 5 # May be: 8 through 63. 0 = Black, 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow, 6 = Magenta, 7 = Cyan, 16 = Maroon, 17 = Dark Green, 18 = Dark Blue, 19 = Dark Yellow , almost brown), 20 = Dark Magenta, 21 = Teal, 22 = Light Gray, 23 = Dark Gray, the list goes on...style = xlwt.XFStyle() # Create the Patternstyle.pattern = pattern # Add Pattern to Style # 设置单元格宽度worksheet.col(1).width = 6000worksheet.write(1, 1, 'ixusy88', style)workbook.save('xlwt_test1.xls')

4.10:合并单元格(行和列合并)

# encoding=gbkimport xlwt # 创建一个excel工作簿, 设置编码为utf-8workbook = xlwt.Workbook(encoding = 'utf-8')# 创建一个工作表,名称为"测试sheet"worksheet = workbook.add_sheet('测试sheet',cell_overwrite_ok=True)# 设置单元格宽度worksheet.col(1).width = 6000# write_merge(self, r1, r2, c1, c2, label="", style=Style.default_style):  开始行,结束行,开始列,结束列# 单元格(0,0) 到 单元格(0,3)  合并worksheet.write_merge(0, 0, 0, 3, 'First Merge')font = xlwt.Font() # Create Fontfont.bold = True # Set font to Boldstyle = xlwt.XFStyle() # Create Stylestyle.font = font # Add Bold Font to Style# write_merge(self, r1, r2, c1, c2, label="", style=Style.default_style):# 单元格(1,0) 到 单元格(2,3) 合并worksheet.write_merge(1, 2, 0, 3, 'Second Merge', style)workbook.save('xlwt_test1.xls')

结果:

5:xlutils模块

xlrd模块提供读操作,
xlwt模块提供写操作,但是无法复用excel格式。
xlutils模块提供了复制一份excel的功能,代码如下:

# encoding=gbkfrom xlutils.copy import copyimport  xlrd # 打开Book工作簿(即excel工作簿,包含所有工作表)workBook = xlrd.open_workbook('test.xlsx') #复制一份,将xlrd的对象转化为xlwt的对象new_workBook = copy(workBook) # 获取第一个工作表workSheet = new_workBook.get_sheet(0) # 在这里对复制的那一份进行处理,操作与xlwt对象操作一样workSheet.write(1, 0, '中国')new_workBook.save('xlwt_test1_copy.xls')  #只能保存为xls文件

xlrd读取所有sheet名_Python3之excel操作——xlrd,xlwt,xlutils模块相关推荐

  1. xlrd读取所有sheet名_如何在Python对Excel进行读取

    在python自动化中,经常会遇到对数据文件的操作,比如添加多名员工,但是直接将员工数据写在python文件中,不但工作量大,要是以后再次遇到类似批量数据操作还会写在python文件中吗? 应对这一问 ...

  2. python添加excel模块,Python Excel操作——xlrd、xlwd,,读取1、导入模块 i

    Python Excel操作--xlrd.xlwd,,读取1.导入模块 i 读取 1.导入模块 import xlrd 2.打开Excel文件读取数据 data = xlrd.open_workboo ...

  3. Python Excel 操作 | xlrd+xlwt 模块笔记

    Python 的pandas模块使用xlrd作为读取 excel 文件的默认引擎.但是,xlrd在其最新版本(从 2.0.1 版本开始)中删除了对 xls 文件以外的任何文件的支持. xlsx fil ...

  4. python怎么读取excel-Python|读、写Excel文件(三种模块三种方式)

    python读写excel的方式有很多,不同的模块在读写的讲法上稍有区别: 用xlrd和xlwt进行excel读写: 用openpyxl进行excel读写: 用pandas进行excel读写: 为了方 ...

  5. xlsxwriter 合并单元格_Python3之excel操作xlsxwriter模块

    1:xlsxwriter模块介绍     xlsxwriter模块主要用来生成excel表格(后缀名为.xlsx)文件,插入数据.插入图标等表格操作.写大文件,速度快且只占用很小的内存空间; 2:xl ...

  6. java excel 多sheet页_java导入excel操作多sheet页上传

    依赖包 cn.afterturn easypoi-base 3.0.1 cn.afterturn easypoi-web 3.0.1 cn.afterturn easypoi-annotation 3 ...

  7. Python -- xlrd,xlwt,xlutils 读写同一个Excel

    最近开始学习python,想做做简单的自动化测试,需要读写excel,然后就找到了xlrd来读取Excel文件,使用xlwt来生成Excel文件(可以控制Excel中单元格的格式),需要注意的是,用x ...

  8. python excel操作库,可能是全网最完整的 Python 操作 Excel库总结!

    openpyxl xlrd/xlwt xlwings xlsxwriter 了解各个库的异同,从而在不同场景下可以灵活使用 首先让我们来整体把握下不同库的特点 " xlrd xlwt xlu ...

  9. Python-操作excel操作redis

    1.操作excel # 写入excelimport xlwt # 导入模块(写入excel) book = xlwt.Workbook() # 新建一个excel sheet = book.add_s ...

最新文章

  1. 截取视图某一段另存为部分视图(Partial View)
  2. 05-JDBC连接MySQL数据库【删除数据】
  3. 四年,如何从前端小白蜕变为前端技术专家?
  4. 0xC00000FD: Stack overflow (parameters: 0x00000000, 0x003E2000).错误
  5. 帮助学生改善学习方法_学生应该如何花费时间改善自己的幸福
  6. NodeJs+Qunit的使用方式
  7. Vsphere日记01.ESXi5.5.install
  8. input单选框多选框时可用的事件
  9. 基于微信小程序做了个交友小程序
  10. XMind 8 pro 破解教程
  11. matlab实现卷积编码与viterbi译码
  12. Java中对象方法的调用过程动态绑定(Dynamic Binding)
  13. NLP入门从入门到实战 实体命名识别 +中文预处理之繁简体转换及获取拼音
  14. 可以胜任网吧技术主管的绝招
  15. 微信订阅号简易开发——小白攻略图文版
  16. 企业微信与帆软BI内网服务器集成
  17. Gamma、Linear、sRGB 和Unity Color Space,你真懂了吗?
  18. HDFS 的深入了解,深入浅出,面试必备(Hadoop的三部曲——上)
  19. 毕业论文-----有关目录的全部问题
  20. 认识Linux系统结构

热门文章

  1. require()循环引用问题
  2. 集中式版本管理系统和分布式管理系统的区别-集中式vs分布式
  3. 分享几个有趣的Linux命令
  4. 数字孪生技术在光网络中的应用与问题
  5. 当当网年中图书大促来了,全年买书最好时机
  6. Java 多线程— 线程的生命周期及方法
  7. linux解压exe文件,在Deepin V20系统下解压Windows中.exe文件的方法
  8. 竞赛:汽车领域多语种迁移学习挑战赛(科大讯飞)
  9. javascript+css学生信息表综合案例(附详细代码)
  10. 数码相机命名规律详说