暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Python 简单操作 Excel

做一个柔情的程序猿 2020-09-05
556
点击上方“蓝字”关注我,干货不断哦!

Python 操作 Excel

前言

这次梳理的篇幅主要是涉及Excel以及如何通过python对Excel进行操作等,对巩固自己的python知识也是很有帮助的,进一步的对Excel的使用而言也是帮助很大的。

但更多的是抛砖引玉,希望对你们有所帮助。

感谢各位鼓励与支持🌹🌹🌹,往期文章都在最后梳理出来了(●'◡'●)

接下来就以问题的形式展开梳理👇

python对应下的Excel

Excel,Excel一般指Microsoft Office Excel。Microsoft Excel是Microsoft为使用Windows和Apple Macintosh操作系统的电脑编写的一款电子表格软件。直观的界面、出色的计算功能和图表工具,再加上成功的市场营销,使Excel成为最流行的个人计算机数据处理软件

常用工具

数据处理是 Python 的一大应用场景,而 Excel 又是当前最流行的数据处理软件。因此用 Python 进行数据处理时,很容易会和 Excel 打起交道。得益于前人的辛勤劳作,Python 处理 Excel 已有很多现成的轮子,比如 xlrd & xlwt & xlutils 、 XlsxWriter 、 OpenPyXL ,而在 Windows 平台上可以直接调用 Microsoft Excel 的开放接口,这些都是比较常用的工具,还有其他一些优秀的工具这里就不一一介绍,接下来我们通过一个表格展示各工具之间的特点:
类型xlrd&xlwt&xlutilsXlsxWriterOpenPyXLExcel开放接口
读取支持不支持支持支持
写入支持支持支持支持
修改支持不支持支持支持
xls支持不支持不支持支持
xlsx高版本支持支持支持
大文件不支持支持支持不支持
效率较慢
功能较弱强大一般超强大
以上可以根据需求不同,选择合适的工具,现在为大家主要介绍下最常用的 xlrd & xlwt & xlutils 系列工具的使用。

xlrd & xlwt & xlutils介绍

  1. 「xlrd」,用于读取 Excel 文件;
  2. 「xlwt」用于写入 Excel 文件;
  3. 「xlutils」用于操作 Excel 文件的实用工具,比如复制、分割、筛选等

python下安装相应的资源包

安装xlrd

  • 命令行:
    • pip install xlrd
      复制

    安装xlwt

    • 命令行:
      • pip install xlwt
        复制

      安装xlutils

      • 命令行:
        • pip install xlutils
          复制


        python下写入Excel

        导入库创建文件对象

        导入 xlwt 库:import xlwt

        创建 xls 文件对象:wb = xlwt.Workbook()

        那我们看看写入Excel
        的完整代码吧👇

          # 导入 xlwt 库
          import xlwt

          # 创建 xls 文件对象
          wb = xlwt.Workbook()

          # 新增两个表单页
          sh1 = wb.add_sheet('成绩')
          sh2 = wb.add_sheet('汇总')

          # 然后按照位置来添加数据,第一个参数是行,第二个参数是列
          # 写入第一个sheet
          sh1.write(0, 0, '姓名')
          sh1.write(0, 1, '专业')
          sh1.write(0, 2, '科目')
          sh1.write(0, 3, '成绩')

          sh1.write(1, 0, '张三')
          sh1.write(1, 1, '信息与通信工程')
          sh1.write(1, 2, '数值分析')
          sh1.write(1, 3, 88)

          sh1.write(2, 0, '李四')
          sh1.write(2, 1, '物联网工程')
          sh1.write(2, 2, '数字信号处理分析')
          sh1.write(2, 3, 95)

          sh1.write(3, 0, '王华')
          sh1.write(3, 1, '电子与通信工程')
          sh1.write(3, 2, '模糊数学')
          sh1.write(3, 3, 90)

          # 写入第二个sheet
          sh2.write(0, 0, '总分')
          sh2.write(1, 0, 273)

          # 最后保存文件即可
          wb.save('test.xls')

          复制

          从上面看,我们可以看到类似于索引表,每个索引表对应一个值,比如索引为2对应头部中的第二个sheet头部信息,这样子的话,在传输的时候,不在是传输对应的头部信息了,而是传递索引,对于之前出现过的头部信息,只需要把「索引」(比如1,2,...)传给对方即可,对方拿到索引查表就行了。

          运行效果

          运行代码,结果会看到生成名为 test.xls 的 Excel 文件,打开文件查看如下图所示:

          在打开的Excel表中有我们刚刚在代码中填写的数据:

          在表的sheet2中有所有成绩的总分:

          以上就是写入 Excel 的代码,是不是很简单,下面我们再来看下读取 Excel 该如何操作。


          python在读取Excel

          导入库写入文件

          导入 xlrd 库:import xlrd

          写入 xls 文件:wb = xlrd.open_workbook("test_w.xls")

          那我们看看读取Excel
          的完整代码吧👇

            # 导入 xlrd 库
            import xlrd

            # 打开刚才我们写入的 test_w.xls 文件
            wb = xlrd.open_workbook("test_w.xls")

            # 获取并打印 sheet 数量
            print( "sheet 数量:", wb.nsheets)

            # 获取并打印 sheet 名称
            print( "sheet 名称:", wb.sheet_names())

            # 根据 sheet 索引获取内容
            sh1 = wb.sheet_by_index(0)
            # 或者
            # 也可根据 sheet 名称获取内容
            # sh = wb.sheet_by_name('成绩')

            # 获取并打印该 sheet 行数和列数
            print( u"sheet %s 共 %d 行 %d 列" % (sh1.name, sh1.nrows, sh1.ncols))

            # 获取并打印某个单元格的值
            print( "第一行第二列的值为:", sh1.cell_value(0, 1))

            # 获取整行或整列的值
            rows = sh1.row_values(0) # 获取第一行内容
            cols = sh1.col_values(1) # 获取第二列内容

            # 打印获取的行列值
            print( "第一行的值为:", rows)
            print( "第二列的值为:", cols)

            # 获取单元格内容的数据类型
            print( "第二行第一列的值类型为:", sh1.cell(1, 0).ctype)

            # 遍历所有表单内容
            for sh in wb.sheets():
            for r in range(sh.nrows):
            # 输出指定行
            print( sh.row(r))


            复制

            运行效果

            运行代码,在后台显示结果如下:

            细心的朋友可能注意到,这里我们可以获取到单元格的类型,上面我们读取类型时获取的是数字1,那1表示什么类型,又都有什么类型呢?别急下面我们慢慢讲述。

            单元格类型

            单元格对应的有不同的数据类型,每一种数据类型又对应着不同的数值,下面我们通过一个表格来具体反映:
            数值类型说明
            0empty
            1string字符串
            2number数字
            3date日期
            4boolean布尔值
            5error错误

            通过上面表格,我们可以知道刚获取单元格类型返回的数字1对应的就是字符串类型。


            python下修改Excel

            导入库打开文件

            导入 xlrd和xlutils 库:

            import xlrd

            from xlutils.copy import copy

            打开 xls 文件:readbook = xlrd.open_workbook("test_w.xls")

            那我们看看修改Excel
            的完整代码吧👇

              # 导入相应模块
              import xlrd
              from xlutils.copy import copy

              # 打开 excel 文件
              readbook = xlrd.open_workbook("test_w.xls")

              # 复制一份
              wb = copy(readbook)

              # 选取第一个表单
              sh1 = wb.get_sheet(0)

              # 在第五行新增写入数据
              sh1.write(4, 0, '王欢')
              sh1.write(4, 1, '通信工程')
              sh1.write(4, 2, '机器学习')
              sh1.write(4, 3, 89)

              # 选取第二个表单
              sh1 = wb.get_sheet(1)

              # 替换总成绩数据
              sh1.write(1, 0, 362)

              # 保存
              wb.save('test.xls')

              复制

              「我们通过两张图来看看它的修改效果吧」👇


              python下格式转换操作

              在平时我们使用 Excel 时会对数据进行一下格式化,或者样式设置,在这里把上面介绍写入的代码简单修改下,使输出的格式稍微改变一下,代码下:

                # 导入 xlwt 库
                import xlwt

                # 设置写出格式字体红色加粗
                styleBR = xlwt.easyxf('font: name Times New Roman, color-index red, bold on')

                # 设置数字型格式为小数点后保留两位
                styleNum = xlwt.easyxf(num_format_str='#,##0.00')

                # 设置日期型格式显示为YYYY-MM-DD
                styleDate = xlwt.easyxf(num_format_str='YYYY-MM-DD')

                # 创建 xls 文件对象
                wb = xlwt.Workbook()

                # 新增两个表单页
                sh1 = wb.add_sheet('成绩')
                sh2 = wb.add_sheet('汇总')

                # 然后按照位置来添加数据,第一个参数是行,第二个参数是列
                sh1.write(0, 0, '姓名', styleBR) # 设置表头字体为红色加粗
                sh1.write(0, 1, '日期', styleBR) # 设置表头字体为红色加粗
                sh1.write(0, 2, '成绩', styleBR) # 设置表头字体为红色加粗

                # 插入数据
                sh1.write(1, 0, '张三',)
                sh1.write(1, 1, '2020-07-01', styleDate)
                sh1.write(1, 2, 90, styleNum)
                sh1.write(2, 0, '李四')
                sh1.write(2, 1, '2020-08-02')
                sh1.write(2, 2, 95, styleNum)

                # 设置单元格内容居中的格式
                alignment = xlwt.Alignment()
                alignment.horz = xlwt.Alignment.HORZ_CENTER
                style = xlwt.XFStyle()
                style.alignment = alignment

                # 合并A4,B4单元格,并将内容设置为居中
                sh1.write_merge(3, 3, 0, 1, '总分', style)

                # 通过公式,计算C2+C3单元格的和
                sh1.write(3, 2, xlwt.Formula("C2+C3"))

                # 对 sheet2 写入数据
                sh2.write(0, 0, '总分', styleBR)
                sh2.write(1, 0, 185)

                # 最后保存文件即可
                wb.save('test.xls')


                复制
                「我们通过一张图来看看它的修改效果吧」👇

                可以看出,使用代码我们可以对字体,颜色、对齐、合并等平时 Excel 的操作进行设置,也可以格式化日期和数字类型的数据。当然了这里只是介绍了部分功能,不过这已经足够我们日常使用了,想了解更多功能操作可以参考官网。


                「❤️ 感谢大家」

                如果你觉得这篇内容对你挺有有帮助的话:

                1. 点赞支持下吧,让更多的人也能看到这篇内容(收藏不点赞,都是耍流氓 -_-)
                2. 欢迎在留言区与我分享你的想法,也欢迎你在留言区记录你的思考过程。
                3. 觉得不错的话,也可以阅读近期梳理的文章(感谢掘友的鼓励与支持🌹🌹🌹):

                「❤️ 资源传送门」

                1. 扫码关注【做一个柔情的程序猿】公众号

                2. 在【做一个柔情的程序猿】后台回复 【python资料】【2020秋招】 获取相应资料

                👆长按上方二维码 2 秒
                回复「python资料即可获取python学习资料
                回复「2020秋招即可获取2020秋招面试题及答案
                复制


                文章转载自做一个柔情的程序猿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                评论