Python合计不同sheet下同个单元格的数据
需求:将不同sheet表格下,同一个位置的单元格的数据,进行加法运算,并保存为另一个文件
举个例子,将上图,sheet1和sheet2(不同的sheet)的A1(同个位置的单元格)数据进行加法运算,结果应该等于332
使用xlwt和xlrd模块
book_read = xlrd.open_workbook('./test.xlsx')
sh = book_read.sheet_names() # 这里需要先获取excel下所有的sheet名,输出为列表
book_write = xlwt.Workbook(encoding='gbk')
sh_write = book.add_sheet('sheet',cell_overwrite_ok=True) #cell_overwrite_ok=True 参数设置为数据可覆盖
首先先考虑一个单元格不同sheet的运算,A1的行是1,列是1
....#继上面的代码
i = 0 # 设置个容器参数,用来暂时存储数据
for s in range(0,len(sh): #循环每个sheet
sh_read = book_read.sheet_by_name(sheet_name=sh[s])
z = sh_read.cell_value(0,0) #这里的0,0是A1的位置,因为它是从0开始的,所以要减1
i += int(z) #int(z)因为z获取的数据类型是float,所以进行转换,因为目前数据表都是整数,为了精确一点。如果大家想要小数点后的数,可以去掉
sh_write.write(0,0,i)
book_write.save('./result.xlsx')
可以得到结果,332
完整循环代码
基于以上代码,我们再对其套个循环,逐行逐列的计算
book_read = xlrd.open_workbook('./test.xlsx')
sh = book_read.sheet_names()
book_write = xlwt.Workbook(encoding='gbk')
sh_write = book.add_sheet('sheet',cell_overwrite_ok=True)
sh_count = book_read.sheet_by_name(sheet_name='Sheet1')
x = sh_count.nrows
y = sh_count.ncols #x,y为获取Sheet1的总行数和总列数
for row in range(0,x):
for col in range(0,y):
i = 0
for s in range(0,len(sh)):
sheet = book_read.sheet_by_name(sheet_name=sh[s])
z = sheet.cell_value(row,col)
i += int(z)
sh_write.write(row,col,i)
book_write.save('./result.xlsx')
以下为输出结果
日常的笔记,记录一下。以上的方法是学习了网上各路大神的思路,有哪些错误或者有其他更好的方法,请各位大神多多指导!!!!