zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    (转载)SAPI 包含sphelper.h编译错误解决方案
    C++11标准的智能指针、野指针、内存泄露的理解(日后还会补充,先浅谈自己的理解)
    504. Base 7(LeetCode)
    242. Valid Anagram(LeetCode)
    169. Majority Element(LeetCode)
    100. Same Tree(LeetCode)
    171. Excel Sheet Column Number(LeetCode)
    168. Excel Sheet Column Title(LeetCode)
    122.Best Time to Buy and Sell Stock II(LeetCode)
    404. Sum of Left Leaves(LeetCode)
  • 原文地址:https://www.cnblogs.com/huaweicloud/p/11861626.html
Copyright © 2011-2022 走看看