赞
踩
excel有xls和xlsx两种格式,他们的区别在于
python中对xls格式文件相关的包有三个:xlrd、xlwt和xlutils
# 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
运行结果
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)
可以通过一下方法,对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('追加数据成功')
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)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。