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


