• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    python读写修改Excel之xlrd&xlwt&xlutils

    py读写修改常用的三种方法

    0、安装模块

    pip3 install xlrd xlwt xlutils

    1. 写入excel

    git:https://github.com/python-excel/xlwt/tree/master/examples

    实现效果

    上代码

    from datetime import datetime
    
    import xlwt
    
    font0 = xlwt.Font()
    
    # font0.name = 'Times New Roman' # 适用于字母或数字
    font0.name = '宋体'  # 适用于中文,适配字体或者不指定字体才能体现出指定的颜色
    
    # font0.colour_index = 1  # 白色
    # font0.colour_index = 2  # 红色
    # font0.colour_index = 3  # 绿色
    # font0.colour_index = 4  # 蓝色
    # font0.colour_index = 5  # 黄色
    # font0.colour_index = 6  # 紫色
    # font0.colour_index = 7  # 青色
    # font0.colour_index = 8  # 黑色,比默认加黑,不加粗
    font0.colour_index = 4  # 蓝色
    font0.bold = True
    
    style0 = xlwt.XFStyle()
    style0.font = font0
    
    # 创建样式对象:日期格式
    style1 = xlwt.XFStyle()
    style1.num_format_str = 'YYYY-MM-DD'
    
    # 创建样式对象:字体居中对齐
    style2 = xlwt.XFStyle()
    al = xlwt.Alignment()
    al.horz = 0x02 # 设置水平居中
    al.vert = 0x01 # 设置垂直居中
    style2.alignment = al
    
    # 创建样式对象,设置日期格式与字体居中对齐
    style3 = xlwt.XFStyle()
    style3.num_format_str = 'YYYY-MM-DD'
    style3.alignment = al
    
    # 创建样式对象,设置字体居中 且 设置字体颜色
    style4 = xlwt.XFStyle()
    style4.alignment = al
    style4.font = font0
    
    now_time = datetime.now().strftime('%Y-%m-%d %X')
    date_time = datetime.now().strftime('%Y-%m-%d')
    
    # 创建表格
    wb = xlwt.Workbook()
    
    # 新建一个名为 Score Sheet 的表单页
    score_sheet = wb.add_sheet('Score Sheet')
    
    # 新建一个名为 Record Test Sheet 的表单页
    record_test_sheet = wb.add_sheet('Record Test Sheet')
    
    # 1、写入 Score Sheet 表单
    # 设置 表头, 第一个参数是行,第二个参数是列
    score_sheet.write(0, 0, '时间', style2)
    score_sheet.write(0, 1, '班级', style2)
    score_sheet.write(0, 2, '姓名', style2)
    score_sheet.write(0, 3, '语文', style2)
    score_sheet.write(0, 4, '数学', style2)
    score_sheet.write(0, 5, '英语', style2)
    score_sheet.write(0, 6, '理综', style2)
    score_sheet.write(0, 7, '总分', style4)
    
    # 按照位置添加数据
    score_sheet.write(1, 0, datetime.now(), style3)
    score_sheet.write(1, 1, '高三三班', style2)
    score_sheet.write(1, 2, '桑岩', style2)
    score_sheet.write(1, 3, 132, style2)
    score_sheet.write(1, 4, 150, style2)
    score_sheet.write(1, 5, 140, style2)
    score_sheet.write(1, 6, 290, style2)
    score_sheet.write(1, 7, xlwt.Formula("D2+E2+F2+G2"), style2)
    
    score_sheet.write(2, 0, datetime.now(), style3)
    score_sheet.write(2, 1, '高三三班', style2)
    score_sheet.write(2, 2, '项天骐', style2)
    score_sheet.write(2, 3, 140, style2)
    score_sheet.write(2, 4, 150, style2)
    score_sheet.write(2, 5, 132, style2)
    score_sheet.write(2, 6, 280, style2)
    score_sheet.write(2, 7, xlwt.Formula("D3+E3+F3+G3"), style2)
    
    score_sheet.write(3, 0, datetime.now(), style3)
    score_sheet.write(3, 1, '高三三班', style2)
    score_sheet.write(3, 2, '向淮南', style2)
    score_sheet.write(3, 3, 135, style2)
    score_sheet.write(3, 4, 150, style2)
    score_sheet.write(3, 5, 145, style2)
    score_sheet.write(3, 6, 270, style2)
    score_sheet.write(3, 7, xlwt.Formula("D4+E4+F4+G4"), style2)
    
    
    # 2、写入 Record Test Sheet 表单
    record_test_sheet.write(0, 0, '时间')
    record_test_sheet.write(0, 1, '学科', style1)
    record_test_sheet.write(0, 2, '成绩', style1)
    record_test_sheet.write(1, 0, datetime.now(), style1)
    record_test_sheet.write(1, 1, '语文', style2)
    record_test_sheet.write(1, 2, 80)
    record_test_sheet.write(2, 0, datetime.now(), style3)
    record_test_sheet.write(2, 1, '数学', style2)
    record_test_sheet.write(2, 2, 99)
    record_test_sheet.write(3, 0, now_time, style2)
    record_test_sheet.write(3, 1, '英语', style2)
    record_test_sheet.write(3, 2, 98)
    
    
    # 保存表格,这里应该是覆盖写,注意每次都是覆盖所有表单内容,建议每次生成的表单加上时间版本区分
    # wb.save('example.xls')
    wb.save('example-{0}.xls'.format(date_time))

    2、读 Excel

    git:https://github.com/python-excel/xlrd

    实现效果,读取sheet 表单内容

    数值 类型 说明
    0 empty
    1 string 字符串
    2 number 数字
    3 date 日期
    4 boole 布尔值
    5 error 错误

    代码

    import xlrd
    
    # 打开 xls文件
    wb = xlrd.open_workbook("example-2021-03-09.xls")
    
    # 获取并打印 sheet 数量
    print("sheet 数量:", wb.nsheets)     # sheet 数量: 2
    
    # 获取并打印 sheet 名称
    print("sheet 名称:", wb.sheet_names())  # sheet 名称: ['Score Sheet', 'Record Test Sheet']
    
    # 根据 sheet 索引获取内容
    sh1 = wb.sheet_by_index(0)
    # 或者
    # 也可根据 sheet 名称获取内容
    # sh = wb.sheet_by_name('Score Sheet')
    
    # 获取并打印该 sheet 行数和列数
    print(u"sheet: %s表单 共 %d 行 %d 列" % (sh1.name, sh1.nrows, sh1.ncols))   # sheet: Score Sheet表单 共 4 行 8 列
    
    # 获取并打印某个单元格的值
    print("第一行第二列的值为:", sh1.cell_value(0, 1))    # 第一行第二列的值为: 班级
    
    # 获取整行或整列的值
    row_info = sh1.row_values(0)  # 获取第一行内容
    col_info = sh1.col_values(1)  # 获取第二列内容
    
    # 打印获取的行列值
    print("第一行的值为:", row_info)   # 第一行的值为: ['时间', '班级', '姓名', '语文', '数学', '英语', '理综', '总分']
    print("第二列的值为:", col_info)   # 第二列的值为: ['班级', '高三三班', '高三三班', '高三三班']
    
    # 获取单元格内容的数据类型,注意这里的值 另有含义
    print("第二行第一列的【值类型】为:", sh1.cell(1, 0).ctype)   # 第二行第一列的【值类型】为: 3
    
    # 遍历所有表单内容
    for sh in wb.sheets():
      for r in range(sh.nrows):
    
        # 输出指定行内容,这里包含原有类型指定,不能直接获取到指定列的值
        row_val_list = sh.row(r)
        print(row_val_list)
        # [text:'时间', text:'班级', text:'姓名', text:'语文', text:'数学', text:'英语', text:'理综', text:'总分']
    
        # 遍历行内,输出当前行内的所有列值
        col_val_list = [col_val.value for col_val in row_val_list]
        print(col_val_list)
    
    

    3、修改 Excel

    修改 Excel 是通过 xlutils 库的 copy 方法将原来的 Excel 整个复制一份,然后再做修改操作,最后再保存

    修改前

    修改后

    上代码

    import xlrd
    from xlutils.copy import copy
    
    
    # 打开 excel 文件, 带格式复制
    read_book = xlrd.open_workbook("example-2021-03-09.xls", formatting_info=True)
    
    # 复制一份
    wb = copy(read_book)
    
    # 选取第一个表单
    sh1 = wb.get_sheet(0)
    
    # 在第五行新增写入数据
    sh1.write(4, 0, '2020-12-16')
    sh1.write(4, 1, '高三三班')
    sh1.write(4, 2, '小鱼仙倌儿')
    sh1.write(4, 3, 150)
    sh1.write(4, 4, 150)
    sh1.write(4, 5, 150)
    sh1.write(4, 6, 300)
    
    # 选取第二个表单
    sh2 = wb.get_sheet(1)
    
    # 替换总成绩数据
    sh2.write(1, 2, 100)
    
    # 保存
    wb.save('example-2021-03-09.xls')
    
    

    注意,复制 xls这里有格式问题

    似乎没有任何简单的方法可以保留单元格的格式;它总是被吹走并设置为空白。

    https://www.coder.work/article/80896

    https://zhuanlan.zhihu.com/p/128674458

    附录

    参考:http://www.ityouknow.com/python/2019/12/29/python-excel-103.html

    官网:http://www.python-excel.org/

    到此这篇关于python读写修改Excel之xlrdxlwtxlutils的文章就介绍到这了,更多相关python读写修改Excel内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
    • Python中用xlwt制作表格实例讲解
    • Python xlrd/xlwt 创建excel文件及常用操作
    • python实现xlwt xlrd 指定条件给excel行添加颜色
    • Python xlwt模块使用代码实例
    • Python3使用xlrd、xlwt处理Excel方法数据
    • python xlwt如何设置单元格的自定义背景颜色
    • Python操作excel的方法总结(xlrd、xlwt、openpyxl)
    • python 数据生成excel导出(xlwt,wlsxwrite)代码实例
    • python中使用 xlwt 操作excel的常见方法与问题
    • python xlwt模块的使用解析
    上一篇:python实现selenium网络爬虫的方法小结
    下一篇:numpy.sum()的使用详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    python读写修改Excel之xlrd&xlwt&xlutils python,读写,修改,Excel,之,