• 自动化办公03 用xlrd和xlwt库操作excel.xls文件(老版本)


    目录

    一、读操作

    二、写操作

    三、设置单元格格式 

    0.综合案例

     1.设置行高和列宽

    2.设置字体样式

    3.设置边框样式

     4.设置对齐方式

    5.设置背景颜色

    6.合并单元格 

     四、 xlutils修改Excel⽂件内容

    1.安装

    2.使用


    一、读操作

    1. import xlrd
    2. # 1. 打开excel文件
    3. wb = xlrd.open_workbook('files/data1.xls')
    4. # 2. 获取工作簿相关信息
    5. # 1)获取所有工作表的表名
    6. names = wb.sheet_names()
    7. print(names)
    8. # 2)获取所有工作表
    9. all_sheet = wb.sheets()
    10. print(all_sheet)
    11. # 3)获取一个工作表
    12. # a.根据工作表的名字获取工作表
    13. stu_sheet = wb.sheet_by_name('students')
    14. print(stu_sheet)
    15. # b.根据工作表的位置获取工作表
    16. teacher_sheet = wb.sheet_by_index(1)
    17. print(teacher_sheet)
    18. # 3. 获取工作表相关信息
    19. # 1)获取数据的行数和列数
    20. m_r = stu_sheet.nrows
    21. m_c = stu_sheet.ncols
    22. print(m_r, m_c)
    23. # 2) 获取某一个单元格
    24. # 工作表对象.cell(行索引, 列索引)
    25. cell1 = stu_sheet.cell(0, 0)
    26. print(cell1)
    27. # 3)获取某一个单元格内容
    28. value1 = stu_sheet.cell_value(0, 0)
    29. print(value1)
    30. # 4) 获取某一行所有的单元格
    31. line_cell = stu_sheet.row(1)
    32. print(line_cell)
    33. # 5) 获取某一行所有的内容
    34. # a.工作表对象.row_values(行索引) - 获取指定行中所有的内容
    35. line_value1 = stu_sheet.row_values(1)
    36. print(line_value1)
    37. # b.工作表对象.row_values(行索引, 开始列下标, 结束列下标) - 对指定行所有的内容进行切片
    38. line_value2 = stu_sheet.row_values(1, 1)
    39. print(line_value2)
    40. line_value3 = stu_sheet.row_values(1, 0, 3)
    41. print(line_value3)
    42. print('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~华~丽~丽~的~分~割~线~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
    43. # 工作表对象.col_values(列索引)
    44. col_value1 = stu_sheet.col_values(3)
    45. print(col_value1)
    46. scores = stu_sheet.col_values(3, 1)
    47. print(scores)

    练习1:

    1. # 练习:获取data1.xls文件中students表中的所有学生信息,以列表的形式返回,每个学生信息对应一个小列表。
    2. wb = xlrd.open_workbook('files/data1.xls')
    3. sheet = wb.sheet_by_name('students')
    4. m_r = sheet.nrows
    5. students1 = []
    6. for line in range(1, m_r):
    7. stu = sheet.row_values(line)
    8. students1.append(stu)
    9. print(students1)

     

    练习2:

    1. # 练习:获取data1.xls文件中students表中的所有学生信息,以列表的形式返回,每个学生信息对应一个小字典。
    2. students2 = []
    3. m_r = sheet.nrows
    4. m_c = sheet.ncols
    5. key = sheet.row_values(0)
    6. for line in range(1, m_r):
    7. dic = {}
    8. stu = sheet.row_values(line)
    9. for x in range(m_c):
    10. dic[key[x]] = stu[x]
    11. students2.append(dic)
    12. print(students2)

    二、写操作

    注意:xlwt只能对通过xlwt新建的文件和工作表进行写操作 

    1. # 注意:xlwt只能对通过xlwt新建的文件和工作表进行写操作。
    2. import xlwt
    3. # 1.新建excel文件(新建一个工作簿)
    4. # 注意:新建工作簿的时候不会自动创建工作表
    5. wb = xlwt.Workbook()
    6. # 2. 添加工作表
    7. sheet1 = wb.add_sheet('订单数据')
    8. # 3. 修改单元格内容
    9. # 工作表对象.write(行索引, 列索引, 内容) - 将指定内容写入到指定的位置
    10. sheet1.write(1, 0, '你好')
    11. # 保存文件
    12. wb.save('files/data2.xls')

    练习:

    1. # 练习1:将data中的数据按照生活习惯写入到.xls文件中
    2. data = [
    3. ['小明', '男', 20.0, 99.0],
    4. ['张三', '男', 25.0, 87.0],
    5. ['小花', '女', 22.0, 95.0],
    6. ['老王', '男', 30.0, 77.0]
    7. ]
    8. wb = xlwt.Workbook()
    9. sheet = wb.add_sheet('练习1')
    10. label = ['姓名', '性别', '年龄', '分数']
    11. row = len(data)
    12. col = len(label)
    13. # print(row,col)
    14. for i in range(col):
    15. sheet.write(0, i, label[i])
    16. for x_row in range(0, row):
    17. for y_col in range(col):
    18. sheet.write(x_row + 1, y_col, data[x_row][y_col])
    19. wb.save('files/写练习1.xls')

     

    三、设置单元格格式 

    0.综合案例

    1. import xlwt
    2. # 1. 新建文件和工作表
    3. wb = xlwt.Workbook()
    4. sheet = wb.add_sheet('样式')
    5. # 2.设置行高和列宽
    6. # 1)设置列宽
    7. sheet.col(1).width = 20 * 256
    8. # 2)设置行高
    9. # a.让行高不匹配内容的高度
    10. sheet.row(2).height_mismatch = True
    11. # b.设置行高为指定值
    12. sheet.row(2).height = 15 * 60
    13. # 3. 写入数据的时候设置单元格的样式
    14. # 1)创建样式对象
    15. style1 = xlwt.XFStyle()
    16. # 2)给样式对象绑定具体的样式内容
    17. # a. 字体相关样式
    18. # 创建一个字体对象
    19. font1 = xlwt.Font()
    20. # 将字体绑定到样式对象中
    21. style1.font = font1
    22. # 添加各种字体属实
    23. font1.name = '楷体' # 字体名称
    24. font1.colour_index = 10 # 字体颜色
    25. # 打印所有的颜色和其对应的编号(xlwt中可以使用的所有颜色)
    26. # print(xlwt.Style.colour_map)
    27. font1.height = 20*20 # 字体大小
    28. font1.bold = True # 字体加粗
    29. # b.设置对齐样式
    30. # 创建一个对齐对象
    31. ag1 = xlwt.Alignment()
    32. # 将对齐对象绑定到样式对象中
    33. style1.alignment = ag1
    34. # 添加各种对齐属性
    35. ag1.horz = xlwt.Alignment.HORZ_CENTER # 水平居中
    36. ag1.vert = xlwt.Alignment.VERT_CENTER # 垂直居中
    37. # c. 边框样式
    38. # 创建一个边框对象
    39. border1 = xlwt.Borders()
    40. # 将边框对象绑定到样式对象中
    41. style1.borders = border1
    42. # 添加各种边框属性
    43. border1.bottom = border1.top = 10
    44. border1.bottom_colour = border1.top_colour = 57
    45. border1.left = border1.right = 2
    46. border1.left_colour = border1.right_colour = 46
    47. # d. 填充样式
    48. # 创建一个填充对象
    49. p1 = xlwt.Pattern()
    50. # 将填充对象绑定到样式对象中
    51. style1.pattern = p1
    52. # 添加填充属性
    53. p1.pattern = xlwt.Pattern.SOLID_PATTERN
    54. p1.pattern_fore_colour = 31
    55. # 3)在写入数据的指定样式对象
    56. sheet.write(2, 1, 'hello', style=style1)
    57. sheet.write(2, 2, '你好', style=style1)
    58. wb.save('files/data4.xls')

     1.设置行高和列宽

    案例:

    1. fruits_s.col(0).width = 30 * 256
    2. fruits_s.row(0).height_mismatch = True
    3. fruits_s.row(0).height = 10 * 60
    4. wb.save('files/data2.xls')

    2.设置字体样式

    常⻅的字体属性和对应的赋值⽅式如下:

     具体用法:

    1. # 1. 创建样式对象
    2. style1 = xlwt.XFStyle()
    3. # 2. 创建字体对象
    4. font = xlwt.Font()
    5. # 3.将字体对象和样式对象进⾏关联
    6. style1.font = font
    7. # 4. 设置各种字体样式
    8. font.name = '⿊体'
    9. font.bold = True
    10. font.height = 25 * 25
    11. font.underline = xlwt.Font.UNDERLINE_SINGLE
    12. font.escapement = xlwt.Font.ESCAPEMENT_SUPERSCRIPT
    13. font.italic = True
    14. font.colour_index = 52
    15. font.struck_out = True
    16. # 5. 写⼊内容的时候设置样式
    17. fruits_s.write(1, 0, '苹果', style=style1)

    打印xlwt.Style.colour_map可以查看所有可⽤的颜⾊: 

    print(xlwt.Style.colour_map)

     

    除了字体颜⾊,设置边框颜⾊、填充颜⾊都是使⽤colour_map中 提供的颜⾊值。

    3.设置边框样式

    设置边框样式分为四个⽅向,每个⽅向可以设置边框的类型和边框颜⾊:

    具体用法:

    1. # 1. 创建样式对象
    2. style2 = xlwt.XFStyle()
    3. # 2. 创建边框对象
    4. borders1 = xlwt.Borders()
    5. # 3. 设置样式对应的边框
    6. style2.borders = borders1
    7. # 4. 设置四个边的边框样式和边框样式
    8. borders1.top, borders1.top_colour = 5, 12
    9. borders1.bottom, borders1.bottom_colour = 8, 51
    10. borders1.left, borders1.left_colour = 9, 17
    11. borders1.right, borders1.right_colour = 13, 10
    12. # 5. 写⼊内容的时候设置样式
    13. fruits_s.write(3, 1, '¥30.00', style=style2)

     4.设置对齐方式

    对⻬⽅式常⻅属性如下:

    具体用法:
     

    1. style3 = xlwt.XFStyle()
    2. alignment1 = xlwt.Alignment()
    3. style3.alignment = alignment1
    4. alignment1.vert = xlwt.Alignment.VERT_CENTER
    5. alignment1.horz = xlwt.Alignment.HORZ_CENTER
    6. alignment1.rota = 45
    7. # alignment1.wrap = 1 # ⾃动换⾏
    8. # alignment1.shri = 1 # ⾃动缩进
    9. fruits_s.write(1, 4, '对⻬⽅式', style=style3)

    5.设置背景颜色

    1. # 1. 创建样式对象
    2. style4 = xlwt.XFStyle()
    3. # 2. 创建模式对象
    4. pattern1 = xlwt.Pattern()
    5. # 3. 将模式关联到样式中
    6. style4.pattern = pattern1
    7. pattern1.pattern = xlwt.Pattern.SOLID_PATTERN # 设置模式
    8. pattern1.pattern_fore_colour = xlwt.Style.colour_map['yellow'] # 设置填充颜
    9. fruits_s.write(2, 0, '草莓', style=style4)

    6.合并单元格 

    写⼊数据的时候可以通过write_merge⽅法在写⼊数据的同时合并单元格。

    语法:

    ⼯作表对象.write_merge(r1, r2, c1, c2, 写⼊内容, 样式) 

    r1,r2合并的起始⾏和终⽌⾏,c1,c2合并的起始列和终⽌列 

    案例:

    fruits_s. write_merge(8, 10, 3, 5, '合并单元格')

     

     四、 xlutils修改Excel⽂件内容

    xlwt⽆法对已经存在的Excel⽂件进⾏写操作,如果要修改已经存在的Excel⽂件中的内容需要使
    ⽤xlutils模块。
    xlutils的使⽤原理是:先通过xlrd打开⼀个Excel⽂件得到⼀个⼯作簿对象,然后通过xlutils对⼯作簿对象进⾏拷⻉就可以得到⼀个可写的⼯作簿对象,最后就可以对可的⼯作簿进⾏写操作和保存操作。 

    1.安装

    pip install xlutils

    2.使用

    1. from xlutils.copy import copy
    2. import xlrd
    3. # 1. 打开原⽂件
    4. old_wb = xlrd.open_workbook('files/data1.xls', formatting_info=True)
    5. # 2. 拷⻉原⽂件得到可写的⼯作簿对象
    6. new_wb = copy(old_wb)
    7. # 3. 添加⼯作表
    8. s1 = new_wb.add_sheet('data')
    9. # 4. 写⼊数据
    10. s1.write(0, 0, '数据1')
    11. new_wb.save('files/new_data1.xls')

  • 相关阅读:
    ARM系统中9种中断响应步骤记录
    C++标准模板(STL)- 类型支持 (数值极限,is_modulo,digits,digits10)
    在页面中使用store中的成员
    【Java毕设】基于SpringBoot实现新冠疫情统计系统(Idea+Navicat)
    【Node.JS】事件的绑定与触发
    电源模块测试科普:如何检测电源模块的功率?测试方法是什么?
    学生HTML个人网页作业作品下载 个人主页博客网页设计制作 大学生个人网站作业模板 dreamweaver简单个人网页制作
    JavaScript-----元素可视区client
    Canvas和SVG
    ADG dataguard ALL_LOGFILES,ALL_ROLES
  • 原文地址:https://blog.csdn.net/m0_67182197/article/details/139376062