5分钟掌握openpyxl操作,Python办公软件自动化实例

原创
小哥 3年前 (2022-10-16) 阅读数 50 #大杂烩

超级无敌干货,先送到!超级无与伦比的干货,首发!

作者:Sinchard

来源:python中文社区

大家好,我是菜鸟兄弟。大家好,我是菜鸟兄弟。大家好,我是菜鸟兄弟。大家好,我是菜鸟兄弟。

今天,我想和大家分享一篇文章,用openpyxl操作Excel的文章。

各种数据需要导入各种数据需要导入各种数据Excel?多个Excel要合并吗?就目前而言。Python处理Excel有很多文档库,所以有很多文档库。有许多文档库。openpyxl就功能和性能而言,它是较好的产品之一。接下来,我将向您介绍各种Excel操作。

打开Excel文件

新建一个Excel文件

>>> from openpyxl import Workbook
    >>> wb = Workbook()

打开现有Excel文件

>>> from openpyxl import load_workbook
    >>> wb2 = load_workbook(test.xlsx)

根据需要,使用只读或只写模式可减少打开大文件时的内存消耗。

wb = load_workbook(filename=large_file.xlsx, read_only=True)

wb = Workbook(write_only=True)

获取、创建工作表获取、创建工作表获取、创建工作表

获取当前活动工作表。获取当前活动工作表。获取当前活动工作表。

>>> ws = wb.active

创建新的工作表。若要创建新工作表,请执行以下操作。创建新工作表。正在创建新工作表。

>>> ws1 = wb.create_sheet("Mysheet") # insert at the end (default)
    # or
    >>> ws2 = wb.create_sheet("Mysheet", 0) # insert at first position
    # or
    >>> ws3 = wb.create_sheet("Mysheet", -1) # insert at the penultimate position

使用工作表名称获取工作表。

>>> ws3 = wb["New Title"]

获取所有工作表名称。获取所有工作表名称。获取所有工作表名称。获取所有图纸名称。

>>> print(wb.sheetnames)
    [Sheet2, New Title, Sheet1]
使用for循环访问所有工作表。循环遍历所有工作表。循环遍历所有工作表。

    >>> for sheet in wb:
    ...     print(sheet.title)

保存

保存为流,以便在网络中使用。保存为流,以便在网络中使用。保存为流,以便在网络中使用。保存为流,以便在网络上使用。

>>> from tempfile import NamedTemporaryFile
    >>> from openpyxl import Workbook
    >>> wb = Workbook()
    >>> with NamedTemporaryFile() as tmp:
            wb.save(tmp.name)
            tmp.seek(0)
            stream = tmp.read()
保存到文件。正在保存到文件。已保存到文件。

    >>> wb = Workbook()
    >>> wb.save(balances.xlsx)
另存为模板。另存为模板。另存为模板。另存为模板:。

    >>> wb = load_workbook(document.xlsx)
    >>> wb.template = True
    >>> wb.save(document_template.xltx)

单元格

单元格位置直接作为工作表键读取。

>>> c = ws[A4]

为单元格赋值。为单元格赋值。为单元格赋值。为单元格赋值。

>>> ws[A4] = 4
    >>> c.value = hello, world

多个单元格多于一个单元格 可以使用切片访问单元格区域。可以使用切片访问单元格区域。可以使用切片来访问单元格区域。可以使用切片:访问单元格区域。

>>> cell_range = ws[A1:C2]

使用值格式。使用数字格式。使用值格式。使用数字格式。

>>> # set date using a Python datetime
    >>> ws[A1] = datetime.datetime(2010, 7, 21)
    >>>
    >>> ws[A1].number_format
    yyyy-mm-dd h:mm:ss

使用公式。使用公式。使用公式。

>>> # add a simple formula
    >>> ws["A1"] = "=SUM(1, 1)"

合并单元格时,将从工作表中删除除左上角单元格以外的所有单元格。

>>> ws.merge_cells(A2:D2)
    >>> ws.unmerge_cells(A2:D2)
    >>>
    >>> # or equivalently
    >>> ws.merge_cells(start_row=2, start_column=1, end_row=4, end_column=4)
    >>> ws.unmerge_cells(start_row=2, start_column=1, end_row=4, end_column=4)

行、列

行、列或等级的范围可以单独指定。

>>> colC = ws[C]
    >>> col_range = ws[C:D]
    >>> row10 = ws[10]
    >>> row_range = ws[5:10]

可以使用 Worksheet.iter_rows() 方法遍历行。方法遍历行。方法遍历线。

>>> for row in ws.iter_rows(min_row=1, max_col=3, max_row=2):
    ...    for cell in row:
    ...        print(cell)
    
    
    
    
    
    

同样的 Worksheet.iter_cols() 方法将遍历该列。方法将遍历列。方法将循环访问该列。方法将循环访问列。

>>> for col in ws.iter_cols(min_row=1, max_col=3, max_row=2):
    ...     for cell in col:
    ...         print(cell)
    
    
    
    
    
    

若要循环访问文件的所有行或列,可以使用 Worksheet.rows 属性:

>>> ws = wb.active
    >>> ws[C9] = hello world
    >>> tuple(ws.rows)
    ((),
    (),
    (),
    (),
    (),
    (),
    (),
    (),
    ())

Worksheet.columns 属性:

>>> tuple(ws.columns)
    ((,
    ,
    ,
    ,
    ,
    ,
    ...
    ,
    ,
    ),
    (,
    ,
    ,
    ,
    ,
    ,
    ,
    ,
    ))

使用 Worksheet.append() 或迭代使用或迭代使用 Worksheet.cell() 添加新的数据行。添加新的数据行。添加新数据行以添加新数据行。

>>> for row in range(1, 40):
    ...     ws1.append(range(600))

    >>> for row in range(10, 20):
    ...     for col in range(27, 54):
    ...         _ = ws3.cell(column=col, row=row, value="{0}".format(get_column_letter(col)))

插入操作很麻烦。您可以使用 Worksheet.insert_rows() 插入一行或多行。插入一行或多行。

>>> from openpyxl.utils import get_column_letter
     >>> ws.insert_rows(7) 
     >>> row7 = ws[7]
     >>> for col in range(27, 54):
    ...         _ = ws3.cell(column=col, row=7, value="{0}".format(get_column_letter(col)))

Worksheet.insert_cols() 操作也是相似的。操作也是相似的。这些操作是相似的。 Worksheet.delete_rows()Worksheet.delete_cols() 用于批量删除行和列。用于批量删除行和列。用于批量删除行和列。用于批量删除行和列。

只读取值

使用 Worksheet.values 属性循环访问工作表的所有行,但只返回单元格值。

for row in ws.values:
       for value in row:
         print(value)

Worksheet.iter_rows()Worksheet.iter_cols() 可以设置 values_only 参数只返回单元格的值。参数只返回单元格的值。参数只返回单元格值。

>>> for row in ws.iter_rows(min_row=1, max_col=3, max_row=2, values_only=True):
    ...   print(row)
    (None, None, None)
    (None, None, None)
版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门