使用Python的xlrd和xlwt操作Excel详解

 更新时间:2023年08月21日 10:32:06   作者:程序员老华  
这篇文章主要介绍了使用Python的xlrd和xlwt对比操作Excel详解,xlrd和xlwt是python的第三方库,xlrd模块实现对excel文件内容读取,xlwt模块实现对excel文件的写入,需要的朋友可以参考下

1. 操作Excel库(xlrd和xlwt)对比

xlrd :可处理Excel后缀“.xls”、“.xlsx”,只能读取;

xlwt :可处理Excel后缀“.xls”,可写入、修改、保存、样式调整、插入图片。

2. xlrd读取Excel

首先在程序相同目录创建 “test.xls”文件,并创建多个 sheet。 

注意: 直接创建 .xls文件,即使改了扩展命,后续操作仍会报错。

2.1 xlrd操作方法汇总

xlrd对.xls文件操作

函数语法作用说明
Excel操作wb = xlrd.open_workbook(path)打开文件
wb.sheet_names()获取所有的表名
wb.sheet_by_index(索引) 或 wb.sheet_by_name('Sheet表明')指定Sheet
Sheet表的行操作sheet.nrows()获取sheet表总函数
sheet.row(1) 或 sheet.row_slice(1)返回该行中所有单元格对象组成的列表,列表内是键值对,例如:['列名1':'值','列名2':'值', ...]
sheet.row_values(rowx, start_colx=0, end_colx=None)返回指定行的所有单元格数值组成的列表
sheet.row_len(rowx)返回指定行的有效长度
Sheet表的列操作sheet.ncols()返回指定sheet表的有效列数
sheet.col(1) 或 sheet.clo_slice(1)返回该列中所有的单元格对象组成的列表,列表内是键值对,例如:['列名1':'值', '列明2':'值', ...]
sheet.col_values(colx, start_colx=0, end_colx=None)返回指定列的所有单元格数值组成的列表,例如:['列名':'值1', '值2',...]

2.2 xlrd用法举例

import xlrd
#1.打开文件
wb = xlrd.open_workbook('./test.xls')
print(wb) #输出:<xlrd.book.Book object at 0x00000192ADAA57F0>
#2.获取所有表名
sheet_name_list = wb.sheet_names()
print(sheet_name_list) #输出:['Sheet1', 'Sheet2', 'Sheet3']
#3.指定sheet表
#3.1索引顺序获取
sheet_1 = wb.sheet_by_index(0)
print(sheet_1) #输出:Sheet  0:<Sheet1>
#3.2名称获取
sheet_2 = wb.sheet_by_name('Sheet1')
print(sheet_2) #输出:Sheet  0:<Sheet1>
#4.对sheet行操作
#4.1获取sheet表总行数:sheet.nrows
print('Excel表中数据总行数为:',sheet_1.nrows) #Excel表中数据总行数为: 4
#4.2返回由该行中所有的单元格对象组成的列表,列表内是键值对:sheet.row(行数)或者sheet.row_slice(行数)
print('方法1:',sheet_1.row(1),'方法2:',sheet_1.row_slice(1)) #输出:方法1: [text:'小明', number:165.0, number:12.0, number:50.0, number:80.0] 方法2: [text:'小明', number:165.0, number:12.0, number:50.0, number:80.0]
#4.3返回指定行的所有单元格数值组成的列表:sheet.row_values(rowx, start_colx=0, end_colx=None)
print(sheet_1.row_values(1)) #输出:['小明', 165.0, 12.0, 50.0, 80.0]
#4.4返回指定行的有效长度:sheet.row_len()
print(sheet_1.row_len(1)) #输出:5
print('-'*40)
#5.读取整个表
for i in range(sheet_1.nrows):
    print(sheet_1.row_values(i))
# 输出:
#     ----------------------------------------
#     ['name', 'high', 'age', 'weight', 'score']
#     ['小明', 165.0, 12.0, 50.0, 80.0]
#     ['小红', 160.0, 13.0, 35.0, 85.0]
#     ['小浪', 170.0, 23.0, 65.0, 100.0]
#6.对Sheet表的列进行操作
#6.1返回指定sheet表的有效列数:sheet.ncols
print('Excel表中数据总列数为:',sheet_1.ncols) #输出:Excel表中数据总列数为: 5
#6.2返回指定列中所有的单元格组成的列表,列表内是键值对:sheet.col(列数) 或者 sheet.col_slice(列数)
print('方法1:',sheet_1.col(1),'方法2:',sheet_1.col_slice(1)) #输出:方法1: [text:'high', number:165.0, number:160.0, number:170.0] 方法2: [text:'high', number:165.0, number:160.0, number:170.0]
#6.3返回指定列的所有单元格组成的列表:sheet.col_values(colx, start_colx=0, end_colx=None)
#6.3.1带列名
print(sheet_1.col_values(0)) #输出:['name', '小明', '小红', '小浪']
#6.3.2不带列名
print(sheet_1.col_values(0,1)) #输出列名:['小明', '小红', '小浪']
print('-'*40)
#7.读取全部表
for i in range(sheet_1.ncols):
    print(sheet_1.col_values(i))
# 输出:
#     ----------------------------------------
#     ['name', '小明', '小红', '小浪']
#     ['high', 165.0, 160.0, 170.0]
#     ['age', 12.0, 13.0, 23.0]
#     ['weight', 50.0, 35.0, 65.0]
#     ['score', 80.0, 85.0, 100.0]

3. xlwt写入Excel

xlwt 模块是Python第三方库,可以将数据写入到 Excel 工作簿中。

目前支持写入 .xls 和 .xlsx 两种格式

3.1 xlwt操作方法汇总

函数格式功能描述
xlwt.Workbook(encoding='utf8')创建Excel表对象
worksheet = workbook.add_sheet('Sheet1')新建Sheet对象
worksheet.write(0, 0, 'Python')写入数据到注定单元格。第一个参数是行数,第二个参数是列数,第三个参数是要写入的字符串或数字
workbook.save('a.xlsx')保存文件,目前已支持写入 .xls 个 .xlsx两种格式
xlwt.Font()设置字体
xlwt.Pattern()设置背景
xlwt.Borders()设置边框
xlwt.Alignment设置对准

3.2 用法举例

3.2.1 xlwt写入单个数据

创建一个Excel表格,并在(0,0)位置写入“Python”,并使用两种方式进行保存文件。

 注意: Office并不能打开 .xlsx 文件,所以需要 WPS 打开。

import xlwt
#1.创建Excel表对象
workbook = xlwt.Workbook(encoding='utf8')
#2.新建Sheet表
worksheet = workbook.add_sheet('Sheet1')
#3.写入数据到指定单元格
worksheet.write(0, 0, 'Python')
#4.保存文件份两种格式
workbook.save('a.xls')
workbook.save('a.xlsx')

运行结果:

3.2.2 xlwt写入多个数据

import xlwt
data = [('小明','20','男'),('小红','21','女'),('小浪','22','男')]
#1.创建Excel表对象
workbook = xlwt.Workbook(encoding='utf8')
#2.新建Sheet表
worksheet = workbook.add_sheet('Sheet1')
#3.自定义列名
col_name = ('姓名','年龄','性别')
#4.将列属性元组col_name写进Sheet1表单中第一行
for i in range(len(col_name)):
    worksheet.write(0,i,col_name[i])
#5.将数据写入Sheet1表单中
for i in range(len(data)):
    In_data = data[i]
    for j in range(len(col_name)):
        worksheet.write(i+1,j,In_data[j])
#6保存文件
workbook.save('b.xls')

运行结果: 

3.2.3 xlwt设置列宽和行高

import xlwt
data = [('小明','20','男'),('小红','21','女'),('小浪','22','男')]
#1.创建Excel表对象
workbook = xlwt.Workbook(encoding='utf8')
#2.新建Sheet表
worksheet = workbook.add_sheet('Sheet1')
#3.自定义列名
col_name = ('姓名','年龄','性别')
#4.将列属性元组col_name写进Sheet1表单中第一行
for i in range(len(col_name)):
    worksheet.write(0,i,col_name[i])
#5.将数据写入Sheet1表单中
for i in range(len(data)):
    In_data = data[i]
    for j in range(len(col_name)):
        worksheet.write(i+1,j,In_data[j])
#6.设置列宽和行高
#6.1设置列宽
for i in range(len(col_name)):
    worksheet.col(i).width = 256*20 # 256为衡量单位,20表示20个字符宽度
    worksheet.row(i+1).height_mismatch = True #设置行高第一步
    worksheet.row(i+1).height = 1600 #设置行高第二步
#6保存文件
workbook.save('b.xls')

运行结果:

3.2.4 xlwt设置单元格风格

def body_style():
    #1.创建一个样式对象,初始化样式style
    style = xlwt.XFStyle() #创建 Style对象
    #2.字体风格设置
    font = xlwt.Font() #创建 Font对象
    font.name = 'Simon' #设置字体类型,宋体
    font.colour_index = 4 #设置字体颜色
    font.height = 20*12 #设置字体大小,12为字号,20为衡量值
    font.bont = True #设置体字加粗
    font.underline = True #下划线
    font.italic = True #斜体字
    #3.背景设置
    pattern = xlwt.Pattern()
    pattern.pattern = xlwt.Pattern.SOLID_PATTERN # 可选参数:NO_PATTERN, SOLID_PATTERN, 或 0x00-0x12之间的数
    pattern.pattern_fore_colour = 4 #设置背景颜色
    #4.边框设置
    borders = xlwt.Borders() #创建边框对象,#.DASHED:虚线;.NO_LINE:没有
    #4.1上下左右添加边框
    borders.left = 1
    borders.right = 1
    borders.top = 1
    borders.bottom = 1
    #4.2设置边框颜色
    borders.left_colour = 2
    borders.right_colour = 2
    borders.top_colour = 2
    borders.bottom_colour = 2
    #5.位置设置
    alignment = xlwt.Alignment()
    alignment.horz = 1 #设置水平位置,0是左对齐,1是居中,2是右对齐
    alignment.wrap = 1 #设置自动换行
    #6.设置好后,全局加入到style中
    style.alignment = alignment
    style.font = font
    style.borders = borders
    return style

应用方法

  • 不带格式的: sheet.write(row, colum, i) 
  • 带格式的: sheet.write(row, colim, i, style)

到此这篇关于使用Python的xlrd和xlwt操作Excel详解的文章就介绍到这了,更多相关Python的xlrd和xlwt操作Excel内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 如何解决pycharm调试报错的问题

    如何解决pycharm调试报错的问题

    在本篇内容里小编给大家整理的是一篇关于如何解决pycharm调试报错的问题文章,需要的朋友们可以学习参考下。
    2020-08-08
  • Python数据可视化plt.savefig如何将图片存入固定路径

    Python数据可视化plt.savefig如何将图片存入固定路径

    这篇文章主要介绍了Python数据可视化plt.savefig如何将图片存入固定路径问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Python从Excel中读取日期一列的方法

    Python从Excel中读取日期一列的方法

    今天小编就为大家分享一篇Python从Excel中读取日期一列的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • 基于python的图片修复程序(实现水印去除)

    基于python的图片修复程序(实现水印去除)

    这篇文章主要给大家介绍了关于python图片修复程序的相关资料,可以用于实现图片中水印去除,主要利用的是OpenCV这个框架实现的,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧
    2018-06-06
  • python3学生名片管理v2.0版

    python3学生名片管理v2.0版

    这篇文章主要为大家详细介绍了python3学生名片管理v2.0版,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • Flask框架单例模式实现方法详解

    Flask框架单例模式实现方法详解

    这篇文章主要介绍了Flask框架单例模式实现方法,结合实例形式分析了flask框架单例模式的4种实现方式与相关操作技巧,需要的朋友可以参考下
    2019-07-07
  • Python正则表达式中group与groups的用法详解

    Python正则表达式中group与groups的用法详解

    本文主要介绍了Python正则表达式中group与groups的用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • LyScript获取上一条与下一条汇编指令的方法详解

    LyScript获取上一条与下一条汇编指令的方法详解

    LyScript 插件默认并没有提供上一条与下一条汇编指令的获取功能,当然你可以使用LyScriptTools工具包直接调用内置命令得到,本文就为大家详细讲讲如何实现
    2022-07-07
  • Python中str is not callable问题详解及解决办法

    Python中str is not callable问题详解及解决办法

    这篇文章主要介绍了Python中str is not callable问题详解及解决办法的相关资料,需要的朋友可以参考下
    2017-02-02
  • 教你用Python写一个水果忍者小游戏

    教你用Python写一个水果忍者小游戏

    水果忍者游戏,又称切水果游戏,玩法简单,水果忍者游戏在儿童中很受欢迎,下面这篇文章主要给大家介绍了关于如何利用Python写一个水果忍者小游戏的相关资料,需要的朋友可以参考下
    2022-03-03

最新评论