我是靠谱客的博主 哭泣菠萝,最近开发中收集的这篇文章主要介绍关于用openpyxl处理excel,读和写的问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

首先我感觉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,读和写的问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部