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

python自动操作excel,看这篇就好了

大侠之运维 2023-01-07
1343

点击上方蓝字  关注大侠之运维

后台回复99.99% 获取运维干货物


在 Python 中操作excel的方法有很多,你可以使用 xlwt、openpyxl、pyexcel 等库来实现。


先来看下一些简单的操作:

读取 Excel 文件:

    import openpyxl


    # 读取 Excel 文件
    wb = openpyxl.load_workbook('example.xlsx')


    # 获取所有工作表名称
    print(wb.get_sheet_names())


    # 获取指定工作表
    sheet = wb.get_sheet_by_name('Sheet1')


    # 读取单元格内容
    print(sheet['A1'].value)


    # 迭代读取所有行
    for row in sheet.rows:
    for cell in row:
    print(cell.value)


    # 迭代读取所有列
    for column in sheet.columns:
    for cell in column:
    print(cell.value)


    复制

    写入 Excel 文件:

      import openpyxl


      # 创建工作簿
      wb = openpyxl.Workbook()


      # 获取活动工作表
      sheet = wb.active


      # 写入单元格内容
      sheet['A1'] = 'hello'


      # 向下插入一行
      sheet.append([1, 2, 3])


      # 保存文件
      wb.save('example2.xlsx')


      复制

      下面这部分是一些高级的玩法,主要包括如下:

      Python中有很多库可以帮助你操作excel文件,如xlrd、xlwt、openpyxl等。这些库可以帮助你实现读取、修改、创建、写入等功能。


      在使用这些库操作excel时,有几个高级玩法是值得注意的:


      1. 合并单元格:在excel中,可以通过将多个单元格合并为一个单元格来达到较好的布局效果。使用Python的库,你可以轻松实现这一操作。

      2. 插入图片:如果你想在excel文件中插入图片,可以使用Python的库来实现。你可以设置图片的位置、大小等属性。

      3. 插入公式:如果你想在excel中使用公式,可以使用Python的库来实现。你可以设置公式的类型、范围等属性。

      4. 自定义样式:你可以使用Python的库来定义excel中单元格的样式,包括字体、颜色、边框等。

      5. 读写保护:如果你想设置excel文件的读写保护,可以使用Python的库来实现。你可以设置密码、保护范围等属性。


      python合并单元格

      在 Python 中合并单元格的方法有很多,你可以使用 xlwt、openpyxl、pyexcel 等库来实现。


      例如,使用 xlwt 库可以这样写:

        import xlwt


        # 创建工作薄
        workbook = xlwt.Workbook()
        # 创建工作表
        worksheet = workbook.add_sheet('Sheet1')


        # 合并单元格
        worksheet.write_merge(0, 0, 0, 3, '合并单元格')


        # 保存文件
        workbook.save('merge.xls')
        复制

        使用 openpyxl 库可以这样写:

          import openpyxl


          # 创建工作薄
          workbook = openpyxl.Workbook()
          # 创建工作表
          worksheet = workbook.active


          # 合并单元格
          worksheet.merge_cells('A1:D1')
          worksheet['A1'] = '合并单元格'


          # 保存文件
          workbook.save('merge.xlsx')


          复制

          使用 pyexcel 库可以这样写:

            import pyexcel


            # 创建数据
            data = [['合并单元格', '', '', '']]


            # 保存文件
            pyexcel.save_as(array=data, dest_file_name='merge.xls')
            复制

            python 插入图片


            在 Python 中使用 openpyxl 库可以很方便地插入图片到 Excel 文档中。


            首先,你需要安装 openpyxl 库,可以使用命令 "pip install openpyxl" 来安装。


            然后,你可以使用以下代码将图片插入到 Excel 文档的第一个单元格中:

              from openpyxl import Workbook
              from openpyxl.drawing.image import Image


              # 创建一个工作簿
              wb = Workbook()


              # 获取当前活动的工作表(即第一个工作表)
              ws = wb.active


              # 创建一个图片对象
              img = Image('path/to/image.jpg')


              # 将图片插入到第一个单元格
              ws.add_image(img, 'A1')


              # 保存工作簿
              wb.save('example.xlsx')


              复制

              你也可以指定图片的大小和位置,例如:

                from openpyxl import Workbook
                from openpyxl.drawing.image import Image


                # 创建一个工作簿
                wb = Workbook()


                # 获取当前活动的工作表(即第一个工作表)
                ws = wb.active


                # 创建一个图片对象
                img = Image('path/to/image.jpg')


                # 设置图片的宽度和高度
                img.width = 100
                img.height = 100


                # 将图片插入到第一个单元格
                ws.add_image(img, 'A1')


                # 保存工作簿
                wb.save('example.xlsx')
                复制

                你还可以使用更多的参数来控制图片的位置和大小,例如:


                • anchor:指定图片的插入位置

                • width:指定图片的宽度

                • height:指定图片的高度

                • x_offset:指定图片相对于插入位置的横向偏移量

                • y_offset:指定图片相对于插入位置的纵向偏移量


                例如,要将图片插入到单元格 D4 中,并调整图片的大小和位置,可以使用以下代码:

                  worksheet.insert_image('D4''image.jpg', {'width'200'height'100'x_offset'20'y_offset'20})

                  复制

                  这样就可以将图片插入到单元格 D4 中,并将图片的宽度调整为 200 像素,高度调整为 100 像素,横向偏移 20 像素,纵向偏移 20 像素。


                  python插入公式

                  可以使用 openpyxl 库中的 write_formula 方法来插入公式。例如

                    from openpyxl import Workbook


                    # 创建工作簿
                    wb = Workbook()


                    # 激活工作表
                    ws = wb.active


                    # 在单元格 A1 中写入公式
                    ws['A1'] = '=SUM(B1:B10)'


                    # 保存工作簿
                    wb.save('formulas.xlsx')


                    复制

                    上面的代码会在 A1 单元格中插入一个求和公式,求 B1 到 B10 单元格的和。


                    python自定义样式


                    可以使用 add_table_style 函数来自定义表格样式。

                    例如,下面的代码可以自定义一个表格样式,使表格的前两行为灰色背景,第一列为黄色背景,并设置表格边框为粗边框:

                      from openpyxl.styles import Color, PatternFill, Border, Side


                      def add_table_style(ws):
                      # 设置前两行背景色为灰色
                      for row in range(1, 3):
                      for col in range(1, ws.max_column + 1):
                      cell = ws.cell(row=row, column=col)
                      cell.fill = PatternFill("solid", fgColor=Color("A0A0A0"))
                      # 设置第一列背景色为黄色
                      for row in range(1, ws.max_row + 1):
                      cell = ws.cell(row=row, column=1)
                      cell.fill = PatternFill("solid", fgColor=Color("FFFF00"))
                      # 设置表格边框为粗边框
                      thin_border = Border(left=Side(border_style="thin"),
                      right=Side(border_style="thin"),
                      top=Side(border_style="thin"),
                      bottom=Side(border_style="thin"))
                      thick_border = Border(left=Side(border_style="thick"),
                      right=Side(border_style="thick"),
                      top=Side(border_style="thick"),
                      bottom=Side(border_style="thick"))
                      for row in range(1, ws.max_row + 1):
                      for col in range(1, ws.max_column + 1):
                      cell = ws.cell(row=row, column=col)
                      cell.border = thick_border


                      复制

                      然后,在写入数据之前调用 add_table_style 函数即可。


                      例如:

                        # 自定义表格样式
                        table_style = TableStyle([
                        ('FONTNAME', (0, 0), (-1, 0), 'Heiti TC'), # 设置第一行字体
                        ('TEXTCOLOR', (0, 0), (-1, 0), colors.red), # 设置第一行字体颜色
                        ('ALIGN', (1, 0), (1, -1), 'RIGHT'), # 设置第二列居右
                        ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'), # 设置垂直居中
                        ('GRID', (0, 0), (-1, -1), 1, colors.black) # 设置表格框线
                        ])


                        # 应用样式
                        table.setStyle(table_style)


                        复制

                        python对excel读写保护


                        可以使用 openpyxl 库中的 sheet 对象的 sheet_properties 属性来控制工作表的读写保护。


                        例如:

                          from openpyxl import Workbook


                          # 创建工作簿
                          wb = Workbook()


                          # 获取活动工作表
                          ws = wb.active


                          # 设置工作表的读写保护
                          ws.sheet_properties.sheet_protection.enable()


                          # 设置密码
                          ws.sheet_properties.sheet_protection.password = 'password'


                          # 其他操作


                          # 保存工作簿
                          wb.save('protected.xlsx')
                          复制

                          不同模块使用方法汇总:


                          xlrd 是一个用于读取 Excel 文件的 Python 库。它支持读取 xls 和 xlsx 格式的文件,并提供了许多方便的方法来访问 Excel 文件中的数据。

                          常用的方法包括:

                          • open_workbook(filename):打开一个 Excel 文件并返回一个 workbook 对象。

                          • sheet_by_index(index):通过索引获取 workbook 中的 sheet 对象。

                          • sheet_by_name(name):通过名称获取 workbook 中的 sheet 对象。

                          • cell(row, col):获取 sheet 中指定行和列的单元格对象。

                          • row(rowx):获取 sheet 中指定行的所有单元格对象。

                          • col(colx):获取 sheet 中指定列的所有单元格对象。

                          • cell_value(row, col):获取 sheet 中指定行和列的单元格的值。

                          • nrows:获取 sheet 中总行数。

                          • ncols:获取 sheet 中总列数。



                          👆点击查看更多内容👆


                          推荐阅读

                          神器,代码画架构图,部署图,yyds

                          生产elasticsearch 8.0部署文档

                          elastalert2-ELK日志关键字监控实践

                          kubernetes安装参考这篇就好了!!


                          记得星标记一下,下次更容易找到我

                                 



                          文章转载自大侠之运维,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                          评论