• 21天学习挑战赛——Python 操作Excel(xlrd和xlwt)


    目录

    1. 操作Excel库(xlrd和xlwt)对比

    2. xlrd读取Excel

    2.1 xlrd操作方法汇总

    2.2 xlrd用法举例

    3. xlwt写入Excel

    3.1 xlwt操作方法汇总

    3.2 用法举例

    3.2.1 xlwt写入单个数据

    3.2.3 xlwt设置列宽和行高

    3.2.4 xlwt设置单元格风格


    ⭐像梦一样地浑浑噩噩两天,终于醒了。干就完了,一切都是为了生活...🌈

    活动地址:CSDN21天学习挑战赛

    1. 操作Excel库(xlrd和xlwt)对比

    • xlrd :可处理Excel后缀“.xls”、“.xlsx”,只能读取;
    • xlwt :可处理Excel后缀“.xls”,可写入、修改、保存、样式调整、插入图片。

    2. xlrd读取Excel

            首先在程序相同目录创建 “test.xls”文件,并创建多个 sheet。注意:直接创建 .xls文件,即使改了扩展命,后续操作仍会报错。

    2.1 xlrd操作方法汇总

    xlrd对.xls文件操作
    函数语法作用说明
    wb = xlrd.open_workbook(path)打开文件
    wb.sheet_names()获取所有的表名
    wb.sheet_by_index(索引) 或 wb.sheet_by_name('Sheet表明')指定Sheet
    对Sheet表的行操作sheet.nrows()获取sheet表总函数
    sheet.row(1) 或 sheet.row_slice(1)返回该行中所有单元格对象组成的列表,列表内是键值对,例如:['列名1':'值','列名2':'值', ...]
    sheet.row_values(rowx, start_colx=0, end_colx=None)返回指定行的所有单元格数值组成的列表
    sheet.row_len(rowx)返回指定行的有效长度
    对Sheet表的列操作sheet.ncols()

    返回指定sheet表的有效列数

    sheet.col(1) 或 sheet.clo_slice(1)返回该列中所有的单元格对象组成的列表,列表内是键值对,例如:['列名1':'值', '列明2':'值', ...]
    sheet.col_values(colx, start_colx=0, end_colx=None)返回指定列的所有单元格数值组成的列表,例如:['列名':'值1', '值2',...]

    2.2 xlrd用法举例

    1. import xlrd
    2. #1.打开文件
    3. wb = xlrd.open_workbook('./test.xls')
    4. print(wb) #输出:
    5. #2.获取所有表名
    6. sheet_name_list = wb.sheet_names()
    7. print(sheet_name_list) #输出:['Sheet1', 'Sheet2', 'Sheet3']
    8. #3.指定sheet表
    9. #3.1索引顺序获取
    10. sheet_1 = wb.sheet_by_index(0)
    11. print(sheet_1) #输出:Sheet 0:
    12. #3.2名称获取
    13. sheet_2 = wb.sheet_by_name('Sheet1')
    14. print(sheet_2) #输出:Sheet 0:
    15. #4.对sheet行操作
    16. #4.1获取sheet表总行数:sheet.nrows
    17. print('Excel表中数据总行数为:',sheet_1.nrows) #Excel表中数据总行数为: 4
    18. #4.2返回由该行中所有的单元格对象组成的列表,列表内是键值对:sheet.row(行数)或者sheet.row_slice(行数)
    19. print('方法1:',sheet_1.row(1),'方法2:',sheet_1.row_slice(1)) #输出:方法1: [text:'小明', number:165.0, number:12.0, number:50.0, number:80.0] 方法2: [text:'小明', number:165.0, number:12.0, number:50.0, number:80.0]
    20. #4.3返回指定行的所有单元格数值组成的列表:sheet.row_values(rowx, start_colx=0, end_colx=None)
    21. print(sheet_1.row_values(1)) #输出:['小明', 165.0, 12.0, 50.0, 80.0]
    22. #4.4返回指定行的有效长度:sheet.row_len()
    23. print(sheet_1.row_len(1)) #输出:5
    24. print('-'*40)
    25. #5.读取整个表
    26. for i in range(sheet_1.nrows):
    27. print(sheet_1.row_values(i))
    28. # 输出:
    29. # ----------------------------------------
    30. # ['name', 'high', 'age', 'weight', 'score']
    31. # ['小明', 165.0, 12.0, 50.0, 80.0]
    32. # ['小红', 160.0, 13.0, 35.0, 85.0]
    33. # ['小浪', 170.0, 23.0, 65.0, 100.0]
    34. #6.对Sheet表的列进行操作
    35. #6.1返回指定sheet表的有效列数:sheet.ncols
    36. print('Excel表中数据总列数为:',sheet_1.ncols) #输出:Excel表中数据总列数为: 5
    37. #6.2返回指定列中所有的单元格组成的列表,列表内是键值对:sheet.col(列数) 或者 sheet.col_slice(列数)
    38. print('方法1:',sheet_1.col(1),'方法2:',sheet_1.col_slice(1)) #输出:方法1: [text:'high', number:165.0, number:160.0, number:170.0] 方法2: [text:'high', number:165.0, number:160.0, number:170.0]
    39. #6.3返回指定列的所有单元格组成的列表:sheet.col_values(colx, start_colx=0, end_colx=None)
    40. #6.3.1带列名
    41. print(sheet_1.col_values(0)) #输出:['name', '小明', '小红', '小浪']
    42. #6.3.2不带列名
    43. print(sheet_1.col_values(0,1)) #输出列名:['小明', '小红', '小浪']
    44. print('-'*40)
    45. #7.读取全部表
    46. for i in range(sheet_1.ncols):
    47. print(sheet_1.col_values(i))
    48. # 输出:
    49. # ----------------------------------------
    50. # ['name', '小明', '小红', '小浪']
    51. # ['high', 165.0, 160.0, 170.0]
    52. # ['age', 12.0, 13.0, 23.0]
    53. # ['weight', 50.0, 35.0, 65.0]
    54. # ['score', 80.0, 85.0, 100.0]

    3. xlwt写入Excel

            xlwt 模块是Python第三方库,可以将数据写入到 Excel 工作簿中。目前支持写入 .xls 和 .xlsx 两种格式

    3.1 xlwt操作方法汇总

    函数格式功能描述
    xlwt.Workbook(encoding='utf8')创建Excel表对象
    worksheet = workbook.add_sheet('Sheet1')新建Sheet对象
    worksheet.write(0, 0, 'Python')写入数据到注定单元格。第一个参数是行数,第二个参数是列数,第三个参数是要写入的字符串或数字
    workbook.save('a.xlsx')保存文件,目前已支持写入 .xls 个 .xlsx两种格式
    设置单元格风格xlwt.Font()设置字体
    xlwt.Pattern()设置背景
    xlwt.Borders()设置边框
    xlwt.Alignment设置对准

    3.2 用法举例

    3.2.1 xlwt写入单个数据

            创建一个Excel表格,并在(0,0)位置写入“Python”,并使用两种方式进行保存文件。注意:Office并不能打开 .xlsx 文件,所以需要 WPS 打开。

    1. import xlwt
    2. #1.创建Excel表对象
    3. workbook = xlwt.Workbook(encoding='utf8')
    4. #2.新建Sheet表
    5. worksheet = workbook.add_sheet('Sheet1')
    6. #3.写入数据到指定单元格
    7. worksheet.write(0, 0, 'Python')
    8. #4.保存文件份两种格式
    9. workbook.save('a.xls')
    10. workbook.save('a.xlsx')

     运行结果:

    3.2.2 xlwt写入多个数据

    1. import xlwt
    2. data = [('小明','20','男'),('小红','21','女'),('小浪','22','男')]
    3. #1.创建Excel表对象
    4. workbook = xlwt.Workbook(encoding='utf8')
    5. #2.新建Sheet表
    6. worksheet = workbook.add_sheet('Sheet1')
    7. #3.自定义列名
    8. col_name = ('姓名','年龄','性别')
    9. #4.将列属性元组col_name写进Sheet1表单中第一行
    10. for i in range(len(col_name)):
    11. worksheet.write(0,i,col_name[i])
    12. #5.将数据写入Sheet1表单中
    13. for i in range(len(data)):
    14. In_data = data[i]
    15. for j in range(len(col_name)):
    16. worksheet.write(i+1,j,In_data[j])
    17. #6保存文件
    18. workbook.save('b.xls')

    运行结果: 

     3.2.3 xlwt设置列宽和行高

    1. import xlwt
    2. data = [('小明','20','男'),('小红','21','女'),('小浪','22','男')]
    3. #1.创建Excel表对象
    4. workbook = xlwt.Workbook(encoding='utf8')
    5. #2.新建Sheet表
    6. worksheet = workbook.add_sheet('Sheet1')
    7. #3.自定义列名
    8. col_name = ('姓名','年龄','性别')
    9. #4.将列属性元组col_name写进Sheet1表单中第一行
    10. for i in range(len(col_name)):
    11. worksheet.write(0,i,col_name[i])
    12. #5.将数据写入Sheet1表单中
    13. for i in range(len(data)):
    14. In_data = data[i]
    15. for j in range(len(col_name)):
    16. worksheet.write(i+1,j,In_data[j])
    17. #6.设置列宽和行高
    18. #6.1设置列宽
    19. for i in range(len(col_name)):
    20. worksheet.col(i).width = 256*20 # 256为衡量单位,20表示20个字符宽度
    21. worksheet.row(i+1).height_mismatch = True #设置行高第一步
    22. worksheet.row(i+1).height = 1600 #设置行高第二步
    23. #6保存文件
    24. workbook.save('b.xls')

    运行结果:

     3.2.4 xlwt设置单元格风格

    1. def body_style():
    2. #1.创建一个样式对象,初始化样式style
    3. style = xlwt.XFStyle() #创建 Style对象
    4. #2.字体风格设置
    5. font = xlwt.Font() #创建 Font对象
    6. font.name = 'Simon' #设置字体类型,宋体
    7. font.colour_index = 4 #设置字体颜色
    8. font.height = 20*12 #设置字体大小,12为字号,20为衡量值
    9. font.bont = True #设置体字加粗
    10. font.underline = True #下划线
    11. font.italic = True #斜体字
    12. #3.背景设置
    13. pattern = xlwt.Pattern()
    14. pattern.pattern = xlwt.Pattern.SOLID_PATTERN # 可选参数:NO_PATTERN, SOLID_PATTERN, 或 0x00-0x12之间的数
    15. pattern.pattern_fore_colour = 4 #设置背景颜色
    16. #4.边框设置
    17. borders = xlwt.Borders() #创建边框对象,#.DASHED:虚线;.NO_LINE:没有
    18. #4.1上下左右添加边框
    19. borders.left = 1
    20. borders.right = 1
    21. borders.top = 1
    22. borders.bottom = 1
    23. #4.2设置边框颜色
    24. borders.left_colour = 2
    25. borders.right_colour = 2
    26. borders.top_colour = 2
    27. borders.bottom_colour = 2
    28. #5.位置设置
    29. alignment = xlwt.Alignment()
    30. alignment.horz = 1 #设置水平位置,0是左对齐,1是居中,2是右对齐
    31. alignment.wrap = 1 #设置自动换行
    32. #6.设置好后,全局加入到style中
    33. style.alignment = alignment
    34. style.font = font
    35. style.borders = borders
    36. return style

    应用方法

    • 不带格式的:sheet.write(row, colum, i) 
    • 带格式的:sheet.write(row, colim, i, style)

  • 相关阅读:
    Springboot+基于微信小程序的商城 毕业设计-附源码191145
    janus-gateway安装(docker方式)(centos7)
    Containerd组件 —— containerd-shim-runc-v2作用
    Redis实战之缓存:查询、添加缓存、更新缓存、缓存预热、缓存穿透、缓存雪崩、缓存击穿 解决方案及实例代码
    Charles 抓包工具教程(七) Charles- compose 创建模拟请求
    传奇服务端如何添加地图
    Boosting Bagging Stacking Mapping 区别
    编译 libcurl 静态库
    ARM汇编器所支持的伪操作 - 信息报告伪操作
    202209-1 如此编码
  • 原文地址:https://blog.csdn.net/m0_52162042/article/details/126281872