广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python办公自动化之excel的操作
  • 283
分享到

python办公自动化之excel的操作

python办公自动化pythonexcel自动化 2022-06-02 22:06:29 283人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录准备xlrd 读取 excelxlwt 写入 Excel进阶用法最后准备 使用 python 操作 Excel 文件,常见的方式如下: xlrd / xlwt openpyxl pan

目录
  • 准备
  • xlrd 读取 excel
  • xlwt 写入 Excel
  • 进阶用法
  • 最后

准备

使用 python 操作 Excel 文件,常见的方式如下:

  • xlrd / xlwt
  • openpyxl
  • pandas
  • xlsxwriter
  • xlwings
  • pywin32

xlrd 和 xlwt 是操作 Excel 文件最多的两个依赖库

其中,

xlrd 负责读取 Excel 文件,xlwt 可以写入数据到 Excel 文件

我们安装这两个依赖库


# 安装依赖库
pip3 install xlrd 
pip3 install xlwt 

xlrd 读取 Excel

使用 xlrd 中的 open_workbook(filepath) 打开本地一个 Excel 文件


import xlrd

# 打开文件,返回一个工作簿对象
wb = xlrd.open_workbook(file_path)

工作簿对象的 nsheets 属性获取 Sheet 数目,sheet_names() 方法返回所有 Sheet 名称的列表


​# 统计sheet数量
sheets_num, sheets_names = wb.nsheets, wb.sheet_names()
print('sheet数量一共有:', sheets_num)
print('sheet名称分别为:', sheets_names)

筛选出工作簿中的某一个 Sheet 有 2 种方式,分别是:

  • 通过 Sheet 名称
  • 使用位置索引,从 0 开始

# 获取某一个sheet
# 通过名称或者索引获取
sheet = wb.sheet_by_index(0)

# sheet = wb.sheet_by_name('第一个Sheet')
print(sheet)

每一个 sheet 对象都可以利用 name、nrows、ncols 获取 Sheet 名称、行数量、列数量

另外

row_values(index)、col_values(index) 分别用于获取某一行或某一列的数据列表


# 获取某一个sheet中,包含的行数量、列数量
sheet_name, sheet_row_count, sheet_column_count = sheet.name, sheet.nrows, sheet.ncols
print('当前sheet名称为:', sheet_name, ",一共有:", sheet_row_count, "行;有:", sheet_column_count, "列")

# 单独获取某一行数据,索引从0开始
# 比如:获取第2行数据
row_datas = sheet.row_values(1)
print('第2行数据为:', row_datas)

# 单独获取某一列数据,索引从0开始
# 比如:获取第二列数据
column_datas = sheet.col_values(1)
print('第2列数据为:', column_datas)

单元格可以通过行索引、列索引,调用 cell(row_index,column_index) 函数获取

需要注意的是,行索引和列索引都是从 0 开始,即:0 代表第一行

在 xlrd 中,单元格的数据类型包含 6 种,用 ctype 属性对应关系如下:

  • 0  --  空(empty)
  • 1  --  字符串(string)
  • 2  --  数字(number)
  • 3  --  date(日期)
  • 4  --  boolean(布尔值)
  • 5  --  error(错误)

# 获取某一个单元格的数据
# 比如:获取第2行第1列的单元格的数据
one_cell = sheet.cell(1, 0)
# 单元格的值
cell_value = one_cell.value
print("单元格的值为:", cell_value)
# 单元格数据类型
cell_type = one_cell.
print("单元格数据类型为:", cell_type)

最后,如果要获取当前 Sheet 所有单元格中的数据,可以通过遍历所有行、列来操作


# 获取所有单元格的值
print('表格中所有数据如下:')
for r in range(sheet.nrows):
    for i in range(sheet.ncols):
        print(sheet.cell(r, i).value)

xlwt 写入 Excel

如果想实现将数据写入到 Excel 中,xlwt 就很方便了

首先,使用 xlwt 的 Workbook() 方法创建一个工作簿对象

然后,使用工作簿对象的 add_sheet(sheetname) 方法新增 Sheet


import xlwt
​
sheetname = '第一个Sheet'

# 创建一个工作簿对象
wb = xlwt.Workbook()

# 添加Sheet,通过sheet名称
sheet = wb.add_sheet(sheetname)

接着,通过 sheet 对象的 write() 方法,按照行索引和列索引,将数据写入到对应单元格中去


# 将数据写入到Sheet中
# 3个参数分别是:行索引(从0开始)、列索引(从0开始)、单元格的值
# 第一行第一列,写入一个数据
# 写入标题
for index, title in enumerate(self.titles):
    sheet.write(0, index, title)

# 写入值
for index_row, row_values in enumerate(self.values):
    for index_column, column_value in enumerate(row_values):
        sheet.write(index_row + 1, index_column, column_value)

需要注意的是,最后必须调用工作簿的 save(filepath),才能在本地生成 Excel 文件


​# 保存文件
# 最后保存文件即可
wb.save(filepath)

进阶用法

接下来,聊聊几个常用的进阶用法

获取所有可见的 Sheet

在读取 Sheet 数据时,经常需要过滤隐藏的 Sheet

当 sheet 对象的 visibility 属性值为 0 时,代表此 Sheet 在工作簿中是显示的;否则被隐藏了


def get_all_visiable_sheets(self, wb):
    """
    获取所有可见的sheet
    :param wb:
    :return:
    """
    return list(filter(lambda item: item.visibility == 0, wb.sheets()))

# 1、获取所有可看见的sheet
sheet_visiable = self.get_all_visiable_sheets(wb)
print('所有可见的sheet包含:', sheet_visiable)

获取 Sheet 可见行或列

某一个 Sheet 中,可能存在部分行、列被隐藏了


def get_all_visiable_rows(self, sheet):
    """
    获取某一个sheet中,可见的行
    :param sheet:
    :return:
    """
    result = [index for index in range(sheet.nrows) if sheet.rowinfo_map[index].hidden == 0]
    return result

def get_all_visiable_columns(self, sheet):
    """
    获取某一个sheet中,可见的列
    :param sheet:
    :return:
    """
    result = [index for index in range(sheet.ncols) if sheet.colinfo_map[index].hidden == 0]
    return result

获取单元格的样式

以获取单元格字体颜色和背景为例


def get_cell_bg_color(self, wb, sheet, row_index, col_index):
    """
    获取某一个单元格的背景颜色
    :param wb:
    :param sheet:
    :param row_index:
    :param col_index:
    :return:
    """
    xfx = sheet.cell_xf_index(row_index, col_index)
    xf = wb.xf_list[xfx]

    # 字体颜色
    font_color = wb.font_list[xf.font_index].colour_index
    # 背景颜色
    bg_color = xf.background.pattern_colour_index

    return font_color, bg_color

需要注意的是,使用 xlrd 读取单元格的样式,打开工作簿的时候需要显式定义 fORMatting_info = True,否则会抛出异常


# 注意:必须设置formatting_info=True,才能正常获取属性
wb = xlrd.open_workbook(file_path, formatting_info=True)
sheet = wb.sheet_by_index(0)

最后

搭配使用 xlrd、xlwt,基本上能完成大部分的工作,对于一些复杂的功能,比如:复制、分割、筛选等功能,可以用上 xlutils 这个依赖库

需要指出的是,这个组合对 xlsx 的兼容性不太好;如果需要操作 xlsx 文件,需要先转为 xls,然后再进行

代码地址:https://GitHub.com/xingag/test_auto/tree/master/office_auto/Excel

以上就是Python办公自动化之excel的操作的详细内容,更多关于python excel自动化的资料请关注编程网其它相关文章!

--结束END--

本文标题: python办公自动化之excel的操作

本文链接: https://www.lsjlt.com/news/10735.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python办公自动化之excel的操作
    目录准备xlrd 读取 Excelxlwt 写入 Excel进阶用法最后准备 使用 Python 操作 Excel 文件,常见的方式如下: xlrd / xlwt openpyxl Pan...
    99+
    2022-06-02
    python 办公自动化 python excel自动化
  • Python办公自动化之Excel(中)
    目录准备读取数据写入数据修改数据进阶用法最后准备 首先,我们需要安装依赖包 # 安装依赖包 pip3 install openpyxl 读取数据 使用 openpyxl 中的&...
    99+
    2022-06-02
    python 办公自动化 python 自动化excel
  • Python办公自动化之Excel介绍
    目录前言一、创建、打开excel文件二、工作表中的数据操作写数据读数据删除数据三、csv文件转xlsx前言 Python处理Excel的包是openpyxl,其支持操作的文件类型为:...
    99+
    2022-11-12
  • 如何实现Python办公自动化之Excel
    本篇内容介绍了“如何实现Python办公自动化之Excel”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!准备使用 Python 操作 Exc...
    99+
    2023-06-16
  • Python自动化办公之Excel数据的写入
    目录Excel 写入 - xlsxwriterxlsxwriter 的安装xlsxwriter 常用函数介绍初始化 excel 对象获取工作簿小实战上一章节我们学习了 excel 的...
    99+
    2022-11-11
  • Python自动化办公之Excel拆分与自动发邮件
    目录需求需求解析代码实现需求 需要向大约 500 名用户发送带有 Excel 附件的电子邮件,同时必须按用户从主 Excel 文件中拆分数据以创建他们自己的特定文件,然后将该文件通过...
    99+
    2022-11-13
  • Python自动化办公之Excel拆分并自动发邮件
    需求需要向大约 500 名用户发送带有 Excel 附件的电子邮件,同时必须按用户从主 Excel 文件中拆分数据以创建他们自己的特定文件,然后将该文件通过电子邮件发送给正确的用户需求解析大致的流程就是上图,先拆分 Excel 数据,提取出...
    99+
    2023-05-14
    Python Excel 邮件
  • Python自动化办公之Excel数据怎么写入
    这篇文章主要介绍了Python自动化办公之Excel数据怎么写入的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python自动化办公之Excel数据怎么写入文章都会有所收获,下面我们一起来看看吧。Excel 写...
    99+
    2023-06-30
  • Python自动化办公之读取Excel数据的实现
    目录前言Excel 读取 - xlrd常用函数介绍获取 excel 对象获取工作簿读取工作簿内容前言 之前的章节我们学习了 python 关于 word 文件相关操作的知识点,从今天...
    99+
    2022-11-11
  • Python办公自动化Excel怎么实现
    这篇文章主要介绍“Python办公自动化Excel怎么实现”,在日常操作中,相信很多人在Python办公自动化Excel怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python办公自动化Excel怎...
    99+
    2023-06-22
  • Python 自动化处理Excel和Word实现自动办公
    今天我来分享一些Python办公自动化的方法,欢迎收藏学习,喜欢点赞支持,欢迎畅聊。 Openpyxl Openpyxl 可以说是 Python 中最通用的工具模块了,它使与 Exc...
    99+
    2022-11-12
  • Python办公自动化PPT批量转换操作
    目录python-pptx 模块的安装读取 PPT写入 PPT添加一张幻灯片为幻灯片添加内容获取幻灯片中的形状:添加自动形状占位符访问占位符将内容插入占位符如果要插入表格:如果要插入...
    99+
    2022-11-12
  • 关于Python自动化操作Excel
    目录一、Python 操作 Excel 的常用库1. 使用第三方库 openpyxl2. 使用第三方库 xlrd 和 xlwt3. 使用 pandas 库二、Python 操作 ex...
    99+
    2023-05-15
    Python自动化 Python操作Excel Python自动化Excel
  • Python自动化办公之Word转PDF的实现
    目录pdf 工具包 - pdfkithtml 转 pdf网址 转 pdf字符串生成pdf结合 pydocx 将 word 转 html 再转 pdf该章节我们将要学习如何将 word...
    99+
    2022-11-11
  • Python自动化办公之PPT段落的使用
    目录PPT 段落的使用获取段落段落添加内容段落中定义多个段落自定义段落上一章节我们学习了基础的定义 PPT 的方法以及每一页中的样式,这节课我们将真正的在 PPT 中添加内容,学习一...
    99+
    2022-11-11
  • Python自动化办公之手机号提取
    关于手机号码的提取,其实真正有用的部分就是re模块提供的正则表达式。使用正则表达式就能轻松地匹配到手机号码,由于功能比较简单这次并没有采用UI界面的方式来实现该功能。 第一步:写一...
    99+
    2022-11-11
  • Python自动化办公之创建PPT文件
    目录PPT 的创建python-pptx 的安装生成一个空的 PPTpython-pptx 的9种布局从这一章开始,将进入 PPT 文件的自动化操作。关于 PPT 自动化操作所要实现...
    99+
    2022-11-11
  • python自动化办公之批量修改文件名实操
    目录1. 程序背景2. 程序要求3. 解决思路4. 完整代码5. 运行结果6. 总结1. 程序背景 之前做文件批量移动的时候不小心多加了一个pdf后缀,但问题不大,几行代码就可以搞定...
    99+
    2022-11-11
  • 十个Python办公自动化操作分别是怎样的
    十个Python办公自动化操作分别是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 一、OS模块相关1.遍历文件夹批量操作的前提就是对文件夹进行遍历,使用o...
    99+
    2023-06-15
  • Python办公自动化Word转Excel文件批量处理
    目录前言首先使用Python将Word文件导入row和cell解析所需内容内层解析循环前言 大家好,今天有一个公务员的小伙伴委托我给他帮个忙,大概是有这样一份Word(由于...
    99+
    2022-11-11
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作