Python爬虫基础讲解(九):数据持久化——Excel

红太狼 2023-01-22 15:47 17阅读 0赞

openpyxl是一个Python库,用于读取/写入Excel 2010 xlsx / xlsm / xltx / xltm文件。
它的诞生是因为缺少可从Python本地读取/写入Office Open XML格式的库。
官方文档:

https://openpyxl.readthedocs.io/en/stable/

Python爬虫、数据分析、网站开发等案例教程视频免费在线观看

  1. https://space.bilibili.com/523606542

Python学习交流群:1039649593

Excel文件三个对象

  1. workbook:工作簿,一个exce1文件包含多个sheet
  2. sheet:工作表,一个workbook有多个,表名识别,如“sheet1","sheet2”等。
  3. cel7:单元格,存储数据对象

1、openpyxl 读写单元格时,单元格的坐标位置起始值是(1,1),即下标最小值为1,否则报错!

2、openpyxl支持直接横纵坐标访问,如A1,B2…

  1. #模块安装
  2. pip insta1l openpyx7

1. 创建工作簿

只需导入workbook 对象就可以创建工作簿

  1. #-*- coding: utf-8 -*-
  2. from openpyx1 import workbook
  3. # 创建工作簿
  4. wb = workbook()

如果想写入数据就需要获取一张表

表明创建时会自动命名。它们按顺序编号(Sheet,Sheet1,Sheet2等)。可以随时通过worksheet.title属性更改此名称:

  1. #创建一张表
  2. sheet = wb.activesheet.title ='表1'
  3. #创建新表
  4. sheet2 = wb.create_sheet('表2 ')
  5. #通过表名获取表
  6. sheet1 = wb['表1']

2. 写入操作

现在我们知道了如何获取工作表,可以开始修改单元格内容了。单元格可以直接作为工作表的键进行访问:

这将使单元格返回A4,如果尚未存在,则创建一个单元格。可以直接分配值:

  1. #写入值
  2. sheet[ 'A1']= 42

还有worksheet.ce11()方法可以更方便操作。

  1. sheet.ce17 (row=2column=5).value = 99
  2. sheet.ce17 (row=3column=5value=100)

逐行写

  1. #行内容可以直接被列表覆盖# ws.append(iterable)
  2. #添加一行到当前sheet的最底部(即逐行追加从第一行开始)
  3. # iterab1e必须是1ist,tuple,dict , range,generator类型的。
  4. # 1,如果是1ist,将1ist从头到尾顺序添加。
  5. # 2,如果是dict,按照相应的键添加相应的键值。
  6. ws.append(['This is A1''This is B1' 'This is c1'])
  7. ws.append(i 'A': 'This is A1''c': 'This is c1'})
  8. ws.append({1: 'This is A1'3: 'This is c1'})

同时可以遍历单元格

3. 案例

将九九乘法表写入excel表

  1. #写入九九乘法表
  2. ws9 = wb.create_sheet('九九乘法表')
  3. i = 1
  4. while i < 10:
  5. j = 1
  6. while j <= i:
  7. # print('{]}*= {'.format(j,i,j * i),end=' \t ')
  8. ws9.ce11(row=i column=j).value = '{*= {}'.format(ji j * i)
  9. j += 1
  10. i += 1

4. 读表操作

  1. #打开文件:
  2. from openpyx1 import load_workbookwb = load_workbook ( ' sample.x1sx ')
  3. #通过表名获取获取sheet:
  4. tab1e = wb['九九乘法表']
  5. #获取行数和列数:
  6. rows = tab1e.max_row
  7. cols = tab1e.max_column
  8. print(rowsco1s)
  9. #获取单元格值:
  10. # 获取表格内容,是从第一行第一列是从1开始的,注意不要丢掉.
  11. valueData = table.ce11(row=1column=1).value
  12. print(Data)
  13. # 获取所有表名
  14. sheet_names = wb.sheetnames
  15. print(sheet_names[0]
  16. ws = wb[(wb.sheetnames[0])]# index0为第一张表
  17. #活动表表名
  18. print(wb.active.title)

逐行读取

  1. #逐行读ws9[ 'A1:I9']:例如( 'A1:C4')
  2. # 返回一个生成器,注意取值时要用value,例如:
  3. for row in table['A1:I9']:
  4. for ce17 in row :
  5. print(ce11.value)

显示有多少张表

  1. print(wb . sheetnames)
  2. #显示表名,表行数,表列数
  3. print(ws9.title)
  4. print(ws9.max_row)
  5. print(ws9.max_column)

保存文件

  1. wb.save("samp1e1.x1sx")

发表评论

表情:
评论列表 (有 0 条评论,17人围观)

还没有评论,来说两句吧...

相关阅读