使用Openpyxl创建多个自定义电子表格

时间:2020-03-02 21:47:45

标签: python excel openpyxl xlsx

我正在尝试根据我们拥有的较大电子表格中的条件为我的办公室创建一系列电子表格。可以很容易地手工完成,但是由于我是编程的新手,所以我认为这是一个有趣的练习,看看我是否可以使用Openpyxl模块使用python来实现。

基本问题: 我有一个人们要旅行的国家/地区的列表,并且在行中列出了人们的姓名和其他数据,包括每个人要旅行的国家/地区的名称。每个人要去的国家/地区在第一栏中。对于每个国家/地区,我想制作一个单独的工作簿,以获取前往该国家/地区的每个人的数据行。出于我办公室的其他目的,每个列表都应另存为一个.xlsx文件,而不是一个工作簿中的所有新表。

我对编程非常陌生,但是到目前为止,这是我正在尝试的方法:

import openpyxl
from openpyxl import load_workbook
from openpyxl import Workbook
def create_roster(Country_name):
    roster_book = Workbook()
    ws2 = roster_book.active
    for row in cell_rows:
        if row[0] == Country_name:
            ws2.append(row)
    roster_book.save('C:\\....\\{}.xlsx'.format(Country_name))


countries = ('Au','Brazil','Costa R','Cuba','France','Germ','Ghana','Greece','Hungary','Italy','Japan','Korea','Peru','Romania','S.A.','Switz','Thai')
wb = load_workbook('C:\\....\\Big_list.xlsx', data_only=True)
ws = wb.active
cell_rows = []
for row in ws.values:
    cell_rows.append(tuple(row))

for country in countries:
    create_roster(country)

运行此代码时,出现一条从未出现过的错误消息,并说: “未处理的异常:输入的类型,预期的字符串或Element无效。”

到目前为止,搜索此错误消息对我来说没有收获。

更奇怪的是,没有像往常一样显示错误源于该行的行号(我使用的是Visual Studio 2019),而是IDE模块显示文本“ Frame not in module。当前堆栈”在已加载的模块中找不到框架。无法在此位置显示源。”

关于此错误的其他相关信息是,在我尝试创建所有这些.xlsx文件的文件夹中,列表中的第一个文件Au.xlsx出现在我尝试将其保存的文件夹中至。但是,当我尝试使用Excel打开此文件时,它不可读。

我无法确定我尝试执行此操作的方式出了什么问题。这是尝试创建多个自定义.xlsx文件的错误方法吗?这里的任何见识或建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

df = pd.read_excel("Filename.xlsx")



#make a list of all unique country names
    # or you can just read that specific cloumn and remove duplicate and pass it into a list 
    list = [All unique country names]


for i in list:
    # apply str func to I/P for String Comparsion
    i = str(i)
    leng = len(i)

    try:
        #make slice of dataframe containing only country = i
        df1= df[df.iloc[:, column_number_of_countries_column].str[:leng]== i]
    except:
        # pass if country does not exists
        continue

    #save df slice to excel sheet with name as Country
    df1.to_excel(i+".xlsx", index= False)
    print(" Sheet {} saved successfully!".format(i))
    print("File Saved!")
相关问题