zoukankan      html  css  js  c++  java
  • Python—处理Excel表格

    一、使用xlrd和xlwt这两个库来处理excel,即xlrd是读excel的库,xlwt是写excel的库

    1.使用 xlrd 读取Excel数据

    # -*- coding:utf-8 -*-
    import xlrd
    
    def read_excel():
        book = xlrd.open_workbook(filename='D:Excel3.xls')  # 打开文件
        print(book.sheet_names())  # 获取所有表格名字
    
        # 获取表格的方式
        sheet1 = book.sheets()[0]
        sheet2 = book.sheet_by_index(0)                 # 根据顺序获取sheet,0表示第一个sheet
        sheet3 = book.sheet_by_name('学生1')            # 根据sheet页名字获取sheet
        print(sheet1.name, sheet1.nrows, sheet1.ncols)  # 获取excel里面有多少行,多少列
    
        sheet1.row_values(1)  # 取第几行的数据,返回一个列表list
        sheet1.col_values(1)  # 取第几列的数据,返回一个列表list
    
        # 获取表格里的内容,三种方式:指定行和列获取数据,0行0列代表excel中第一个数据
        print(sheet1.cell(1, 1).value)
        print(sheet1.cell_value(1, 1))
        print(sheet1.row(1)[1].value)
    
        excelhead = []
        for i in range(sheet1.ncols):       # 查询表头,即获取第一行的数据
            excel_head_values = sheet1.col_values(i)
            excelhead.append(excel_head_values[0])
        print(excelhead)
    
        for i in range(sheet1.nrows)[1:]:   # 查询行的值,从第二行开始
            row_values = sheet1.row_values(i)
            print(' '.join([str(x) for x in row_values]))
    
    if __name__ == "__main__":
        read_excel()

    2.使用 xlwt 写入Excel数据

    • write(x, y, string):x表示行,y表示列,string表示要写入的单元格内容。
    • write_merge(x, x + m, y, w + n, string, sytle):x表示行,y表示列,m表示跨行个数,n表示跨列个数,string表示要写入的单元格内容,style表示单元格样式。其中,x,y,w,h,都是以0开始计算的。

    • 示例:sheet1.write_merge(21,21,0,1,u'合计',set_style('Times New Roman',220,True)):即在22行合并第1,2列,合并后的单元格内容为"合计",并设置了style。
    # -*- coding:utf-8 -*-
    import xlwt
    
    def write_excel():
        book = xlwt.Workbook()           # 新建一个excel
    
        sheet1 = book.add_sheet('学生1')  # 添加一个sheet页,创建第一个sheet:学生1
        data = [['姓名', '年龄', '性别', '分数'], ['mary', 20, '女', 90], ['jack', 26, '男', 96]]
        raw = 0               # 控制行
        for stu in data:      # 循环写入
            col = 0           # 控制列
            for s in stu:
                sheet1.write(raw, col, s)
                col += 1
            raw += 1
        sheet1.write_merge(3, 3, 1, 3, '待确认')   # 合并列单元格,第2列到第4列合并
        sheet1.write_merge(1, 3, 4, 4, '打游戏')   # 合并行单元格,第2行到第4行合并
    
        sheet2 = book.add_sheet('学生2', cell_overwrite_ok=True)  # 添加一个sheet页,创建第二个sheet:学生2
        row0 = ["姓名", "年龄", "爱好", "出生日期"]
        col0 = ["张三", "李四", "小明", "小红", "无名"]
        for i in range(0, len(row0)):  # 写第一行
            sheet2.write(0, i, row0[i])
        for i in range(0, len(col0)):  # 写第一列
            sheet2.write(i + 1, 0, col0[i])
        sheet2.write(1, 3, '91/12/12')
        sheet2.write_merge(5, 5, 2, 3, u'暂无')        # 合并列单元格
        sheet2.write_merge(2, 3, 3, 3, u'94/05/06')   # 合并行单元格
    
        book.save('D:Excel3.xls')                    # 保存文件
    
    if __name__ == "__main__":
        write_excel()
    

    3.使用 xlutils 修改Excel数据

    # -*- coding:utf-8 -*-
    import xlrd
    from xlutils.copy import copy
    
    book1 = xlrd.open_workbook('D:Excel.xls')  # 打开要修改的excel
    book2 = copy(book1)         # 拷贝一份原来的excel
    sheet = book2.get_sheet(0)  # 获取第几个sheet页
    sheet.write(1, 1, 28)       # 写入需要修改的行、列及修改后的值
    sheet.write(5, 0, 'mike')
    book2.save('D:Excel.xls')

    参考:https://blog.csdn.net/csdnnews/article/details/80878945

    参考:https://www.jb51.net/article/60510.htm

    二、使用 openpyxl 来处理excel

    参考:https://www.jianshu.com/p/45c507e73172

    参考:https://segmentfault.com/a/1190000016256490

    参考:https://www.cnblogs.com/feifeifeisir/p/10419262.html

    之后在研究

  • 相关阅读:
    数据持久化编程学习总结
    Boost Replaceable by C++11 language features or libraries
    【敬业福bug】支付宝五福卡敬业福太难求 被炒至200元
    由文字生成path后制作写字的动画
    CSS经典布局之弹性布局
    HDU2082 找单词 【母函数】
    HDOJ 题目2475 Box(link cut tree去点找祖先)
    DELPHI中MDI子窗口的关闭 和打开
    sql语句中日期相减的操作
    Delphi编码规范
  • 原文地址:https://www.cnblogs.com/liuhaidon/p/12134188.html
Copyright © 2011-2022 走看看