zoukankan      html  css  js  c++  java
  • 爬虫入门【9】Python链接Excel操作详解-openpyxl库

    Openpyx是一个用于读写Excel2010各种xlsx/xlsm/xltx/xltm文件的python库。
    现在大多数用的都是office2010了,如果之前之前版本的可以使用xlrd读,xlwt写,这里就不介绍了。

    入门范例

    from openpyxl import Workbook
    
    wb=Workbook()#创建一个工作簿
    ws=wb.active#获取工作的激活工作表
    
    ws['A1']=42#在A1中插入内容
    ws.append([1,2,3])#这里其实是在第二行插入了3个数字,占用了三个单元格
    
    import datetime
    ws['A2']=datetime.datetime.now()#在A2中插入了当前时间,把上一句的那个1挤掉了
    
    wb.save('sample.xlsx')#保存到当前目录
    

    简单操作

    创建一个workbook

    一般创建workbook后至少会有一个worksheet,我们可以通过active属性来获取。
    我们还可以通过create_sheet()方法来创建新的worksheet。
    一般默认创建的sheet的名字是序列化的,我们可以更改title属性来设置想要的名称。
    一旦我们指定了名称,可以使用key的方法获取,wb['Title']

    from openpyxl import Workbook
    wb=Workbook()
    ws=wb.active
    
    ws1=wb.create_sheet('Mysheet')#默认插入到最后
    ws2=wb.create_sheet('Mysheet1',0)#指定插入到第一个位置
    
    ws.title='New Title'
    
    ws3=wb['New Title']
    
    

    如果我们想要遍历所有的sheet,可以用for循环。

    for sheet in wb:
        print(sheet.title)
    

    我们还可以在同一个workbook内拷贝sheet

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

    控制单元格

    单元格可以通过key的方式直接获取,如果不存在这个key,会创建一个。
    并且可以直接指定单元格的值

    c=ws['A3']
    ws['A4']=4
    

    另外一直是通过worksheet的cell()方法来指定单元格。

    d=ws.cell(row=4,colum=2,value=10)
    
    如果我们在内存中创建一个worksheet,它是默认没有包含cell的,只有第一次使用的时候才会创建。

    所以我们可以提前将所需要的单元格过一遍,不指定值,就可以创建出来。

    for i in range(1,101):
        for j in range(1,101):
            ws.cell(row=i,colum=j)
    

    矩阵型的单元格组可以使用切片获取:

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

    单列或者单行的单元格,也是类似的获取方式

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

    或者采用迭代器的方法,iter_rows()和iter_cols()方法。

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

    数据存储

    一旦我们得到一个cell,我们就可以指定值了。

    c.value='hello world'
    print(c.value)
    
    d.value=3.14
    print(d.value)
    

    保存文件

    workbook的save方法,指定文件保存路径即可。
    不过save方法会覆盖相同路径的文件。

    wb=Workbook()
    wb.save('sample.xlsx')
    

    加载文件

    需要引入load_workbook()

    from openpyxl import load_workbook
    
    wb2=load_workbook('sample.xlsx')
    print(wb2.get_sheet_names())
    

    几个范例

    写workbook

    在一个book中创建了3个sheet。

    from openpyxl import Workbook
    from openpyxl.compat import range
    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)
    
    wb.save(filename=dest_filename)
    

    读取一个workbook

    from openpyxl import load_workbook
    
    wb=load_workbook(filename='empty_book.xlsx')
    sheet_ranges=wb['range names']
    print(sheet_ranges['D18'].value)
    

    其他诸如插入图片、构建图表等情况,用到的时候再讲解。

  • 相关阅读:
    最新seo优化技巧
    5ucms 调用当前文章的评论,以及评论列表
    5ucms的评论列表该怎么写
    Data Structure Binary Tree: Check for Children Sum Property in a Binary Tree
    Data Structure Binary Tree: Level order traversal in spiral form
    Data Structure Binary Search Tree: Inorder Successor in Binary Search Tree
    Algorithm: bit manipulation
    Algorithm: pattern searching
    Algorithm: dynamic programming
    Algorithm: inversion
  • 原文地址:https://www.cnblogs.com/xingzhui/p/8011157.html
Copyright © 2011-2022 走看看