其他分享
首页 > 其他分享> > xlrd和xlutils库对xls的读和修改

xlrd和xlutils库对xls的读和修改

作者:互联网

rom xlrd import open_workbook
from xlutils.copy import copy

#根据值来获取该行的数据
def read_file(i,name):
xls_file = 'D:\\test\\scrpit\\Parametric\\parametric.xls'
# 打开文件
wb = open_workbook(xls_file)
l=[]
# 根据sheet索引或者名称获取sheet内容
# sheet = workbook.sheet_by_index(1) # sheet索引从0开始
# 通过sheet名称获取sheet内容
sheet = wb.sheet_by_name(i)
# irow在当前sheet的总行里面
for irow in range(sheet.nrows):
# c_row在当前行的[irow]里
c_row = sheet.row(irow)
if c_row[0].value == name:
d={}
d['A']=c_row[0].value
d['B']=c_row[1].value
d['C']=c_row[2].value
#d['D']=c_row[3].value
l.append(d)
return l
 
def write_excel_xls_append(name,code):
xls_file = 'D:\\test\\scrpit\\Parametric\\parametric.xls'
# 打开文件,formatting_info=True是保留格式,但是不一定能格式能全部保留formatting_info=Flase是不保留,默认不保留格式,且对全表其作用不是当前sheet
wb =open_workbook(xls_file,formatting_info=True)
## 将xlrd的对象转化为xlwt的对象,这个就是转换成写,xlrd只能读,xlwt只能写。xlutils能读能写,但是要依赖xlrd和xlwt
excel = copy(wb)
# 转换成xlwt对象后切换第一张表
excel_table = excel.get_sheet(0)
# xlrd对象的第一张表
sheet=wb.sheets()[0]
# irow在当前sheet的总行里面这边是读取,所以要用xlrd对象的列表
for irow in range(sheet.nrows):
# c_row在当前sheet里的行的[irow]里
c_row = sheet.row(irow)
if c_row[0].value == name:
# 写入是用xlwt对象的 
excel_table.write(irow,1,code)
  # 修改完成后必须保存,这种相当于你先读取这种表然后用复制一份用xlwt写入在保存回来,不知道本人这样理解对不对如果不对请大佬指出
excel.save(xls_file)

标签:xlwt,xlutils,irow,sheet,xlrd,xls,row
来源: https://www.cnblogs.com/test-hui/p/12112292.html