python如何读取excel表格数据

2024-06-17 1396阅读

文章目录

    • excel的格式
    • xls格式文件
      • xlrd
      • xlwt
      • excel读取xls类型数据三个方法
      • xlsx格式文件
        • openpyxl

          excel的格式

          excel有xls和xlsx两种格式,他们的区别在于

          • 文件格式不同:xls是一个特有的二进制格式,其核心结构是符合文档类型的机构,而xlsx的核心结构是xml类型的结构,采用的事基于xml的压缩方式,使其占用的空间更小。xlsx中最后一个x的意义就在于此。
          • 兼容性不同,xlsx格式是向下兼容的,可以兼容xls格式。
          • python自带的模块中有针对xls格式的xlrd和xlwt模块,但是这两个库仅仅针对xls的操作,当我们要操作xlsx格式文件时,则需要使用到openpyxl第三方库

            python如何读取excel表格数据

            xls格式文件

            python中对xls格式文件相关的包有三个:xlrd、xlwt和xlutils

            • xlrd只能读取文件,不能写入文件
            • xlwt只能写入文件,不能读取文件
            • xlutils通过.copy.copy方法,将xlrd读取的文件复制给xlwt处理,相当于在xlrd和xlwt之间架起一座桥梁

              xlrd

              # xls
              import xlrd
              path='11.xls'
              index=0
              sheetname='sheet1'
              # 打开文件,绝对路径或者相对路径,找不到文件会报错
              workbook=xlrd.open_workbook(path)
              # 获取文件中所有的sheet对象
              sheets=workbook.sheets()
              # 获取文件中所有的sheet名称,返回名称列表
              names=workbook.sheet_names()
              # 获取一个文件中有多少对象
              n=workbook.nsheets
              # 获取对应索引的对象,索引从0开始
              sheet_index=workbook.sheet_by_index(index)
              # 获取指定工作表的表名
              name=sheet_index.name
              # 获取对应名字的对象
              sheet_name=workbook.sheet_by_name(sheetname)
              print(sheet_name)
              # 获取xls的行和列的数量
              nrows=sheet_index.nrows
              ncols=sheet_index.ncols
              # 获取工作表对应行和列的单元格组成的列表
              # 元素的格式是 数值类型:对应数据
              row_list=sheet_index.row(0)
              print(row_list,'\n')
              row_list=sheet_index.row(1)
              # print(row_list,'\n')
              col_list=sheet_index.col(2)
              # print(col_list,'\n')
              # 取出工作表对应行和列的值组成的列表
              row_value=sheet_index.row_values(-1)# 最后一行
              print(row_value,"\n")
              col_value=sheet_index.col_values(0)
              # 输出行和列
              row_type=sheet_index.row_types(6)# 数据类型:0.空,1.字符串,2.数字,3.日期,4.布尔,5.error
              print(row_type,"\n")
              col_type=sheet_index.col_types(1)
              # 根据索引值,返回该行的长度,列没有对应操作
              len=sheet_index.row_len(1)
              # 对单元格进行操作
              # 根据行列的索引,返回单元格的数据 数据类型:对应数据
              di=sheet_index.cell(0,1)
              print(di,"\n")
              # 返回单元格的数据
              ty=sheet_index.cell_value(0,1)
              ty=sheet_index.cell(0,1).value
              ty=sheet_index.row(0)[1].value
              

              运行结果

              python如何读取excel表格数据

              xlwt

              import xlwt
              name='sheet1'
              new_workbook=xlwt.Workbook('utf-8')
              # 在工作簿中添加一个工作表,如果不添加会报错
              new_sheet=new_workbook.add_sheet(name)
              # 添加内容
              row=0
              col=0
              text='11111'
              new_sheet.write(row,col,text)
              # 保存
              file_path='11.xls'
              new_workbook.save(file_path)
              

              excel读取xls类型数据三个方法

              可以通过一下方法,对xls数据进行读取、写入和追加写入

              import xlrd
              import xlwt
              from xlutils.copy import copy
              # 读取xls格式的文件,读取全部的数据,以最大的行和最大的列来计算
              def read_xls_all(url,index):
                  '''
                  url:文件的路径
                  index:第几个工作表,从1开始
                  
                  返回值:表格中的数据
                  '''
                  # 打开指定的工作簿
                  workbook=xlrd.open_workbook(url)
                  # 获取工作簿中所有的表格
                  sheets=workbook.sheet_names()# sheets: ['Sheet1', 'Sheet2', 'Sheet3']
                  print('sheets:',sheets)
                  # 获取index的表格
                  worksheet=workbook.sheet_by_name(sheets[index])
                  
                  datas=[]
                  # 遍历每一行数据
                  for i in range(0,worksheet.nrows):
                      item=[]
                      # 遍历每一列数据
                      for j in range(0,worksheet.ncols):
                          item.append(worksheet.cell_value(i,j))# 可以获取单个数据
                      datas.append(item)
                  return datas
              # 往xls文件写入数据
              def write_xls_excel(url,sheet_name,data):
                  '''
                  data必须是二维表
                  '''
                  # 创建工作簿对象
                  workbook=xlwt.Workbook()
                  # 创建一个工作表对象
                  sheet=workbook.add_sheet(sheet_name)
                  # 遍历每一行数据
                  for i in range(0,len(data)):
                      for j in range(0,len(data[i])):
                          sheet.write(i,j,data[i][j])# 把原来所有的数据都清空,再写入数据
                  
                  workbook.save(url)
                  print('写入成功')
                  
              # 以追加的形式写入xls
              def write_xls_add(url,index,data):
                  workbook=xlrd.open_workbook(url)
                  sheets=workbook.sheet_names()
                  worksheet=workbook.sheet_by_name(sheets[index])
                  # 获取行数
                  rows=worksheet.nrows
                  # 将xlrd对象拷贝转化为xlwt对象
                  new_workbook=copy(workbook)
                  # 获取转化后工作簿中的第index个表格
                  new_worksheet=new_workbook.get_sheet(index)
                  # 遍历每一行数据
                  for i in range(0,len(data)):
                      for j in range(0,len(data[i])):
                          # 追加数据
                          new_worksheet.write(i+rows,j,data[i][j])
                  # 保存工作簿
                  new_workbook.save(url)
                  print('追加数据成功')
              

              xlsx格式文件

              openpyxl

              openpyxl不能凭空产生一个表格文件,但是xlwt可以,所以openpyxl需要传入一个excel文件

              import openpyxl
              # 读取xlsx格式文件
              def read_xlsx_excel(url,sheet_name):
                  '''
                  读取xlsx格式文件
                  返回值:表格中的数据
                  '''
                  # 使用openpyxl加载指定路径的excel文件并得到对应的workbook对象
                  workbook=openpyxl.load_workbook(url)
                  # 根据指定表名获取表格并得到对应的sheet对象
                  sheet=workbook[sheet_name]
                  data=[]
                  # 遍历表格中的每一行
                  for row in sheet.rows:
                      da=[]
                      for item in row:
                          da.append(item.value)
                      data.append(da)
                  return data
              # 写入数据
              def write_xlsx_excel(url,sheet_name,data):
                  '''
                  写入xlsx格式文件
                  会创建一个名为sheet_name的对象,把data写入,其他的全部清空
                  '''
                  # 创建工作簿
                  workbook=openpyxl.Workbook()
                  # 创建工作表对象
                  sheet=workbook.active
                  # 设置工作表的名字
                  sheet.title=sheet_name
                  
                  # 遍历数据
                  for i in range(0,len(data)):
                      for j in range(0,len(data[i])):
                          # 写入数据,注意openpyxl的行和列式从1开始的
                          sheet.cell(row=i+1,column=j+1,value=data[i][j])
                          
                  
                  # 保存
                  workbook.save(url)
                  print('写入成功')
                  
                  
                  
              # 追加写入xlsx格式文件
              def write_xlsx_add(url,sheet_name,datas):
                  '''
                  追加数据
                  '''
                  # 使用openpyxl加载指定路径的excel文件并得到对应的workbook对象
                  workbook=openpyxl.load_workbook(url)
                  # 根据指定表名获取表格并得到对应的sheet对象
                  sheet=workbook[sheet_name]
                  # 增加一个定位
                  sheet['B1']='开始'# 可用于增加表头
                  for item in datas:
                      sheet.append(item)
                  
                  # 保存
                  workbook.save(url)# 覆盖原来已经存在的文件
                  print('追加数据成功')
                  
              url='example.xlsx'
              sheet_name='Sheet2'
              data=read_xlsx_excel(url,sheet_name)
              print(type(data[0][0]))
              print(data)
              # write_xlsx_excel(url,'Sheet2',data)
              write_xlsx_add(url,sheet_name,data)
              
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]