文件I/O-excel

文件I/O-excel

读写数据

  1. 安装 openpyxl

     pip install openpyxl
    
  2. 打开文件

     from openpyxl import load_workbook
    
     from openpyxl.writer.excel import ExcelWriter
    
     try:
         workbook_ = load_workbook(u"data.xlsx")
         # 获得表单名字
         sheetnames = workbook_.get_sheet_names()
    
         sheet = workbook_.get_sheet_by_name(sheetnames[0])
     except Exception as ex:
         print(ex)
    
  3. 获取单元格

     # 获取某个单元格的值,观察excel发现也是先字母再数字的顺序,即先列再行
     b4 = sheet['A4']  #A行4列
    
     # 除了用下标的方式获得,还可以用cell函数, 换成数字,这个表示B4
     b4_too = sheet.cell(row=4, column=2)
     print(b4_too.value)
    
    
     for i in range(2):
         for j in range(5):
             print(sheet.cell(row=i+1, column=j+1).value,end=' ')
         print()
    
  4. 获得最大行和最大列

     # 获得最大列和最大行
     print(sheet.max_row)
     print(sheet.max_column)
    
  5. 获取行和列

    sheet.rows为生成器, 里面是每一行的数据,每一行又由一个tuple包裹。
    
    sheet.columns类似,不过里面是每个tuple是每一列的单元格。
    
    
    
     # 因为按行,所以返回A1, B1, C1这样的顺序
     for row in sheet.rows:
         for cell in row:
             print(cell.value)
    
     # A1, A2, A3这样的顺序
     for column in sheet.columns:
         for cell in column:
             print(cell.value)
    

    上面的代码就可以获得所有单元格的数据。如果要获得某行的数据呢?给其一个索引就行了,因为sheet.rows是生成器类型,不能使用索引,转换成list之后再使用索引,list(sheet.rows)[2]这样就获取到第三行的tuple对象。

     for cell in list(sheet.rows)[2]:
         print(cell.value)
    
  6. 切片获取

    还可以像使用切片那样使用。sheet[‘A1’:‘B3’]返回一个tuple,该元组内部还是元组,由每行的单元格构成一个元组。

     for row_cell in sheet['A1':'B3']:
         for cell in row_cell:
             print(cell)
    

写入数据

  1. 完整案例

     from openpyxl import Workbook
    
     from openpyxl import load_workbook
    
     from openpyxl.writer.excel import ExcelWriter
    
     try:
    
         #     新建工作表
         wb=Workbook()
         # 新建一个工作表,可以指定索引,适当安排其在工作簿中的位置
         sheet=wb.create_sheet('Data', index=1)  # 被安排到第二个工作表,index=0就是第一个位置
    
         # 删除某个工作表
         # wb.remove(wb)
         # del wb[sheet]
         # row = [1, 2, 3, 4, 5]
         # sheet.append(row)
         rows = [
             ['Number', 'data1', 'data2'],
             [2, 40],
             [3, 40, 25],
             [4, 50, 30],
             [5, 30, 10],
             [6, 25, 5],
             [7, 50, 10111],
         ]
         for row in rows:
             sheet.append(row)
         wb.save(r'新歌检索失败1477881109469.xlsx')
     except Exception as ex:
         print(ex)
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值