利用python自动化办公excel实用指南

2024-04-09 1678阅读

大家好。今天给大家分享如何利用python来实现自动化办公操作excel文件进行各种样式展示,并自动发送文件给"老板"的邮箱,附带详细的python代码,干货满满~ 本文涉及的python库版本信息如下:

!pip install pyjanitor==0.26.0
!pip install plottable==0.1.5 
!pip install mpl_font==1.1.0
!pip install  xlsxwriter==3.2.0
!pip install  openpyxl==3.1.2

本文目录

  • 背景介绍
  • excel相关的背景知识
  • 对单个单元格进行操作
  • 将2维list数组插入excel中
  • 设置单元格样式
  • 插入图表到excel文件中
  • 插入超链接在单元格中
  • 显示迷你图
  • 设置单元格保护防止修改
  • 显示色阶图
  • 显示条件格式图
  • 利用calamine读取excel大文件数据性能测试
  • 将生成的excel文件发送到’老板’的邮箱
    • 以163为例,打开邮箱设置对应的smtp服务
    • 编写python代码将excel文件发送到指定邮箱
    • 参考文档

      excel相关的背景知识

      Excel中常见的文件格式(xls, xlsx, xlsm, xlsb, xla, xlam等等);在操作excel类常见的有三大数据对象,分别如下:

      • WorkBook:工作簿对象
      • Sheet:表单对象
      • Cell:表格对象 本文主要使用XlsxWriter库(github.com/jmcnamara/X…%25E5%2592%258Copenpyxl%25E5%25BA%2593(https%3A%2F%2Fopenpyxl.readthedocs.io%2Fen%2Fstable%2Ftutorial.html)%25E6%259D%25A5%25E5%25AE%259E%25E7%258E%25B0%25E8%2587%25AA%25E5%258A%25A8%25E5%258C%2596%25E6%2593%258D%25E4%25BD%259Cexcel%25E6%2596%2587%25E4%25BB%25B6%25E6%2595%25B0%25E6%258D%25AE%25E5%2592%258C%25E6%25A0%25B7%25E5%25BC%258F%25E3%2580%2582%25E4%25B8%258B%25E9%259D%25A2%25E8%25BF%259B%25E5%2585%25A5%25E6%2588%2591%25E4%25BB%25AC%25E7%259A%2584%25E6%25AD%25A3%25E9%25A2%2598 “https://github.com/jmcnamara/XlsxWriter)%E5%92%8Copenpyxl%E5%BA%93(https://openpyxl.readthedocs.io/en/stable/tutorial.html)%E6%9D%A5%E5%AE%9E%E7%8E%B0%E8%87%AA%E5%8A%A8%E5%8C%96%E6%93%8D%E4%BD%9Cexcel%E6%96%87%E4%BB%B6%E6%95%B0%E6%8D%AE%E5%92%8C%E6%A0%B7%E5%BC%8F%E3%80%82%E4%B8%8B%E9%9D%A2%E8%BF%9B%E5%85%A5%E6%88%91%E4%BB%AC%E7%9A%84%E6%AD%A3%E9%A2%98”)~

        对单个单元格进行操作

        # 导入xlsxwriter库,用于创建Excel文件
        import xlsxwriter
        # 创建一个名为"demo.xlsx"的工作簿(即Excel文件)
        workbook = xlsxwriter.Workbook("demo.xlsx")
        # 在工作簿中添加一个名为'sheet1'的工作表
        worksheet = workbook.add_worksheet(name='sheet1')
        # 在B1单元格写入数值500
        worksheet.write("B1", 500)
        # 在第0行第1列等价于B1单元格写入数值500
        worksheet.write(0, 1, 500)
        # 在B2单元格写入公式,计算B1单元格数值的平方
        worksheet.write_formula("B2", "{=SUM(B1*B1)}")
        # 设置A列的宽度为40
        worksheet.set_column("A:A", 40)
        # 创建两个格式对象,分别设置缩进级别为1和2
        indent1 = workbook.add_format({"indent": 1})  # 第1级缩进格式
        indent2 = workbook.add_format({"indent": 2})  # 第2级缩进格式
        # 使用不同的缩进格式在A1和A2单元格写入文本,并设置相应的缩进
        worksheet.write("A1", "This text is indented 1 level", indent1)  # A1单元格内容缩进1级
        worksheet.write("A2", "This text is indented 2 levels", indent2)  # A2单元格内容缩进2级
        # 关闭并保存工作簿
        workbook.close()
        

        利用python自动化办公excel实用指南

        将2维list数组插入excel中

        # 定义表格的表头信息以及相关数据
        headings = ["Number", "Batch 1", "Batch 2"]  # 表头列表
        data = [                      # 数据列表
            [2, 3, 4, 5, 6, 7],       # 第一行:编号
            [40, 40, 50, 30, 25, 50], # 第二行:批次1的数据
            [30, 25, 30, 10, 5, 10],   # 第三行:批次2的数据
        ]
        # 创建一个加粗格式样式以突出显示表头
        bold = workbook.add_format({"bold": 1})
        # 将表头信息写入到第一行(从A1开始)
        worksheet.write_row("A1", headings, bold)
        # 将数据按列依次写入工作表
        worksheet.write_column("A2", data[0])  # 写入编号数据到A列
        worksheet.write_column("B2", data[1])  # 写入批次1的数据到B列
        worksheet.write_column("C2", data[2])  # 写入批次2的数据到C列
        # 关闭并保存工作簿
        workbook.close()
        

        利用python自动化办公excel实用指南

        设置单元格样式

        # 创建三种不同对角线样式的格式:
        format1 = workbook.add_format({"diag_type": 1}) # - format1: 对角线类型1
        format2 = workbook.add_format({"diag_type": 2}) # - format2: 对角线类型2
        format3 = workbook.add_format({"diag_type": 3}) # - format3: 对角线类型3
        # 创建一个带有红色对角线、对角线类型为3且边框线型为7的格式
        format4 = workbook.add_format({
            "diag_type": 3,
            "diag_border": 7,
            "diag_color": "red",
        })
        # 使用不同对角线样式写入单元格内容
        worksheet.write("B1", "Text", format1)  # 使用format1样式写入
        worksheet.write("B2", "Text", format2)  # 使用format2样式写入
        worksheet.write("B3", "Text", format3)  # 使用format3样式写入
        worksheet.write("B4", "Text", format4)  # 使用format4样式写入
        # 创建一个居中并对齐、加粗的单元格格式
        centered_format = workbook.add_format({"align": 'center', 'valign': 'vcenter', "bold": True})
        # 使用居中对齐格式写入单元格内容
        worksheet.write("A2", "Text", centered_format) 
        # 最后关闭并保存工作簿
        workbook.close()
        

        利用python自动化办公excel实用指南

        插入图表到excel文件中

        # 在工作表的A1单元格嵌入图片"demo.png"
        # 注意:此操作默认会按照图片原始尺寸插入
        worksheet.insert_image("A1", "demo.png")
        # 注:若要实现图片自适应单元格大小,可能需要在插入图片时直接指定宽度和高度。
        worksheet.insert_image("A1", "demo.png", {"x_scale": 0.5, "y_scale": 0.5})
        # 最后,关闭并保存工作簿
        workbook.close()
        

        利用python自动化办公excel实用指南

        插入超链接在单元格中

        # 设置第一列(A列)的宽度为30
        worksheet.set_column("A:A", 30)
        # 创建一个样本格式:红色字体、加粗、下划线、字号为12
        red_format = workbook.add_format({
            "font_color": "red",  # 文字颜色设为红色
            "bold": 1,            # 字体加粗
            "underline": 1,       # 文字下划线
            "font_size": 12,      # 字号为12
        })
        # 写入一些超链接
        # A1单元格包含一个隐式格式的超链接至 http://www.python.org/
        worksheet.write_url("A1", "http://www.python.org/")
        # A3单元格包含一个显示文本为"Python Home"的超链接至 http://www.python.org/
        worksheet.write_url("A3", "http://www.python.org/", string="Python Home")
        # A5单元格包含一个提示信息为"Click here"的超链接至 http://www.python.org/
        worksheet.write_url("A5", "http://www.python.org/", tip="Click here")
        # A7单元格包含一个应用了红色格式的超链接至 http://www.python.org/
        worksheet.write_url("A7", "http://www.python.org/", red_format)
        # A9单元格包含一个电子邮件链接至jmcnamara@cpan.org,显示文本为"Mail me"
        worksheet.write_url("A9", "mailto:jmcnamara@cpan.org", string="Mail me")
        # 最后,关闭并保存工作簿
        workbook.close()
        

        利用python自动化办公excel实用指南

        显示迷你图

        # 示例数据集,每个列表代表一行数据
        data = [
            [-2, 2, 3, -1, 0],  # 第一行数据
            [30, 20, 33, 20, 15],  # 第二行数据
            [1, -1, -1, 1, -1],  # 第三行数据
        ]
        # 将示例数据写入到工作表中
        worksheet.write_row("A1", data[0])  # 写入第一行数据
        worksheet.write_row("A2", data[1])  # 写入第二行数据
        worksheet.write_row("A3", data[2])  # 写入第三行数据
        # 在F1单元格添加一条带标记点的默认折线型sparkline图表(基于A1到E1区域的数据)
        worksheet.add_sparkline("F1", {"range": "Sheet1!A1:E1", "markers": True})
        # 在F2单元格添加一条柱状sparkline图表,采用非默认风格(基于A2到E2区域的数据)
        # 同时显示第一个点和最后一个点
        worksheet.add_sparkline("F2", {
            "range": "Sheet1!A2:E2", 
            "type": "column", 
            "style": 12, 
            "first_point": True, 
            "last_point": True
        })
        # 在F3单元格添加一条胜败(Win/Loss)类型的sparkline图表(基于A3到E3区域的数据)
        # 高亮显示负值区域,并显示最高点和最低点
        worksheet.add_sparkline("F3", {
            "range": "Sheet1!A3:E3", 
            "type": "win_loss", 
            "negative_points": True,
            "high_point": True, 
            "low_point": True
        })
        # 最后,关闭并保存工作簿
        workbook.close()
        

        利用python自动化办公excel实用指南

        设置单元格保护防止修改

        # 创建两种具有保护属性的单元格格式:
        # - unlocked: 不锁定的格式,可以编辑
        # - hidden: 隐藏格式,公式不可见
        unlocked = workbook.add_format({"locked": False})  # 创建不锁定的格式
        hidden = workbook.add_format({"hidden": True})     # 创建隐藏公式的格式
        # 设置A列的宽度为40,以便更好地展示文本
        worksheet.set_column("A:A", 40)
        # 开启工作表保护模式
        worksheet.protect()  # 默认情况下所有单元格都会被锁定
        # 分别写入锁定、解锁及隐藏公式的单元格内容
        worksheet.write("A1", "Cell B1 is locked. It cannot be edited.")  # B1默认锁定
        worksheet.write("A2", "Cell B2 is unlocked. It can be edited.")
        worksheet.write("A3", "Cell B3 is hidden. The formula isn't visible.")
        # 写入具有不同保护属性的公式
        worksheet.write_formula("B1", "=1+2")  # 默认锁定,无法编辑公式
        worksheet.write_formula("B2", "=1+2", unlocked)  # 公式所在单元格已解锁,可以编辑
        worksheet.write_formula("B3", "=1+2", hidden)  # 公式所在单元格被隐藏,公式不可见
        # 关闭并保存工作簿
        workbook.close()
        

        利用python自动化办公excel实用指南

        显示色阶图

        这里使用openpyxl库来实现色阶图输出到excel文件中。

        from openpyxl import Workbook
        from openpyxl.formatting.rule import ColorScaleRule
        # 创建一个新的工作簿
        workbook = Workbook()
        # 选择或创建一个工作表
        worksheet = workbook.active
        worksheet.title = 'Color Scale Test'
        # 假设我们有以下一列测试数据
        data = [30, 60, 90, 120, 150, 180, 210, 240, 270, 300]
        # 将数据写入单元格
        for row, value in enumerate(data, 1):
            ws.cell(row=row, column=1, value=value)
        # 定义色阶规则
        rule = ColorScaleRule(start_type='min', start_color='FF0000',
                              mid_type='percentile', mid_value=50, mid_color='FFFF00',
                              end_type='max', end_color='00FF00')
        # 应用色阶到数据所在列 (这里是第一列A)
        worksheet.conditional_formatting.add('A1:A{}'.format(len(data)), rule)
        # 保存Excel文件
        wb.save('demo.xlsx')
        

        利用python自动化办公excel实用指南

        显示条件格式图

        这里使用openpyxl库来实现条件图输出到excel文件中。

        # 导入所需库
        from openpyxl import Workbook
        from openpyxl.formatting.rule import ColorScaleRule, DataBarRule
        from openpyxl.styles.colors import Color
        # 1. 创建一个新的Excel工作簿
        workbook = Workbook()
        # 2. 选择或获取工作簿的第一个工作表,并设置其标题
        worksheet = workbook.active
        worksheet.title = 'Color Scale Test'
        # 3. 假设有如下一列测试数据
        data = [30, 60, 90, 120, 150, 180, 210, 240, 270, 300]
        # 4. 将测试数据写入Excel工作表的A列,从第二行开始(Excel表格的第一行默认为表头)
        for row_index, value in enumerate(data, 1):  # 使用enumerate()函数,索引从1开始
            worksheet.cell(row=row_index, column=1, value=value)  # 设置单元格内容
        # 5. 定义数据所在的区域,即A2到A10这一列(由于enumerate()从1开始,所以此处是A1到A10)
        data_range = worksheet['A1:A10']
        # 6. 创建一个DataBarRule实例,用于在指定范围内应用数据条(颜色条)条件格式
        rule = DataBarRule(
            start_type='min',  # 数据条的起点基于该列的最小值
            end_type='max',   # 数据条的终点基于该列的最大值
            color=Color(rgb='00FF00'),  # 数据条的颜色为绿色
            showValue=True,           # 显示数据条旁边的实际数值
            minLength=None,            # 数据条的最小长度将由程序自动计算,保持默认值
            maxLength=None             # 数据条的最大长度将由程序自动计算,保持默认值
        )
        # 7. 将数据条条件格式规则应用到指定的单元格区域
        worksheet.conditional_formatting.add('A1:A10', rule)  # 将规则应用到A1到A10这一列
        # 8. 保存已应用条件格式的工作簿至Excel文件
        workbook.save('demo.xlsx')  # 文件名:demo.xlsx
        

        利用python自动化办公excel实用指南

        利用calamine读取excel大文件数据性能测试

        # 生成一个50000行、5列的随机数二维数组
        data = np.random.random(size=(50000, 5))
        # 将生成的随机数组转换为Pandas DataFrame,这是一个表格型数据结构,便于进行数据分析和操作
        pf = pd.DataFrame(data)
        # 利用openpyxl引擎写入excel文件
        %timeit pf.to_excel("demo.xlsx",index=False, engine= 'openpyxl')
        # 4.33 s ± 16.1 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
        # 利用calamine引擎读excel文件
        %timeit pd.read_excel("demo.xlsx", engine= 'calamine')
        # 344 ms ± 1.76 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
        # 利用openpyxl引擎读excel文件
        %timeit pd.read_excel("demo.xlsx", engine= 'openpyxl')
        # 3.33 s ± 26.7 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
        

        通过实验看出: 在5万行*5数据中,通过calamine引擎读excel文件比传统openpyxl快9倍多。

        将生成的excel文件发送到’老板’的邮箱

        以163为例,打开邮箱设置对应的smtp服务

        利用python自动化办公excel实用指南 在开启的同时会弹出‘授权密码’,下面会用到。

        编写python代码将excel文件发送到指定邮箱

        import smtplib
        from email.mime.multipart import MIMEMultipart
        from email.mime.base import MIMEBase
        from email.mime.text import MIMEText
        from email.utils import COMMASPACE
        from email import encoders
        import os
        # 配置SMTP服务器和登录信息
        smtp_server = 'smtp.163.com' #使用163邮箱作为发送服务器,也可以使用其他邮箱
        smtp_port = 25 #端口号
        username = 'your_email@163.com' #你的163邮箱,也可以使用其他邮箱
        password = 'xxxxx' #你邮箱对应smtp的授权密码
        sender_email = 'your_email@163.com'
        receiver_emails = ['recipient1@qq.com',]  # 收件人列表
        # 创建MIMEMultipart对象以便容纳多部分邮件内容
        msg = MIMEMultipart()
        msg['From'] = sender_email
        msg['To'] = COMMASPACE.join(receiver_emails)
        msg['Subject'] = '测试文件'
        # 创建邮件正文
        body = '这是今天的测试文档.'
        msg.attach(MIMEText(body))
        # 打开并读取Excel文件
        filename = 'demo.xlsx'  # 要发送的Excel文件路径
        with open(filename, 'rb') as f:
            attachment = MIMEBase('application', 'vnd.openxmlformats-officedocument.spreadsheetml.sheet')
            attachment.set_payload(f.read())
            encoders.encode_base64(attachment)  # 对附件内容进行base64编码
            attachment.add_header('Content-Disposition', f'attachment; filename="{os.path.basename(filename)}"')
            msg.attach(attachment)
        # 连接SMTP服务器并发送邮件
        try:
            server = smtplib.SMTP(smtp_server, smtp_port)
            server.starttls()  # 如果使用的是非安全端口,需要启用TLS加密
            server.login(username, password)
            server.sendmail(sender_email, receiver_emails, msg.as_string())
            server.quit()
            print("Email sent successfully.")
        except Exception as e:
            print("Error occurred while sending email:", e)
        

        效果展示 利用python自动化办公excel实用指南

        关于Python学习指南

        学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

        包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!

        👉Python所有方向的学习路线👈

        Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)

        利用python自动化办公excel实用指南

        👉Python学习视频600合集👈

        观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

        利用python自动化办公excel实用指南

        温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

        👉Python70个实战练手案例&源码👈

        光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

        利用python自动化办公excel实用指南

        👉Python大厂面试资料👈

        我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

        利用python自动化办公excel实用指南

        利用python自动化办公excel实用指南

        👉Python副业兼职路线&方法👈

        学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。

        利用python自动化办公excel实用指南

        大家好。今天给大家分享如何利用python来实现自动化办公操作excel文件进行各种样式展示,并自动发送文件给"老板"的邮箱,附带详细的python代码,干货满满~ 本文涉及的python库版本信息如下:

        !pip install pyjanitor==0.26.0
        !pip install plottable==0.1.5 
        !pip install mpl_font==1.1.0
        !pip install  xlsxwriter==3.2.0
        !pip install  openpyxl==3.1.2
        

        本文目录

        • 背景介绍
        • excel相关的背景知识
        • 对单个单元格进行操作
        • 将2维list数组插入excel中
        • 设置单元格样式
        • 插入图表到excel文件中
        • 插入超链接在单元格中
        • 显示迷你图
        • 设置单元格保护防止修改
        • 显示色阶图
        • 显示条件格式图
        • 利用calamine读取excel大文件数据性能测试
        • 将生成的excel文件发送到’老板’的邮箱
          • 以163为例,打开邮箱设置对应的smtp服务
          • 编写python代码将excel文件发送到指定邮箱
          • 参考文档

            excel相关的背景知识

            Excel中常见的文件格式(xls, xlsx, xlsm, xlsb, xla, xlam等等);在操作excel类常见的有三大数据对象,分别如下:

            • WorkBook:工作簿对象
            • Sheet:表单对象
            • Cell:表格对象 本文主要使用XlsxWriter库(github.com/jmcnamara/X…%25E5%2592%258Copenpyxl%25E5%25BA%2593(https%3A%2F%2Fopenpyxl.readthedocs.io%2Fen%2Fstable%2Ftutorial.html)%25E6%259D%25A5%25E5%25AE%259E%25E7%258E%25B0%25E8%2587%25AA%25E5%258A%25A8%25E5%258C%2596%25E6%2593%258D%25E4%25BD%259Cexcel%25E6%2596%2587%25E4%25BB%25B6%25E6%2595%25B0%25E6%258D%25AE%25E5%2592%258C%25E6%25A0%25B7%25E5%25BC%258F%25E3%2580%2582%25E4%25B8%258B%25E9%259D%25A2%25E8%25BF%259B%25E5%2585%25A5%25E6%2588%2591%25E4%25BB%25AC%25E7%259A%2584%25E6%25AD%25A3%25E9%25A2%2598 “https://github.com/jmcnamara/XlsxWriter)%E5%92%8Copenpyxl%E5%BA%93(https://openpyxl.readthedocs.io/en/stable/tutorial.html)%E6%9D%A5%E5%AE%9E%E7%8E%B0%E8%87%AA%E5%8A%A8%E5%8C%96%E6%93%8D%E4%BD%9Cexcel%E6%96%87%E4%BB%B6%E6%95%B0%E6%8D%AE%E5%92%8C%E6%A0%B7%E5%BC%8F%E3%80%82%E4%B8%8B%E9%9D%A2%E8%BF%9B%E5%85%A5%E6%88%91%E4%BB%AC%E7%9A%84%E6%AD%A3%E9%A2%98”)~

              对单个单元格进行操作

              # 导入xlsxwriter库,用于创建Excel文件
              import xlsxwriter
              # 创建一个名为"demo.xlsx"的工作簿(即Excel文件)
              workbook = xlsxwriter.Workbook("demo.xlsx")
              # 在工作簿中添加一个名为'sheet1'的工作表
              worksheet = workbook.add_worksheet(name='sheet1')
              # 在B1单元格写入数值500
              worksheet.write("B1", 500)
              # 在第0行第1列等价于B1单元格写入数值500
              worksheet.write(0, 1, 500)
              # 在B2单元格写入公式,计算B1单元格数值的平方
              worksheet.write_formula("B2", "{=SUM(B1*B1)}")
              # 设置A列的宽度为40
              worksheet.set_column("A:A", 40)
              # 创建两个格式对象,分别设置缩进级别为1和2
              indent1 = workbook.add_format({"indent": 1})  # 第1级缩进格式
              indent2 = workbook.add_format({"indent": 2})  # 第2级缩进格式
              # 使用不同的缩进格式在A1和A2单元格写入文本,并设置相应的缩进
              worksheet.write("A1", "This text is indented 1 level", indent1)  # A1单元格内容缩进1级
              worksheet.write("A2", "This text is indented 2 levels", indent2)  # A2单元格内容缩进2级
              # 关闭并保存工作簿
              workbook.close()
              

              利用python自动化办公excel实用指南

              将2维list数组插入excel中

              # 定义表格的表头信息以及相关数据
              headings = ["Number", "Batch 1", "Batch 2"]  # 表头列表
              data = [                      # 数据列表
                  [2, 3, 4, 5, 6, 7],       # 第一行:编号
                  [40, 40, 50, 30, 25, 50], # 第二行:批次1的数据
                  [30, 25, 30, 10, 5, 10],   # 第三行:批次2的数据
              ]
              # 创建一个加粗格式样式以突出显示表头
              bold = workbook.add_format({"bold": 1})
              # 将表头信息写入到第一行(从A1开始)
              worksheet.write_row("A1", headings, bold)
              # 将数据按列依次写入工作表
              worksheet.write_column("A2", data[0])  # 写入编号数据到A列
              worksheet.write_column("B2", data[1])  # 写入批次1的数据到B列
              worksheet.write_column("C2", data[2])  # 写入批次2的数据到C列
              # 关闭并保存工作簿
              workbook.close()
              

              利用python自动化办公excel实用指南

              设置单元格样式

              # 创建三种不同对角线样式的格式:
              format1 = workbook.add_format({"diag_type": 1}) # - format1: 对角线类型1
              format2 = workbook.add_format({"diag_type": 2}) # - format2: 对角线类型2
              format3 = workbook.add_format({"diag_type": 3}) # - format3: 对角线类型3
              # 创建一个带有红色对角线、对角线类型为3且边框线型为7的格式
              format4 = workbook.add_format({
                  "diag_type": 3,
                  "diag_border": 7,
                  "diag_color": "red",
              })
              # 使用不同对角线样式写入单元格内容
              worksheet.write("B1", "Text", format1)  # 使用format1样式写入
              worksheet.write("B2", "Text", format2)  # 使用format2样式写入
              worksheet.write("B3", "Text", format3)  # 使用format3样式写入
              worksheet.write("B4", "Text", format4)  # 使用format4样式写入
              # 创建一个居中并对齐、加粗的单元格格式
              centered_format = workbook.add_format({"align": 'center', 'valign': 'vcenter', "bold": True})
              # 使用居中对齐格式写入单元格内容
              worksheet.write("A2", "Text", centered_format) 
              # 最后关闭并保存工作簿
              workbook.close()
              

              利用python自动化办公excel实用指南

              插入图表到excel文件中

              # 在工作表的A1单元格嵌入图片"demo.png"
              # 注意:此操作默认会按照图片原始尺寸插入
              worksheet.insert_image("A1", "demo.png")
              # 注:若要实现图片自适应单元格大小,可能需要在插入图片时直接指定宽度和高度。
              worksheet.insert_image("A1", "demo.png", {"x_scale": 0.5, "y_scale": 0.5})
              # 最后,关闭并保存工作簿
              workbook.close()
              

              利用python自动化办公excel实用指南

              插入超链接在单元格中

              # 设置第一列(A列)的宽度为30
              worksheet.set_column("A:A", 30)
              # 创建一个样本格式:红色字体、加粗、下划线、字号为12
              red_format = workbook.add_format({
                  "font_color": "red",  # 文字颜色设为红色
                  "bold": 1,            # 字体加粗
                  "underline": 1,       # 文字下划线
                  "font_size": 12,      # 字号为12
              })
              # 写入一些超链接
              # A1单元格包含一个隐式格式的超链接至 http://www.python.org/
              worksheet.write_url("A1", "http://www.python.org/")
              # A3单元格包含一个显示文本为"Python Home"的超链接至 http://www.python.org/
              worksheet.write_url("A3", "http://www.python.org/", string="Python Home")
              # A5单元格包含一个提示信息为"Click here"的超链接至 http://www.python.org/
              worksheet.write_url("A5", "http://www.python.org/", tip="Click here")
              # A7单元格包含一个应用了红色格式的超链接至 http://www.python.org/
              worksheet.write_url("A7", "http://www.python.org/", red_format)
              # A9单元格包含一个电子邮件链接至jmcnamara@cpan.org,显示文本为"Mail me"
              worksheet.write_url("A9", "mailto:jmcnamara@cpan.org", string="Mail me")
              # 最后,关闭并保存工作簿
              workbook.close()
              

              利用python自动化办公excel实用指南

              显示迷你图

              # 示例数据集,每个列表代表一行数据
              data = [
                  [-2, 2, 3, -1, 0],  # 第一行数据
                  [30, 20, 33, 20, 15],  # 第二行数据
                  [1, -1, -1, 1, -1],  # 第三行数据
              ]
              # 将示例数据写入到工作表中
              worksheet.write_row("A1", data[0])  # 写入第一行数据
              worksheet.write_row("A2", data[1])  # 写入第二行数据
              worksheet.write_row("A3", data[2])  # 写入第三行数据
              # 在F1单元格添加一条带标记点的默认折线型sparkline图表(基于A1到E1区域的数据)
              worksheet.add_sparkline("F1", {"range": "Sheet1!A1:E1", "markers": True})
              # 在F2单元格添加一条柱状sparkline图表,采用非默认风格(基于A2到E2区域的数据)
              # 同时显示第一个点和最后一个点
              worksheet.add_sparkline("F2", {
                  "range": "Sheet1!A2:E2", 
                  "type": "column", 
                  "style": 12, 
                  "first_point": True, 
                  "last_point": True
              })
              # 在F3单元格添加一条胜败(Win/Loss)类型的sparkline图表(基于A3到E3区域的数据)
              # 高亮显示负值区域,并显示最高点和最低点
              worksheet.add_sparkline("F3", {
                  "range": "Sheet1!A3:E3", 
                  "type": "win_loss", 
                  "negative_points": True,
                  "high_point": True, 
                  "low_point": True
              })
              # 最后,关闭并保存工作簿
              workbook.close()
              

              利用python自动化办公excel实用指南

              设置单元格保护防止修改

              # 创建两种具有保护属性的单元格格式:
              # - unlocked: 不锁定的格式,可以编辑
              # - hidden: 隐藏格式,公式不可见
              unlocked = workbook.add_format({"locked": False})  # 创建不锁定的格式
              hidden = workbook.add_format({"hidden": True})     # 创建隐藏公式的格式
              # 设置A列的宽度为40,以便更好地展示文本
              worksheet.set_column("A:A", 40)
              # 开启工作表保护模式
              worksheet.protect()  # 默认情况下所有单元格都会被锁定
              # 分别写入锁定、解锁及隐藏公式的单元格内容
              worksheet.write("A1", "Cell B1 is locked. It cannot be edited.")  # B1默认锁定
              worksheet.write("A2", "Cell B2 is unlocked. It can be edited.")
              worksheet.write("A3", "Cell B3 is hidden. The formula isn't visible.")
              # 写入具有不同保护属性的公式
              worksheet.write_formula("B1", "=1+2")  # 默认锁定,无法编辑公式
              worksheet.write_formula("B2", "=1+2", unlocked)  # 公式所在单元格已解锁,可以编辑
              worksheet.write_formula("B3", "=1+2", hidden)  # 公式所在单元格被隐藏,公式不可见
              # 关闭并保存工作簿
              workbook.close()
              

              利用python自动化办公excel实用指南

              显示色阶图

              这里使用openpyxl库来实现色阶图输出到excel文件中。

              from openpyxl import Workbook
              from openpyxl.formatting.rule import ColorScaleRule
              # 创建一个新的工作簿
              workbook = Workbook()
              # 选择或创建一个工作表
              worksheet = workbook.active
              worksheet.title = 'Color Scale Test'
              # 假设我们有以下一列测试数据
              data = [30, 60, 90, 120, 150, 180, 210, 240, 270, 300]
              # 将数据写入单元格
              for row, value in enumerate(data, 1):
                  ws.cell(row=row, column=1, value=value)
              # 定义色阶规则
              rule = ColorScaleRule(start_type='min', start_color='FF0000',
                                    mid_type='percentile', mid_value=50, mid_color='FFFF00',
                                    end_type='max', end_color='00FF00')
              # 应用色阶到数据所在列 (这里是第一列A)
              worksheet.conditional_formatting.add('A1:A{}'.format(len(data)), rule)
              # 保存Excel文件
              wb.save('demo.xlsx')
              

              利用python自动化办公excel实用指南

              显示条件格式图

              这里使用openpyxl库来实现条件图输出到excel文件中。

              # 导入所需库
              from openpyxl import Workbook
              from openpyxl.formatting.rule import ColorScaleRule, DataBarRule
              from openpyxl.styles.colors import Color
              # 1. 创建一个新的Excel工作簿
              workbook = Workbook()
              # 2. 选择或获取工作簿的第一个工作表,并设置其标题
              worksheet = workbook.active
              worksheet.title = 'Color Scale Test'
              # 3. 假设有如下一列测试数据
              data = [30, 60, 90, 120, 150, 180, 210, 240, 270, 300]
              # 4. 将测试数据写入Excel工作表的A列,从第二行开始(Excel表格的第一行默认为表头)
              for row_index, value in enumerate(data, 1):  # 使用enumerate()函数,索引从1开始
                  worksheet.cell(row=row_index, column=1, value=value)  # 设置单元格内容
              # 5. 定义数据所在的区域,即A2到A10这一列(由于enumerate()从1开始,所以此处是A1到A10)
              data_range = worksheet['A1:A10']
              # 6. 创建一个DataBarRule实例,用于在指定范围内应用数据条(颜色条)条件格式
              rule = DataBarRule(
                  start_type='min',  # 数据条的起点基于该列的最小值
                  end_type='max',   # 数据条的终点基于该列的最大值
                  color=Color(rgb='00FF00'),  # 数据条的颜色为绿色
                  showValue=True,           # 显示数据条旁边的实际数值
                  minLength=None,            # 数据条的最小长度将由程序自动计算,保持默认值
                  maxLength=None             # 数据条的最大长度将由程序自动计算,保持默认值
              )
              # 7. 将数据条条件格式规则应用到指定的单元格区域
              worksheet.conditional_formatting.add('A1:A10', rule)  # 将规则应用到A1到A10这一列
              # 8. 保存已应用条件格式的工作簿至Excel文件
              workbook.save('demo.xlsx')  # 文件名:demo.xlsx
              

              利用python自动化办公excel实用指南

              利用calamine读取excel大文件数据性能测试

              # 生成一个50000行、5列的随机数二维数组
              data = np.random.random(size=(50000, 5))
              # 将生成的随机数组转换为Pandas DataFrame,这是一个表格型数据结构,便于进行数据分析和操作
              pf = pd.DataFrame(data)
              # 利用openpyxl引擎写入excel文件
              %timeit pf.to_excel("demo.xlsx",index=False, engine= 'openpyxl')
              # 4.33 s ± 16.1 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
              # 利用calamine引擎读excel文件
              %timeit pd.read_excel("demo.xlsx", engine= 'calamine')
              # 344 ms ± 1.76 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
              # 利用openpyxl引擎读excel文件
              %timeit pd.read_excel("demo.xlsx", engine= 'openpyxl')
              # 3.33 s ± 26.7 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
              

              通过实验看出: 在5万行*5数据中,通过calamine引擎读excel文件比传统openpyxl快9倍多。

              将生成的excel文件发送到’老板’的邮箱

              以163为例,打开邮箱设置对应的smtp服务

              利用python自动化办公excel实用指南 在开启的同时会弹出‘授权密码’,下面会用到。

              编写python代码将excel文件发送到指定邮箱

              import smtplib
              from email.mime.multipart import MIMEMultipart
              from email.mime.base import MIMEBase
              from email.mime.text import MIMEText
              from email.utils import COMMASPACE
              from email import encoders
              import os
              # 配置SMTP服务器和登录信息
              smtp_server = 'smtp.163.com' #使用163邮箱作为发送服务器,也可以使用其他邮箱
              smtp_port = 25 #端口号
              username = 'your_email@163.com' #你的163邮箱,也可以使用其他邮箱
              password = 'xxxxx' #你邮箱对应smtp的授权密码
              sender_email = 'your_email@163.com'
              receiver_emails = ['recipient1@qq.com',]  # 收件人列表
              # 创建MIMEMultipart对象以便容纳多部分邮件内容
              msg = MIMEMultipart()
              msg['From'] = sender_email
              msg['To'] = COMMASPACE.join(receiver_emails)
              msg['Subject'] = '测试文件'
              # 创建邮件正文
              body = '这是今天的测试文档.'
              msg.attach(MIMEText(body))
              # 打开并读取Excel文件
              filename = 'demo.xlsx'  # 要发送的Excel文件路径
              with open(filename, 'rb') as f:
                  attachment = MIMEBase('application', 'vnd.openxmlformats-officedocument.spreadsheetml.sheet')
                  attachment.set_payload(f.read())
                  encoders.encode_base64(attachment)  # 对附件内容进行base64编码
                  attachment.add_header('Content-Disposition', f'attachment; filename="{os.path.basename(filename)}"')
                  msg.attach(attachment)
              # 连接SMTP服务器并发送邮件
              try:
                  server = smtplib.SMTP(smtp_server, smtp_port)
                  server.starttls()  # 如果使用的是非安全端口,需要启用TLS加密
                  server.login(username, password)
                  server.sendmail(sender_email, receiver_emails, msg.as_string())
                  server.quit()
                  print("Email sent successfully.")
              except Exception as e:
                  print("Error occurred while sending email:", e)
              

              效果展示 利用python自动化办公excel实用指南

              关于Python学习指南

              学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

              包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!

              👉Python所有方向的学习路线👈

              Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)

              利用python自动化办公excel实用指南

              👉Python学习视频600合集👈

              观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

              利用python自动化办公excel实用指南

              温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

              👉Python70个实战练手案例&源码👈

              光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

              利用python自动化办公excel实用指南

              👉Python大厂面试资料👈

              我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

              利用python自动化办公excel实用指南

              利用python自动化办公excel实用指南

              👉Python副业兼职路线&方法👈

              学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。

              利用python自动化办公excel实用指南

              👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方CSDN官方认证二维码免费领取【保证100%免费】

              利用python自动化办公excel实用指南

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]