zoukankan      html  css  js  c++  java
  • python3操作excel姿势

    1. Excel文档基本定义
    工作簿(workbook): 一个 Excel 电子表格文档;
    工作表(sheet): 每个工作簿可以包含多个表, 如: sheet1, sheet2等;
    活动表(active sheet): 用户当前查看的表;
    列(column): 列地址是从 A 开始的;
    行(row): 行地址是从 1 开始的;
    单元格(cell): 特定行和列的方格;
    2. 安装 openpyxl 模块
    Python 没有自带 openpyxl,所以必须安装。

    pip3 install openpyxl
    3. 读取 Excel 文档
    将使用一个电子表格 example.xlsx,你可以自己创建这个电子文档,内容如下:

                  

    在导入 openpyxl 模块后,就可以使用 openpyxl.load_workbook()函数。打开 Excel 文档
    # 导入工作薄
    1. wb = openpyxl.load_workbook('excelDemo/example.xlsx') # 加载工作薄
    2. wb.sheetnames # 获取当前所有工作表的名称, 返回一个列表
    3. wb.active # 获取当前活跃的工作表
    从工作簿中取得工作表
    4. sheet = wb['Sheet1'] # 工作表
    5. sheet.title # 获取当前活动表的名称
    6. sheet.cell(row=1, column=2) # 获取单元格指定行和指定列的内容
    表中取得单元格
    Cell 对象有一个 value 属性,不出意外,它包含这个单元格中保存的值。Cell 对象也有 row、column 和 coordinate 属性,提供该单元格的位置信息。

    row属性给出的是整数 1,column 属性给出的是'B',coordinate 属性给出的是'B1'。

    6. cell = sheet['A1']
    7. cell_value = sheet['A1'].value
    8. cell.row, cell.column cell.coordinate
    4. 工作簿、工作表、单元格
    下面是从电子表格文件中读取单元格涉及的所有函数、方法和数据类型。一个完整的操作过程如下:

    导入 openpyxl 模块。
    调用 openpyxl.load_workbook()函数。
    取得 Workbook 对象。
    调用 wb.sheetnames和 wb.active 获取工作簿详细信息。
    取得 Worksheet 对象。
    使用索引或工作表的 cell()方法,带上 row 和 column 关键字参数。
    取得 Cell 对象。
    读取 Cell 对象的 value 属性
    一个完整的案例代码如下:

    import openpyxl


    # 1. 读取excel文档
    wb = openpyxl.load_workbook('excelDemo/example.xlsx')

    # # 返回一个workbook对象, 有点类似于文件对象;
    # print(wb, type(wb))



    # 2. 在工作薄中取得工作表
    # print(wb.get_sheet_names())
    # 返回一个列表, 存储excel表中所有的sheet工作表;
    print(wb.sheetnames)

    # 返回一个worksheet对象, 返回当前的活动表;
    # print(wb.get_active_sheet())
    # print(wb.active)



    # 3. 获取工作表中, 单元格的信息
    # wb.get_sheet_by_name('Sheet1')
    sheet = wb['example']
    print(sheet['A1'])
    print(sheet['B1'].value)

    cell = sheet['B1']
    print(cell.row, cell.column)


    print(sheet.cell(row=3, column=2))
    print(sheet.cell(row=3, column=2).value)
    print(sheet.cell(row=3, column=2, value='www'))


    # sheet的属性

    print(sheet.max_column)
    print(sheet.max_row)
    print(sheet.title)
    sheet.title = 'example'
    print(sheet.title)


    for row in sheet.rows:
    for cell in row:
    print(cell.value, end=' ')
    print(' ')

    wb.save(filename="excelDemo/example.xlsx")

    *********************接下来读取excel表数据,并使用字符串格式化将其转化成json格式***********************************

    目标:通过字符串格式化的方法将excel表中读取的内容转化为json格式,加深对字符串格式化的印象

    #student.xlsx

     

    json格式:

    [{“name”:"joey","age":12},{"name":"ben","age":13}]

    先将excel表里的内容利用xlrd读取出来,分析student.xlsx中的数据可知,第一行显示的是数据的名称,第二行显示的是类型,实际的数据从第三行开始。

    根据json格式,第一行的数据名称将作为键值

    import xlrd

    def openWorkbook():
    #读取excel表的数据
    workbook = xlrd.open_workbook(r'C:Usersstudent.xlsx')
    #选取需要读取数据的那一页
    sheet = workbook.sheet_by_index(0)
    #获得行数和列数
    rows =sheet.nrows
    cols =sheet.ncols
    #创建一个数组用来存储excel中的数据
    p= []
    for i in range(2,rows):
    d={}
    for j in range(0,cols):
    q='%s' % sheet.cell(0,j).value
    d[q] = sheet.cell(i,j).value
    ap = []
    for k,v in d.items():
    if isinstance(v,float): #excel中的值默认是float,需要进行判断处理,通过'"%s":%d','"%s":"%s"'格式化数组
    ap.append('"%s":%d' % (k, v))
    else:
    ap.append('"%s":"%s"' % (k, v))
    s = '{%s}' % (','.join(ap)) #继续格式化
    p.append(s)
    t ='[%s]' % (','.join(p)) #格式化
    print (t)

    with open('student4.json',"w") as f:
    f.write(t)


    openWorkbook()






    参考:https://segmentfault.com/a/1190000016256490
    原文链接:https://blog.csdn.net/MIC01234/article/details/88224255

    原文链接:https://blog.csdn.net/joey_2018_/article/details/80650915

  • 相关阅读:
    JS正则手机靓号处理AB ABAB AABB
    url参数中有+、空格、=、%、&、#等特殊符号的问题解决
    LigerUI 使用教程表格篇
    JS获取地址栏参数
    手机端meta
    最大连续子序列 hdu 1231
    I NEED A OFFER! hdu1203(背包)
    Bookshelf 2 poj3628(01背包/DFS)
    Charm Bracelet poj3624(01背包)
    985的方格难题(dp)
  • 原文地址:https://www.cnblogs.com/ppqx/p/12505007.html
Copyright © 2011-2022 走看看