精华内容
下载资源
问答
  • Python openpyxl 常用函数新手笔记一

    千次阅读 2019-06-05 13:07:42
    Python openpyxl 常用函数新手笔记一 import openpyxl #==============================================# #读取xlsm文档# wb2 = openpyxl.load_workbook('text.xlsx') #====================================...

    Python openpyxl 常用函数新手笔记一

    #版本号:
    #Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019
    #openpyex 2.6.2
    
    import openpyxl
    #==============================================#
    #读取xlsm文档#
    wb2 = openpyxl.load_workbook('text.xlsx')
    #==============================================#
    #读取xlsm文档下面Sheet的名字#
    dd = wb2.sheetnames
    #==============================================#
    #把名称打印出来#
    print("Sheet名称",dd ,sep='=')
    #==============================================#
    #读取当前Sheet下的某个数据#
    ab = wb2.active
    cc = ab["A2"].value
    print("读取A2",cc ,sep='=')
    #==============================================#
    #修改数据#
    ab["E1"] = "test"
    #==============================================#
    #保存数据(文件在.PY同一个文件夹里面)#
    wb2.save("text.xlsx")
    #==============================================#
    
    
    待续更新··
    
    展开全文
  • 这篇文章主要介绍了Python openpyxl模块原理及...1、openpyxl模块常用函数 import openpyxl wb = openpyxl.load_workbook('example.xlsx') ##### 工作表常用操作 print(wb.active) # 获取电子表格Worksheet是否有数据
  • python之openpyxl模块(excel管理)

    万次阅读 多人点赞 2018-09-10 12:57:59
    对于创建一个新的Excel文档,直接进行Workbook类的调用即可,对于一个已经存在的Excel文档,可以使用openpyxl模块的load_workbook函数进行读取,该函数包涵多个参数,但只有filename参数为必传参数。filename 是一个...

    openpyxl模块是一个读写Excel 2010文档的Python库,如果要处理更早格式的Excel文档,需要用到额外的库,openpyxl是一个比较综合的工具,能够同时读取和修改Excel文档。其他很多的与Excel相关的项目基本只支持读或者写Excel一种功能。
    要对excel进行操作,必须要有能打开excel的软件,这里以wps为例

    一.获取wps的安装包并安装

    这里写图片描述

    二.excel文档的基本定义

    1) 工作薄(workbook):一个EXCEL文件就称为一个工作薄,一个工作薄中可以包含若干张工作表。
    2) 工作表(sheet):工作薄中的每一张表格称为工作表,每张工作表都有一个标签,默认为sheet1\sheet2\sheet3来命名,(一个工作 薄默认为由3个工作表组成)
    3) 活动表(active sheet):指当前正在操作的工作表
    4) 行(row): 工作表中的每一行行首数字(1、2、3、)称为行标题;一张工作表最多有65536行
    5) 列(column): 列标题:工作表中每一列列首的字母(A、B、C)称为列标题;一张工作表最多有256列
    6)单元格(cell): 工作表的每一个格称为单元格

    三.导入openpyxl模块

    在pycharm下,执行import openpyxl,发现会报错,这时我们将鼠标放在openpyxl上,按下alt + enter,选择第一个进行安装。
    这里写图片描述
    出现下图,说明安装成功。
    这里写图片描述
    如果安装失败,就需要到第三方库进行安装。

    pip3 install openpyx

    四.openpyxl基本用法

    1.创建对象

    打开或者创建一个Excel需要创建一个Workbook对象
    获取一个表则需要先创建一个Workbook对象,然后使用该对象的方法来得到一个Worksheet对象
    如果要获取表中的数据,那么得到Worksheet对象以后再从中获取代表单元格的Cell对象

    Workbook对象
      一个Workbook对象代表一个Excel文档,因此在操作Excel之前,都应该先创建一个Workbook对象。对于创建一个新的Excel文档,直接进行Workbook类的调用即可,对于一个已经存在的Excel文档,可以使用openpyxl模块的load_workbook函数进行读取,该函数包涵多个参数,但只有filename参数为必传参数。filename 是一个文件名,也可以是一个打开的文件对象。
      

    import openpyxl
    wb = openpyxl.Workbook('Book1.xlsx')
    wb1 = openpyxl.load_workbook('Book2.xlsx')
    
    print(wb)
    print(type(wb))
    print(wb1)
    print(type(wb1))

      
    这里写图片描述

    2.Workbook对象属性(工作簿操作)

    sheetnames:获取工作簿中的表(列表)
    active:获取当前活跃的Worksheet
    worksheets:以列表的形式返回所有的Worksheet(表格)
    read_only:判断是否以read_only模式打开Excel文档
    encoding:获取文档的字符集编码
    properties:获取文档的元数据,如标题,创建者,创建日期等

    import openpyxl
    
    wb = openpyxl.load_workbook('Book2.xlsx')
    print(wb.sheetnames)
    print(wb.active)
    print(wb.worksheets)
    print(wb.read_only)
    print(wb.encoding)
    print(wb.properties)  ##运行结果最后三行属于该属性

    excel信息
    这里写图片描述
    运行结果
    这里写图片描述

    3.Worksheet,Cell对象(工作表操作,单元格)

    Worksheet:
    title:表格的标题
    max_row:表格的最大行
    min_row:表格的最小行
    max_column:表格的最大列
    min_column:表格的最小列
    rows:按行获取单元格(Cell对象) - 生成器
    columns:按列获取单元格(Cell对象) - 生成器
    values:按行获取表格的内容(数据) - 生成器

    Cell:

    row:单元格所在的行
    column:单元格坐在的列
    value:单元格的值
    coordinate:单元格的坐标

    import openpyxl
    
    wb = openpyxl.load_workbook('Book2.xlsx')
    ##选择要操作的工作表, 返回工作表对象
    sheet = wb['排序商品信息']
    #获取工作表的名称
    print(sheet.title)
    # 获取工作表中行和列的最值
    print(sheet.max_column)
    print(sheet.max_row)
    print(sheet.min_column)
    print(sheet.min_row)
    ##修改表的名称
    sheet.title = 'sheet1'
    print(sheet.title)
    # 返回指定行指定列的单元格信息
    print(sheet.cell(row=1, column=2).value)
    cell = sheet['B1']
    print(cell)
    print(cell.row, cell.column, cell.value,cell.coordinate)

    运行前excel信息
    这里写图片描述
    这里写图片描述

    4.访问单元格的所有信息

    import openpyxl
    
    wb = openpyxl.load_workbook('Book2.xlsx')
    ##选择要操作的工作表, 返回工作表对象
    sheet = wb['排序商品信息']
    for row in sheet.rows:
        # 循环遍历每一个单元格
        for cell in row:
            # 获取单元格的内容
            print(cell.value, end=',')
        print()

    这里写图片描述

    import openpyxl
    
    wb = openpyxl.load_workbook('Book2.xlsx')
    ##选择要操作的工作表, 返回工作表对象
    sheet = wb['排序商品信息']
    for row in sheet.values:
        print(*row)

    这里写图片描述

    5.应用案例

    需求:
    商品名称 商品价格 商品数量
    - 定义一个函数, readwb(wbname, sheetname=None)
    - 如果用户指定sheetname就打开用户指定的工作表, 如果没有指定, 打开active sheet;
    - 根据商品的价格进行排序(由小到大), 保存到文件中;商品名称:商品价格:商品数量
    - 所有信息, 并将其保存到数据库中;

    import os
    
    import openpyxl
    
    
    def readwb(wbname, sheetname=None):
        # 打开工作薄
        wb = openpyxl.load_workbook(wbname)
        # 获取要操作的工作表
        if not sheetname:
            sheet = wb.active
        else:
            sheet = wb[sheetname]
    
        # 获取商品信息保存到列表中
        #[ ['name', price, count]
        #
        # ]
        all_info = []
        for row in sheet.rows:
            child = [cell.value for cell in row]
            all_info.append(child)
        return sorted(all_info, key=lambda item: item[1])
    
    
    def save_to_excel(data, wbname, sheetname='sheet1'):
        """
        将信息保存到excel表中;
        [[' BOOK', 50, 3], ['APPLE', 100, 1], ['BANANA', 200, 0.5]]
        """
        print("写入Excel[%s]中......." %(wbname))
        # 打开excel表, 如果文件不存在, 自己实例化一个WorkBook对象
        wb = openpyxl.Workbook()
        # 修改当前工作表的名称
        sheet = wb.active
        # 修改工作表的名称
        sheet.title = sheetname
    
        for row, item in enumerate(data):  # 0 [' BOOK', 50, 3]
            for column, cellValue in enumerate(item): #  0 ' BOOK'
                sheet.cell(row=row+1, column=column+1, value=cellValue)
    
        # ** 往单元格写入内容
        # sheet.cell['B1'].value = "value"
        # sheet.cell(row=1, column=2, value="value")
    
        # 保存写入的信息
        wb.save(filename=wbname)
        print("写入成功!")
    
    data = readwb(wbname='Book1.xlsx')
    save_to_excel(data, wbname='Book2.xlsx', sheetname="排序商品信息")

    原excel信息
    这里写图片描述
    新excel信息
    这里写图片描述

    展开全文
  • openpyxl模块安装及使用

    万次阅读 多人点赞 2019-04-11 09:28:01
    openpyxl模块: 是用于解决Excel(WPS等均可使用)中扩展名为xlsx/xlsm/xltx/xltm的文件读写的第三方库。xls文件要使用xlwt 、wlrd两个模块。 主要概念: Workbooks,Sheets,Cells。Workbook就是一个excel工作簿...

    openpyxl模块:
    是用于解决Excel(WPS等均可使用)中扩展名为xlsx/xlsm/xltx/xltm的文件读写的第三方库。xls文件要使用xlwt 、wlrd两个模块。

    主要概念:
    Workbooks,Sheets,Cells。Workbook就是一个excel工作簿;Sheet是工作簿中的一张工作表;Cell就是表的一个单元格。openpyxl不管读写都是:打开Workbook,定位Sheet,操作Cell。

    安装:
    cmd下pip install openpyxl安装。

    操作:
    在内存中新建一个工作薄:

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

    保存工作薄:

    >>> wb = Workbook()
    >>> wb.save('test.xlsx')						#必须提交保存才能显示操作产生的效果,此操作不能在文件打开(指双击文件打开)时进行,必须先关闭。
    

    读写已经存在的文件sheet:

    >>> from openpyxl import load_workbook
    >>> wb2 = load_workbook('test.xlsx')			#加载工作簿
    >>> print(wb2.sheetnames)  						
    ['Sheet2', 'New Title', 'Sheet1']
    

    获取默认工作表:

    >>> ws = wb.active
    

    通过指定的工作表名获取工作表对象:

    >>> ws3 = wb["New Title"]						#建议使用
    

    或者

    >>> ws = wb.get_sheet_by_name('New Title')   	
    

    创建新的工作表:

    >>> ws1 = wb.create_sheet("Mysheet") 			#默认在最后面创建一个Mysheet工作表,参数也可为空,默认为sheet*
    

    或者

    >>> ws2 = wb.create_sheet("Mysheet", 0) 		#在0索引位置插入一个工作表,此时插入的表名不可为空
    

    复制工作表:

    >>> source = wb.active
    >>> target = wb.copy_worksheet(source)
    

    删除工作表(删除后新建,相当于清空工作表):

    wb.remove(wb['Sheet'])							#wb.remove_sheet()已弃用
    

    del wb['Sheet']
    

    修改工作表名称:

    ws.title = "New Title"
    

    显示所有工作表名称:

    >>> print(wb.sheetnames)
    ['Sheet2', 'New Title', 'Sheet1']
    >>> for sheet in wb:
    ...     print(sheet.title)
    

    表中的数据操作:

    >>> from openpyxl import Workbook
    >>> wb = Workbook()
    >>> ws = wb.active
    

    修改表中的数据:

    >>> ws['A4'] = 4
    

    或者

    >>> d = ws.cell(row=4, column=2, value=10)		#第4行第2列值为10
    >>> c = ws['A4']
    >>> c.value = 'hello, world'
    >>> print(c.value)
    'hello, world'
    >>> d.value = 3.14
    >>> print(d.value)
    3.14
    

    获取行列:

    ws.max_row 										#获取最大行数
    ws.max_column									#获取最大列数
    ws.rows											#获取所有行
    ws.columns										#获取所有列
    

    列的字母与数字互转:

    from openpyxl.utils import get_column_letter, column_index_from_string 			
    # 根据列的数字返回字母: 	
    print(get_column_letter(2)) 					#结果为B
    #根据字母返回列的数字: 
    print(column_index_from_string('D'))  			#结果为4
    

    获取单元格对象:

    >>> c = ws['A4']
    

    切片多选(获取多个单元格):

    >>> cell_range = ws['A1':'C2']
    

    选择整行、整列:

    >>> colC = ws['C']								#选择C列
    >>> col_range = ws['C:D']						#选择C、D列
    >>> row10 = ws[10]								#选择第10行
    >>> row_range = ws[5:10]						#选择5-10行
    

    获取单个单元格中的数据:

    >>> print(ws['A2'].value)
    

    遍历获取指定区域的数据:

    >>> for i in range(1, 3):
    ... 	for j in range(1, 3):
    ... 		ws.cell(row=i, column=j)
    ... 
    <Cell 'Sheet'.A1>
    <Cell 'Sheet'.B1>
    <Cell 'Sheet'.A2>
    <Cell 'Sheet'.B2>
    

    将数据data写入Excel:此处data是由元组组成的列表数据

    rows = len(data)                           		#获取数据总行数
    columns = len(data[0])                 			#获取数据总列数
    for row in range(3, rows+3):  	   				#从第3行开始,前2行是表头
    	for column in range(1, columns+1):
    		zhi = data[row-3][column-1]
            ws.cell(row, column, value=zhi)    		#给单元格赋值
    

    合并、取消合并单元格:

    ws.merge_cells('B1:G1')							#合并B1-G1单元格
    ws.unmerge_cells('B1:G1')						#取消合并的B1-G1单元格
    

    单元格样式:openpyxl的单元格样式由6种属性决定,每一种都是一个类。

    font(字体类):字号、字体颜色、下划线等
    fill(填充类):颜色等
    border(边框类):设置单元格边框
    alignment(位置类):对齐方式
    number_format(格式类):数据格式
    protection(保护类):写保护
    

    单元格默认样式如下:

    >>> from openpyxl.styles import PatternFill, Border, Side, Alignment, Protection, Font
    >>> font = Font(name='Calibri',			      	#字体
    ...                 size=11,					#大小
    ...                 bold=False,					#加粗
    ...                 italic=False,				#斜体
    ...                 vertAlign=None,				#纵向对齐
    ...                 underline='none',			#下划线
    ...                 strike=False,				#删除线
    ...                 color='FF000000')			#颜色
    #下面2种填充方法均有可能不显示填充色:
    >>> fill = PatternFill(fill_type='solid',		#填充
    ...                 start_color='FFFFFFFF',		#前景色
    ...                 end_color='FF000000')		#背景色
    >>> fill = PatternFill(fill_type='solid', bgColor='FFFFFF', fgColor='33FF00')       #可显示背景色bgColor为33FF00(但此值为前景色fgColor的值),无法显示前景色
    >>> border = Border(left=Side(border_style='thin',  
     ...                           color='FF000000'),	#边框,必须导入Side函数,且颜色必须是FF0000格式
    ...                 right=Side(border_style='thin',
    ...                            color='FF000000'),
    ...                 top=Side(border_style='thin',
    ...                          color='FF000000'),
    ...                 bottom=Side(border_style='thin',
    ...                             color='FF000000'),
    ...                 diagonal=Side(border_style='thin',
    ...                               color='FF000000'),
    ...                 diagonal_direction=0,
    ...                 outline=Side(border_style='thin',
    ...                              color='FF000000'),
    ...                 vertical=Side(border_style='thin',
    ...                               color='FF000000'),
    ...                 horizontal=Side(border_style='thin',
    ...                                color='FF000000')
    ...                )
    >>> alignment=Alignment(horizontal='center',		#水平方向,left、center、right等
    ...                     vertical='bottom',			#垂直方向,center、top、bottom等
    ...                     text_rotation=0,			#文本旋转角度?
    ...                     wrap_text=False,			#自动换行
    ...                     shrink_to_fit=False,		#缩小填充
    ...                     indent=0)					#缩进
    >>> number_format = 'General'						#数据格式
    >>> protection = Protection(locked=True,			#锁定
    ...                         hidden=False)			#隐藏
    

    以上几种样式(字体、填充、边框、位置和保护)实例一旦被创建,实例的属性就不可更改,只能重新创建实例。

    PatternFill填充类型:fill_type若没有指定类型,则后续参数都无效。

    'none'、'solid'、'darkDown'、'darkGray'、'darkGrid'、'darkHorizontal'、'darkTrellis'、'darkUp'、'darkVertical'、'gray0625'、'gray125'、'lightDown'、'lightGray'、'lightGrid'、'lightHorizontal'、'lightTrellis'、'lightUp'、'lightVertical'、'mediumGray'
    

    border_style类型:border_style若没指定类型,则后续参数都无效。

    'thin','dashDot','dashDotDot','dashed','dotted','double','hair','medium','mediumDashDot','mediumDashDotDot','mediumDashed','slantDashDot','thick'
    
    >>> from openpyxl.styles import Font, Color
    >>> from openpyxl.styles import colors
    >>> from openpyxl import Workbook
    >>> wb = Workbook()
    >>> ws = wb.active
    >>> a1 = ws['A1']
    >>> d4 = ws['D4']
    >>> ft = Font(color=colors.RED)
    >>> a1.font = ft
    >>> d4.font = ft
    >>> a1.font.italic = True 							#不会生效,样式实例一旦创建,实例的属性就不可改变
    >>> # 若要改变样式,必须新建样式实例
    >>> a1.font = Font(color=colors.RED, italic=True) 	#创建字体实例(红色、斜体,其他属性默认)
    

    复制样式:样式可以被复制

    >>> from openpyxl.styles import Font
    >>> ft1 = Font(name='Arial', size=14)
    >>> ft2 = ft1.copy(name="Tahoma") 					#复制时指定字体为“Tahoma”,其他属性均复制自ft1
    >>> ft1.name
    'Arial'
    >>> ft2.name
    'Tahoma'
    >>> ft2.size
    14.0
    

    基本字体颜色:字体颜色有一些颜色常量,可以直接调用

    from openpyxl.styles import Font
    from openpyxl.styles.colors import RED
    font = Font(color=RED)
    font = Font(color="00FFBB00")
    

    也可以按索引创建实例:

    from openpyxl.styles.colors import Color
    c = Color(indexed=32)
    c = Color(theme=6, tint=0.5)
    

    V2.3.5版本中颜色必须使用“00XXXXXX”格式,不能使用“#XXXXXX”格式。如果颜色不生效请查看版本。

    应用样式:可以直接应用到单元格:

    from openpyxl.workbook import Workbook
    from openpyxl.styles import Font, Fill
    wb = Workbook()
    ws = wb.active
    c = ws['A1']
    c.font = Font(size=12)
    #可以对整行整列设置样式,前提是单元格已创建。
    col = ws.column_dimensions['A']
    col.font = Font(bold=True)
    row = ws.row_dimensions[1]
    row.font = Font(underline="single")
    

    数据格式:属性number_format的值是字符串类型,不为对象,直接赋值即可。openpyxl内置了一些数据格式,查看openpyxl.styles.numbers,也支持excel自定义格式,以下两种方式效果相同:

    # 使用openpyxl内置的格式
    from openpyxl.styles import numbers
    ws.cell['D2'].number_format = numbers.FORMAT_GENERAL
    ws.cell(row=2, column=4).number_format = numbers.FORMAT_DATE_XLSX15
    # 直接使用字符串
    ws.cell['D2'].number_format = 'General'
    ws.cell(row=2, column=4).number_format = 'd-mmm-yy'
    

    编辑页面设置:

    from openpyxl.workbook import Workbook
    wb = Workbook()
    ws = wb.active
    ws.page_setup.orientation = ws.ORIENTATION_LANDSCAPE	#方向-竖屏(LANDSCAPE),横屏(PORTRAIT)
    ws.page_setup.paperSize = ws.PAPERSIZE_TABLOID 			#纸张尺寸
    ws.page_setup.fitToHeight = 0                  			#自适应高度
    ws.page_setup.fitToWidth = 1                   			#自适应宽度
    

    编辑打印选项:

    from openpyxl.workbook import Workbook
    wb = Workbook()
    ws = wb.active
    ws.print_options.horizontalCentered = True				#水平居中
    ws.print_options.verticalCentered = True       			#垂直居中
    

    插入列:

    import openpyxl
    wb = openpyxl.load_workbook(r"test.xlsx")				#读取原表
    ws = wb.active
    lie = 2													#在第几列后面插入
    n = 5													#插入几列
    wb2 = openpyxl.Workbook()								#创建新表
    ws2 = wb2.active
    ws2.title = 'new'										#设置新表名
    for col in range(1, ws.max_column+1):
    	for ro in range(1, ws.max_row+1):
    		if col<=lie:
    			ws2.cell(row=ro, column=col).value=ws.cell(row=ro, column=col).value
    		else:
    			ws2.cell(row=ro, column=col+n).value=ws.cell(row=ro, column=col).value
    wb2.save(r"test.xlsx")									#勿忘保存
    

    插入行:

    wb = openpyxl.load_workbook(r"test.xlsx")				#读取原表
    ws = wb.active
    hang = 2												#在第几行后面插入
    n = 5													#插入几行
    wb2 = openpyxl.Workbook()								#创建新表
    ws2 = wb2.active
    ws2.title = 'new'										#设置新表名
    for ro in range(1, ws.max_row+1):
    	for col in range(1, ws.max_column+1):
    		if ro<=hang:
    			ws2.cell(row=ro, column=col).value=ws.cell(row=ro, column=col).value
    		else:
    			ws2.cell(row=ro+n, column=col).value=ws.cell(row=ro, column=col).value
    wb2.save(r"test.xlsx")									#勿忘保存
    

    其它第三方库:针对电子表格的第三方库,除了openpyxl之外,还有xlsxwriter:针对Excel 2010格式,如.xlsx;xlrd、xlwt用来处理.xls格式的电子表格。

    展开全文
  • openpyxl模块

    2020-06-06 20:48:48
    Python_Openpyxl 1. 安装 pip install openpyxl 2. 打开文件 ① 创建 from openpyxl import Workbook # 实例化 wb = Workbook() # 激活 worksheet ws = wb.active ② 打开已有 >>> from ...

    Python_Openpyxl

    1. 安装

    pip install openpyxl

    2. 打开文件

    ① 创建

    from  openpyxl import  Workbook 
    # 实例化
    wb = Workbook()
    # 激活 worksheet
    ws = wb.active

    ② 打开已有

    >>> from openpyxl  import load_workbook
    >>> wb2 = load_workbook('文件名称.xlsx')

    3. 储存数据

    复制代码

    # 方式一:数据可以直接分配到单元格中(可以输入公式)
    ws['A1'] = 42
    # 方式二:可以附加行,从第一列开始附加(从最下方空白处,最左开始)(可以输入多行)
    ws.append([1, 2, 3])
    # 方式三:Python 类型会被自动转换
    ws['A3'] = datetime.datetime.now().strftime("%Y-%m-%d")

    复制代码

    4. 创建表(sheet)

    # 方式一:插入到最后(default)
    >>> ws1 = wb.create_sheet("Mysheet") 
    # 方式二:插入到最开始的位置
    >>> ws2 = wb.create_sheet("Mysheet", 0)

    5. 选择表(sheet)

    # sheet 名称可以作为 key 进行索引
    >>> ws3 = wb["New Title"]
    >>> ws4 = wb.get_sheet_by_name("New Title")
    >>> ws is ws3 is ws4
    True

    6. 查看表名(sheet)

    复制代码

    # 显示所有表名
    >>> print(wb.sheetnames)
    ['Sheet2', 'New Title',  'Sheet1']
    # 遍历所有表
    >>> for sheet in  wb:
    ...     print(sheet.title)

    复制代码

    7. 访问单元格(call)

    ① 单一单元格访问

    复制代码

    # 方法一
    >>> c = ws['A4']
    # 方法二:row 行;column 列
    >>> d = ws.cell(row=4, column=2, value=10)
    # 方法三:只要访问就创建
    >>> for i in  range(1,101):
    ...         for j in range(1,101):
    ...            ws.cell(row=i, column=j)

    复制代码

    ② 多单元格访问

    复制代码

    # 通过切片
    >>> cell_range = ws['A1':'C2']
    # 通过行(列)
    >>> colC = ws['C']
    >>> col_range = ws['C:D']
    >>> row10 = ws[10]
    >>> row_range = ws[5:10]
    # 通过指定范围(行 → 行)
    >>> for row in  ws.iter_rows(min_row=1, max_col=3, max_row=2):
    ...    for cell in  row:
    ...        print(cell)
    <Cell Sheet1.A1>
    <Cell Sheet1.B1>
    <Cell Sheet1.C1>
    <Cell Sheet1.A2>
    <Cell Sheet1.B2>
    <Cell Sheet1.C2> 
    # 通过指定范围(列 → 列)
    >>> for row in  ws.iter_rows(min_row=1, max_col=3, max_row=2):
    ...    for cell in  row:
    ...        print(cell)
    <Cell Sheet1.A1>
    <Cell Sheet1.B1>
    <Cell Sheet1.C1>
    <Cell Sheet1.A2>
    <Cell Sheet1.B2>
    <Cell Sheet1.C2>
    # 遍历所有 方法一
    >>> ws = wb.active
    >>> ws['C9'] = 'hello world'
    >>> tuple(ws.rows)
    ((<Cell Sheet.A1>, <Cell Sheet.B1>, <Cell Sheet.C1>),
    (<Cell Sheet.A2>, <Cell Sheet.B2>, <Cell Sheet.C2>),
    ...
    (<Cell Sheet.A8>, <Cell Sheet.B8>, <Cell Sheet.C8>),
    (<Cell Sheet.A9>, <Cell Sheet.B9>, <Cell Sheet.C9>))
    # 遍历所有 方法二
    >>> tuple(ws.columns)
    ((<Cell Sheet.A1>,
    <Cell Sheet.A2>,
    <Cell Sheet.A3>,
    ...
    <Cell Sheet.B7>,
    <Cell Sheet.B8>,
    <Cell Sheet.B9>),
    (<Cell Sheet.C1>,
    ...
    <Cell Sheet.C8>,
    <Cell Sheet.C9>))

    复制代码

    8. 保存数据

    >>> wb.save('文件名称.xlsx')

    9. 其他

    ① 改变 sheet 标签按钮颜色

    ws.sheet_properties.tabColor = "1072BA"

    ② 获取最大行,最大列

    # 获得最大列和最大行
    print(sheet.max_row)
    print(sheet.max_column)

    ③ 获取每一行,每一列

    • sheet.rows为生成器, 里面是每一行的数据,每一行又由一个tuple包裹。
    • sheet.columns类似,不过里面是每个tuple是每一列的单元格。

    复制代码

    # 因为按行,所以返回A1, B1, C1这样的顺序
    for row in sheet.rows:
        for cell in row:
            print(cell.value)
    
    # A1, A2, A3这样的顺序
    for column in sheet.columns:
        for cell in column:
            print(cell.value)

    复制代码

    ④ 根据数字得到字母,根据字母得到数字

    复制代码

    from openpyxl.utils import get_column_letter, column_index_from_string
    
    # 根据列的数字返回字母
    print(get_column_letter(2))  # B
    # 根据字母返回列的数字
    print(column_index_from_string('D'))  # 4

    复制代码

    ⑤ 删除工作表

    # 方式一
    wb.remove(sheet)
    # 方式二
    del wb[sheet]

    ⑥ 矩阵置换(行 → 列)

    复制代码

    rows = [
        ['Number', 'data1', 'data2'],
        [2, 40, 30],
        [3, 40, 25],
        [4, 50, 30],
        [5, 30, 10],
        [6, 25, 5],
        [7, 50, 10]]
    
    list(zip(*rows))
    
    # out
    [('Number', 2, 3, 4, 5, 6, 7),
     ('data1', 40, 40, 50, 30, 25, 50),
     ('data2', 30, 25, 30, 10, 5, 10)]
    
    # 注意 方法会舍弃缺少数据的列(行)
    rows = [
        ['Number', 'data1', 'data2'],
        [2, 40      ],    # 这里少一个数据
        [3, 40, 25],
        [4, 50, 30],
        [5, 30, 10],
        [6, 25, 5],
        [7, 50, 10],
    ]
    # out
    [('Number', 2, 3, 4, 5, 6, 7), ('data1', 40, 40, 50, 30, 25, 50)]

    复制代码

    10. 设置单元格风格

    ① 需要导入的类

    from openpyxl.styles import Font, colors, Alignment

    ② 字体

    • 下面的代码指定了等线24号加粗斜体,字体颜色红色。直接使用cell的font属性,将Font对象赋值给它。
    bold_itatic_24_font = Font(name='等线', size=24, italic=True, color=colors.RED, bold=True)
    
    sheet['A1'].font = bold_itatic_24_font

    ③ 对齐方式

    • 也是直接使用cell的属性aligment,这里指定垂直居中和水平居中。除了center,还可以使用right、left等等参数
    # 设置B1中的数据垂直居中和水平居中
    sheet['B1'].alignment = Alignment(horizontal='center', vertical='center')

    ④ 设置行高和列宽

    # 第2行行高
    sheet.row_dimensions[2].height = 40
    # C列列宽
    sheet.column_dimensions['C'].width = 30

    ⑤ 合并和拆分单元格

    • 所谓合并单元格,即以合并区域的左上角的那个单元格为基准,覆盖其他单元格使之称为一个大的单元格。
    • 相反,拆分单元格后将这个大单元格的值返回到原来的左上角位置。
    # 合并单元格, 往左上角写入数据即可
    sheet.merge_cells('B1:G1') # 合并一行中的几个单元格
    sheet.merge_cells('A1:C3') # 合并一个矩形区域中的单元格
    • 合并后只可以往左上角写入数据,也就是区间中:左边的坐标。
    • 如果这些要合并的单元格都有数据,只会保留左上角的数据,其他则丢弃。换句话说若合并前不是在左上角写入数据,合并后单元格中不会有数据。
    • 以下是拆分单元格的代码。拆分后,值回到A1位置
    sheet.unmerge_cells('A1:C3')

    最后举个例子

    复制代码

    import datetime
    from random import choice
    from time import time
    from openpyxl import load_workbook
    from openpyxl.utils import get_column_letter
    
    # 设置文件 mingc
    addr = "openpyxl.xlsx"
    # 打开文件
    wb = load_workbook(addr)
    # 创建一张新表
    ws = wb.create_sheet()
    # 第一行输入
    ws.append(['TIME', 'TITLE', 'A-Z'])
    
    # 输入内容(500行数据)
    for i in range(500):
        TIME = datetime.datetime.now().strftime("%H:%M:%S")
        TITLE = str(time())
        A_Z = get_column_letter(choice(range(1, 50)))
        ws.append([TIME, TITLE, A_Z])
    
    # 获取最大行
    row_max = ws.max_row
    # 获取最大列
    con_max = ws.max_column
    # 把上面写入内容打印在控制台
    for j in ws.rows:    # we.rows 获取每一行数据
        for n in j:
            print(n.value, end="\t")   # n.value 获取单元格的值
        print()
    # 保存,save(必须要写文件名(绝对地址)默认 py 同级目录下,只支持 xlsx 格式)
    wb.save(addr)

    复制代码

    展开全文
  • Python 的 openpyxl 模块可以让我们能读取和修改 Excel 文件。 首先让我们先理解一些 Excel 基础概念。 1 Excel 基础概念 Excel 文件也称做为工作簿。每个工作簿可以包含多个工作表(Sheet)。用户当前查看的表或...
  • python模块-csv模块与openpyxl模块

    千次阅读 2019-06-21 00:09:47
    csv模块的简单使用 csv格式存储数据,读写比较方便,易于实现,文件也会比Excel文件小。但csv文件缺少Excel文件本身的很多功能,比如不能嵌入图像和图表,不能生成公式,下面是基本的代码。 安装方法:window电脑...
  • 一个简答的使用助我们使用python简单操作excel标签!!! 1.openpyxl模块简介: ...(openpyxl模块安装:pip install openpyxl即可) openpyxl是一个开源项目,openpyxl模块是一个读写Excel 2010文档的Python库,...
  • openpyxl 模块介绍 openpyxl是一个读写Excel 2010文档的Python库,如果要处理更早格式的Excel文档,需要用到额外的库,openpyxl是一...安装openpyxl模块 我们都有Pycharm,直接在Pycharm里面安装即可 openpyxl的基本...
  • python提供的xlrd模块其实并不好用,它会有容量限制,我发现了一个比较好用的模块——openpyxl,它的容量大,而且简单易用。接下来我就讲一下它的一些常用的基本操作。 1、Excel 基础概念 Excel 文件也称做为工作簿...
  • Python使用openpyxl模块读写excel文件

    万次阅读 2019-05-26 22:11:48
    Python使用openpyxl模块读写excel文件 openpyxl是一个用于写入和读取xlsx格式的excel文件的Python模块。 excel2010后的后缀名为xlsx,不再是xls,使用openpyxl是最适合对xlsx文件进行读取的库。 一、安装openpyxl...
  • import openpyxl from openpyxl.utils import FORMULAE from openpyxl.drawing.image import Image # 检查公式是否存在 ... # SUM函数使用 ws1['A1'] = 100 ws1['A2'] = 200 ws1['A3'] = '=A1+A2' ws1['A4'] ...
  • openpyxl模块介绍

    2018-05-16 16:59:00
    openpyxl模块是一个读写Excel 2010文档的Python库,如果要处理更早格式的Excel文档,需要用到额外的库,openpyxl是一个比较综合的工具,能够同时读取和修改Excel文档。其他很多的与Excel相关的项目基本只支持读或者...
  • openpyxl模块允许您的Python程序读取和修改Excel电子表格文件。例如,您可能会从一个电子表格中复制某些数据并将其粘贴到另一个电子表格中。或者,您可能需要经过数千行,并根据一些标准挑选出少数几行进行小编辑...
  • 【Python】openpyxl模块

    2019-02-24 20:13:17
    openpyxl模块 1.读取数据 pip install openpyxl load_workbook 工作薄也就是我们常说的excel文件 sheet 表单 cell 表格 操作的是xlsx结尾的 打开文件 wb = load_workbook(r"E:\code\pyClass\preview\py_...
  • python之openpyxl模块

    2018-08-17 19:07:00
    一 . Python操作EXCEL库的简介 1.1 Python官方库操作excel Python官方库一般使用xlrd库来读取Excel文件,使用xlwt库来生成Excel文件,...第三方库openpyxl(可读写excel表),专门处理Excel2007及以上版本产生的...
  • python openpyxl模块

    2018-09-18 11:25:24
    openpyxl基本用法  想要操作Excel首先要了解Excel 基本概念,Excel中列以字幕命名,行以数字命名,比如左上角第一个单元格的坐标为A1,下面的为A2,右边的B1。  openpyxl中有三个不同层次的类,Workbook是对工作...
  • CSV模块 读CSV文件示例: import csv with open("test.csv",newline = '') as f: #test.csv 为要读取的文件 reader = csv.reader(f) #使用csv的reader()方法,创建一个reader对象 for row in reader: #遍历...
  • Python openpyxl模块常用方法与属性【一篇就够了】

    万次阅读 多人点赞 2020-04-16 14:25:04
    load_workbook()函数接受文件名,返回一个 workbook 数据类型的值。这个 workbook 对象代表这个 Excel 文件,有点类似 File 对象代表一个打开的文本文件。 >>> import openpyxl >>> wb = ...
  • python 读写 excel 有好多选择,但是,方便操作的库不多,在我尝试了几个库之后,我觉得两个比较方便的库分别是 xlrd/xlwt、openpyxl。 之所以推荐两个库是因为这两个库分别操作的是不同版本的 excel,xlrd操作的是...
  • openpyxl模块(excel操作)

    千次阅读 2019-10-04 18:55:01
    openpyxl模块(excel操作) 代码老兵关注2人评论102083人阅读2018-03-22 09:34:07 openpyxl模块介绍 openpyxl模块是一个读写Excel 2010文档的Python库,如果要处理更早格式的Excel文档,需要用到额外的库,openpyxl...
  • python openpyxl模块操作

    千次阅读 2019-03-04 16:02:10
    # openpyxl模块库 支持同时读写excel操作,只能识别后缀为xlsx结尾的excel from openpyxl import load_workbook #读取excel中的数据 #工作簿 workbook 指定工作簿 wb = load_workbook('test_data_1.xlsx') #表单 ...
  • 3、python3中字符串是以Unicode编码的,ord()函数将字符转换为十进制数,chr()将编码转换为字符。python的字符串类型str在内存中以Unicode编码,如果要在网络上传输,或者保存到磁盘上,就需要把str变为以字节为...
  • 通过openpyxl模块 循环遍历excel文件中所有sheet表格。 操作步骤: (1)用load_workbook函数打开excel文件,返回一个工作簿对象 (2)用工作簿对象获取所有的sheet (3)第一个for循环遍历所有sheet (4)每次遍历...
  • openpyxl模块的应用

    2021-03-19 15:40:51
    利用openpyxl.Workbook()函数创建新的workbook(工作薄)对象,就是创建新的空的Excel文件。 wb=openpyxl.Workbook() wb.active就是获取工作薄的活动表,通常指的是第一个表,也就是sheet1 sheet=wb..
  • python自动化测试-操作EXCEL文件 在日常自动化测试工作中,依赖...导入openpyxl第三方模块 导入文件的命令:pip install openpyxl模块导入成功后我们就能在py文件中导入了 from openpyxl import load_workb...
  • python3.7 openpyxl函数 拆分 excel 单元格

    千次阅读 2019-10-07 12:52:00
    openpyxl 不支持xls 格式的表格,所以需要利用pandas 或者 xlwt 函数另存为xlsx格式: 代码如下: # encoding:utf-8 import pandas as pd import openpyxl xl = pd.read_excel(r"E:\55\CRM经营分析表-10001741-...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,556
精华内容 1,022
关键字:

openpyxl模块所有函数