• Python-Excel 模块哪家强 #华为云·寻找黑马程序员#


    python操作excel

    最原始的莫过于两位老牌黄金搭档xlrd xlwt了,针对二者的封装有如下模块:

    • xlutils & xlrd & xlwt

    为什么把这三个一起说?
    首先,xlutils封装了xlrd xlwt,所以在使用前,会先下载这两个依赖的模块。
    其次,这两个模块主要用于处理xls文件,而对xlsx的文件处理很挫,甚至xlwt不支持…
    但为何到现在依然在使用这些模块,因为他对xls文档处理的优势…

    • win32com & DataNitro

    这两个模块又是怎么一回事儿?他俩仅支持windows系统环境
    win32com这个模块大家不算陌生了,windows下的操作,哪儿他都能插一腿…至于使用,就点击链接自己看吧…
    至于DataNitro,本来不想说的,但毕竟很多帖子都提到了它,我不写不太好,但大家知道他是一个Excel 的插件,安装也需单独到官网下载即可…

    • pandas

    pandas作为数据分析利器,在处理excel方面也是犀利的一腿…
     

    import  pandas  as pd
    #方法一:默认读取第一个表单
    df=pd.read_excel('lemon.xlsx')#这个会直接默认读取到这个Excel的第一个表单
    data=df.head()#默认读取前5行的数据
    print("获取到所有的值:
    {0}".format(data))#格式化输出
    
    #方法二:通过指定表单名的方式来读取
    df=pd.read_excel('lemon.xlsx',sheet_name='student')#可以通过sheet_name来指定读取的表单
    data=df.head()#默认读取前5行的数据
    print("获取到所有的值:
    {0}".format(data))#格式化输出
    
    #方法三:通过表单索引来指定要访问的表单,0表示第一个表单
    #也可以采用表单名和索引的双重方式来定位表单
    #也可以同时定位多个表单,方式都罗列如下所示
    df=pd.read_excel('lemon.xlsx',sheet_name=['python','student'])#可以通过表单名同时指定多个
    # df=pd.read_excel('lemon.xlsx',sheet_name=0)#可以通过表单索引来指定读取的表单
    # df=pd.read_excel('lemon.xlsx',sheet_name=['python',1])#可以混合的方式来指定
    # df=pd.read_excel('lemon.xlsx',sheet_name=[1,2])#可以通过索引 同时指定多个
    data=df.values#获取所有的数据,注意这里不能用head()方法哦~
    print("获取到所有的值:
    {0}".format(data))#格式化输出
    

    xlsxwriter

    xlsxwriter拥有丰富的特性,支持图片/表格/图表/筛选/格式/公式等,功能与openpyxl相似,优点是相比 openpyxl 还支持 VBA 文件导入,迷你图等功能,缺点是不能打开/修改已有文件,意味着使用 xlsxwriter 需要从零开始。
    代码示例:
     

    import xlsxwriter
    
    # Create a workbook and add a worksheet.
    workbook = xlsxwriter.Workbook('Expenses01.xlsx')
    worksheet = workbook.add_worksheet()
    
    # Some data we want to write to the worksheet.
    expenses = (
        ['Rent', 1000],
        ['Gas',   100],
        ['Food',  300],
        ['Gym',    50],
    )
    
    # Start from the first cell. Rows and columns are zero indexed.
    row = 0
    col = 0
    
    # Iterate over the data and write it out row by row.
    for item, cost in (expenses):
        worksheet.write(row, col,     item)
        worksheet.write(row, col + 1, cost)
        row += 1
    
    # Write a total using a formula.
    worksheet.write(row, 0, 'Total')
    worksheet.write(row, 1, '=SUM(B1:B4)')
    
    workbook.close()
    

    xlwings简单强大,使用方便。而且搞下ode是,这是为数不多的模块开发者,在平台卖课的,哈哈…

    image.png

    import xlwings as xw
    
    #连接到excel
    workbook = xw.Book(r'path/myexcel.xlsx')#连接excel文件
    #连接到指定单元格
    data_range = workbook.sheets('Sheet1').range('A1')
    #写入数据
    data_range.value = [1,2,3]
    #保存
    workbook.save()
    

    最后要说说个人比较常用,也很方便的一个excel处理模块openpyxl…这个模块突出的优势在于,对excel单元格样式的设置方面特别详细。所以针对openpyxl,详细的介绍一下.

    openpyxl

    • 写一个工作簿
    >>> from openpyxl import Workbook
    >>> from openpyxl.utils import get_column_letter
    >>>
    >>> wb = Workbook()
    >>>
    >>> dest_filename = 'empty_book.xlsx'
    >>>
    >>> ws1 = wb.active
    >>> ws1.title = "range names"
    >>>
    >>> for row in range(1, 40):
    ...     ws1.append(range(600))
    >>>
    >>> ws2 = wb.create_sheet(title="Pi")
    >>>
    >>> ws2['F5'] = 3.14
    >>>
    >>> ws3 = wb.create_sheet(title="Data")
    >>> 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)))
    >>> print(ws3['AA10'].value)
    AA
    >>> wb.save(filename = dest_filename)
    
    • 读取现有工作簿
    >>> from openpyxl import load_workbook
    >>> wb = load_workbook(filename = 'empty_book.xlsx')
    >>> sheet_ranges = wb['range names']
    >>> print(sheet_ranges['D18'].value)
    3
    
    • 插入图像 (需要依赖pillow…)
    >>> from openpyxl import Workbook
    >>> from openpyxl.drawing.image import Image
    >>>
    >>> wb = Workbook()
    >>> ws = wb.active
    >>> ws['A1'] = 'You should see three logos below'
    >>> # create an image
    >>> img = Image('logo.png')
    >>> # add to worksheet and anchor next to cells
    >>> ws.add_image(img, 'A1')
    >>> wb.save('logo.xlsx')
    
    • 使用样式
      样式用于在屏幕上显示时更改数据的外观。它们还用于确定数字的格式。
      样式可以应用于以下方面:
    • 字体设置字体大小,颜色,下划线等
    • 填充以设置图案或颜色渐变
    • 边框设置单元格上的边框
    • 单元格排列
    • 保护

    以下是默认值

    >>> 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')
    >>> fill = PatternFill(fill_type=None,
    ...                 start_color='FFFFFFFF',
    ...                 end_color='FF000000')
    >>> border = Border(left=Side(border_style=None,
    ...                           color='FF000000'),
    ...                 right=Side(border_style=None,
    ...                            color='FF000000'),
    ...                 top=Side(border_style=None,
    ...                          color='FF000000'),
    ...                 bottom=Side(border_style=None,
    ...                             color='FF000000'),
    ...                 diagonal=Side(border_style=None,
    ...                               color='FF000000'),
    ...                 diagonal_direction=0,
    ...                 outline=Side(border_style=None,
    ...                              color='FF000000'),
    ...                 vertical=Side(border_style=None,
    ...                               color='FF000000'),
    ...                 horizontal=Side(border_style=None,
    ...                                color='FF000000')
    ...                )
    >>> alignment=Alignment(horizontal='general',
    ...                     vertical='bottom',
    ...                     text_rotation=0,
    ...                     wrap_text=False,
    ...                     shrink_to_fit=False,
    ...                     indent=0)
    >>> number_format = 'General'
    >>> protection = Protection(locked=True,
    ...                         hidden=False)
    >>>
    

    The End

    OK,今天的内容就到这里,如果觉得有帮助,欢迎将文章或我的微信公众号【清风Python】分享给更多喜欢python的人,谢谢。

    作者:清风Python

  • 相关阅读:
    cmd常用命令大全
    网卡物理地址
    想看密码的请心平气和听我说
    作为一个程序员仪表
    960,950栅格化方法
    为什么要拿宽960做栅格化呢
    960栅格化优势
    虎牌 查询 自选号
    视频
    在线学习视频地址
  • 原文地址:https://www.cnblogs.com/huaweicloud/p/11861626.html
Copyright © 2020-2023  润新知