概述
首先我感觉openpyxl是不可以修改已经存在数据的Excel文件的。我是一个新手,所以如果写的不对,还请指出来。这个以后我也会慢慢修改里面的东西,主要是给自己当做笔记使用的。
这是我之前帮别人处理Excel表格写的程序。
import openpyxl
import math
import os, shutil
"""该程序是对excel表格进行处理,将每一个Excel表格中的每个sheet进行读取,并
计算出每个方向上的平均风速,写入到对应的sheet。"""
def dealdata(filename,filepath_one):
wb = openpyxl.load_workbook(filepath_one)
# 获取workbook中所有的表格
sheets_n = wb.sheetnames
print(sheets_n)
# 创建一个全局的字典用来储存每个sheet生成的平均值。
Total_data = {}
# 循环遍历所有sheet
for i in range(len(sheets_n)):
sheet = wb[sheets_n[i]]
print('nn第' + str(i + 1) + '个sheet: ' + sheet.title + '->>>')
print(sheet.max_row)
num_Dict = {}
for r in range(1, sheet.max_row + 1):
if r == 1:
print('n' + ''.join(
[str(sheet.cell(row=r, column=c).value).ljust(17) for c in range(1, sheet.max_column + 1)]))
else:
# print(''.join([str(sheet.cell(row=r, column=c).value).ljust(20) for c in range(1, sheet.max_column + 1)]))
for num in range(1, sheet.max_column + 1):
# print(str(sheet.cell(row = r,column = num).value).ljust(20))
num_Dict.setdefault(r, []).append(sheet.cell(row=r, column=num).value)
# print(num_Dict[r])
# 对每一行的数据进行累加求得平均值。
X_num = 0
Y_num = 0
Z_num = 0
n = 0
for value in num_Dict.values():
print("12 = " +str(value[0]))
print("13 = " +str(value[1]))
print("14 = " +str(value[2]))
print("15 = " +str(value[3]))
n = n + 1
X_num += float(value[1])
Y_num += float(value[2])
Z_num += float(value[3])
print(X_num)
print(Y_num)
print(Z_num)
print(n)
print(sheet.max_row)
Ave_x = float(X_num / (sheet.max_row - 1))
Ave_y = float(Y_num / (sheet.max_row - 1))
Ave_z = float(Z_num / (sheet.max_row - 1))
print(Ave_x)
print(Ave_y)
print(Ave_z)
dict_excel = []
# dict_excel.append("Ave")
dict_excel.append(Ave_x)
dict_excel.append(Ave_y)
dict_excel.append(Ave_z)
Total_data.setdefault(sheet.title, []).append(dict_excel)
# 创建一个新的,用来储村计算出来平均速度的数据
of = open("Exceldeal" + filename+".txt", "a")
for value in sheets_n:
print(Total_data[value])
of.write(value)
datas = list(Total_data[value])
for data in datas:
for da in data:
# print(len(da))
print(da)
of.write('t' + '{:<20}'.format(str(da)))
of.write("n")
# 向上面的文件写入计算得出X,Y方向上的和速度。
# for sped in Total_data.values():
# print(sped)
Dict_num = {}
for name in sheets_n:
data_vec = list(Total_data[name])
for data in data_vec:
# for dat in data:
print("nih = " + str(data[0]))
sum = math.sqrt(pow(data[0], 2) + pow(data[1], 2))
Dict_num[name] = sum;
for name in sheets_n:
of.write(name)
of.write('t' + '{:<20}'.format(Dict_num[name]))
of.write("n")
of.close()
def getpath(filepath_all):
Dict_file = { }
# work_dir = 'D:\python_work\newpython\file'
for parent, dirnames, filenames in os.walk(filepath_all):
for filename in filenames:
file_path = os.path.join(parent, filename)
print(filename)
print(file_path)
Dict_file[filename] = file_path
return Dict_file
def main(filepath):
#filepath = 'D:\python_work\newpython\file'
workfile_dir = { }
workfile_dir = getpath(filepath)
for key in workfile_dir.keys():
print(key)
dealdata(key,workfile_dir[key])
if __name__ == '__main__':
filepath = 'D:\python_work\newpython\xiteishan'
main(filepath)
文件的输入部分,我认为都一样, 输出我这里用的是另输出一个TXT文件。然后把文件手动的插入excel表格的一个sheet里。
我之前用wb.active.append(列表),写入到已存在数据的Excel表格,这个方法,因为一个excel里有好多sheet,本来想对每个sheet里面的数据求平均值,然后再添加到对应sheet的最后一行。可是发现最后都写入到了一个sheet里面。也不知道问题出在了哪里。
最后
以上就是哭泣菠萝为你收集整理的关于用openpyxl处理excel,读和写的问题的全部内容,希望文章能够帮你解决关于用openpyxl处理excel,读和写的问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复