• python读写excel


    在工作中往往需要读取 excel 文件,但是读取 excel 的方式很多,本文只列举集中比较好用的读写 2003 或者 2007 的方法:

    读取2007版本的excel

    读取xlsx 需要用库 openpyxl , 安装方式: pip3 install openpyxl 。设置 excel 的路径:

    import openpyxl
    openpyxl.excelPath = "F:/code/python/test.xlsx"
    workBook=load_workbook(excelPath)
    

    读取第一个 Sheet 表中的内容:

    # 仅仅读取Sheet1
    workSheet = workBook.get_sheet_by_name("Sheet1")
    

    这个库读取行和列是从 1 开始的,而不是从 0 开始的,所以设置初始的行和列都为 1 :

    # 行、列的初始值
    rownum = 1
    columnnum = 1
    
    # 获取第一行第一列单元格的值
    cell = workSheet.cell(row=rownum, column=columnnum).value
    print(cell)
    

    当然也可以读取第二个 Sheet 表中的内容,只要将 get_sheet_by_name 改成 Sheet2 就行了。

    写入2007版本的excel

    写入 xlsx 需要用到库 xlsxwriter ,安装方式 pip3 install xlsxwriter 。新建或者是打开某个 excel ,我这里是新建一个 excel

    # 打开某个excel
    with xlsxwriter.Workbook("F:/code/python/test1.xlsx") as workbook:
    

    新建的 Sheet 的名字可以随便取,不是新建的要先读取当前 Sheet 的内容出来,再把自己的内容添加进去:

    # 设置Sheet的名字为haha
    worksheet = workbook.add_worksheet("haha")
    

    设置列首、行宽、列高:

    # 列首
    title = ["id", "img", "label"]
    worksheet.write_row('A1', title)
    
    # B列列宽
    worksheet.set_column("B:B", 32)
    # 第i行的行高
    worksheet.set_row(i, 150)
    

    写入数据:

    # 数据
    i=0
    row = ["123","456","789"]
    worksheet.write_row('A' + str(i + 1), row)
    

    切记要关闭 excel :

    workbook.close()
    

    如果想插入图片:

    from io import BytesIO
    from urllib import request
    url="https://www.tybai.com/static/jpg/head.jpg"
    # 缓存图片
    image_data = BytesIO(request.urlopen(url).read())
    # 插入图片
    worksheet.insert_image('A1',url,{'image_data': image_data})
    

    读取2003版本的excel

    读取xls 需要用库 xlrd , 安装方式: pip3 install xlrd 。设置 excel 的路径:

    excelPath = "F:/code/python/test.xls"
    

    加载 excel

    # 加载xlsx
    wb = xlrd.open_workbook(excelPath)
    

    读取第一个 Sheet 表中的内容:

    # 仅仅读取Sheet1
    ws = wb.sheet_by_name("Sheet1")
    

    这个库读取行和列是从 0 开始的,而不是从 1 开始的,所以设置初始的行和列都为 0 :

    # 行、列的初始值
    rownum = 0
    columnnum = 0
    # 获取第一行第一列单元格的值
    cel = ws.cell(rowx=rownum, colx=columnnum).value
    print(cel)
    

    当然也可以读取第二个 Sheet 表中的内容,只要将 sheet_by_name 改成 Sheet2 就行了。

    附上源码:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    from openpyxl import load_workbook
    import xlsxwriter
    import xlrd
    
    # ----------读取xlsx-----------
    excelPath = "F:/code/python/test.xlsx"
    # 加载xlsx
    workBook = load_workbook(excelPath)
    # 仅仅读取Sheet1
    workSheet = workBook.get_sheet_by_name("Sheet1")
    
    # 行、列的初始值
    rownum = 1
    columnnum = 1
    
    # 获取第一行第一列单元格的值
    cell = workSheet.cell(row=rownum, column=columnnum).value
    print(cell)
    
    # ----------写入xlsx-----------
    # 打开某个excel
    with xlsxwriter.Workbook("F:/code/python/test1.xlsx") as workbook:
        # 设置Sheet的名字为haha
        worksheet = workbook.add_worksheet("haha")
        # 行、列的初始值
        rownum = 0
        columnnum = 0
        # 依次写入每个单元格
        worksheet.write(rownum, columnnum, "one")
    workbook.close()
    
    # ----------读取xls-----------
    excelPath = "F:/code/python/test.xls"
    # 加载xlsx
    wb = xlrd.open_workbook(excelPath)
    # 仅仅读取Sheet1
    ws = wb.sheet_by_name("Sheet1")
    # 行、列的初始值
    rownum = 0
    columnnum = 0
    # 获取第一行第一列单元格的值
    cel = ws.cell(rowx=rownum, colx=columnnum).value
    print(cel)
    
  • 相关阅读:
    IIS7用进程池的PID查找占用CPU的站点
    CSS中属性的书写顺序
    int[] 和 string[] 互换
    csv 文件的读取
    扩展 DataGridView 的功能(三)
    [音乐] the dream catcher
    雷人的面试
    将MP3文件嵌入到exe中并播放
    扩展 DataGridView 的功能(二)
    扩展DataGridView 的功能(四)
  • 原文地址:https://www.cnblogs.com/TTyb/p/7412479.html
Copyright © 2020-2023  润新知