PythonXLSXWriter:使用for循环从多个列表中写入

PythonXLSXWriter:使用for循环从多个列表中写入,python,list,for-loop,xlsxwriter,Python,List,For Loop,Xlsxwriter,我试图学习Python,但在使用xlsxwriter模块使用多个列表写入excel文件时遇到了一个问题 我有4个列表,所有列表都有相同的长度(每个列表中有5个项目) 我在那里毫无问题地创建了我的excel文件、工作表和excel文件的标题: listing = xlsxwriter.Workbook(path_report + "/Listing.xlsx") worksheet = listing.add_worksheet("Listing") worksheet.write(0, 0,

我试图学习Python,但在使用xlsxwriter模块使用多个列表写入excel文件时遇到了一个问题

我有4个列表,所有列表都有相同的长度(每个列表中有5个项目)

我在那里毫无问题地创建了我的excel文件、工作表和excel文件的标题:

listing = xlsxwriter.Workbook(path_report + "/Listing.xlsx")
worksheet = listing.add_worksheet("Listing")

worksheet.write(0, 0, "files_list_database")
worksheet.write(0, 1, "totals_list_database")
worksheet.write(0, 2, "files_list_csv")
worksheet.write(0, 3, "prices_list_csv")
worksheet.write(0, 4, "match")
这里是我努力填充前5行的部分(列表中每个项目一行;我希望每个列表的第一个元素位于第一行,每个列表的标题都有相同的名称,这样就不会有混淆):

文件列表数据库、总计列表数据库、文件列表csv和价格列表csv是我的4个列表,全部包含5个元素

以下是错误消息:

--> for files_list_database, totals_list_database, files_list_csv, prices_list_csv in files_list_database:
          worksheet.write(row + 1, 0, files_list_database[row])
          worksheet.write(row + 1, 1, totals_list_database[row])

ValueError: too many values to unpack (expected 4)
我不明白“ValueError:太多值无法解包(预期4)”是什么意思,计算机应该预期5个值,因为我的每个列表中有5个值? 我假设这来自“in files\u list\u database”,它在同一行中写入了两次,但我无法确定如何指定我希望计算机在列表中循环的次数

目的是能够重复此过程,即使列表中每个都包含1000个值:)!(所有列表始终包含相同数量的值)

基本上,从这4个列表中:

files_list_database = ['2020_04_20_1.csv', '2020_04_20_2.csv', '2020_04_20_3.csv', '2020_04_20_4.csv', '2020_04_20_5.csv']
totals_list_database = [1000, 2000, 3000, 4000, 5000]
files_list_csv = ['2020_04_20_1.csv', '2020_04_20_2.csv', '2020_04_20_3.csv', '2020_04_20_4.csv', '2020_04_20_5.csv']
prices_list_csv = ['1000', '2000', '3000', '4000', '50000']
我想填充我的excel文件,然后用一个简单的excel公式进行匹配:)


谢谢你的帮助:)

将列表写入excel文件至少有两种方法

使用熊猫 使用xlsxwriter 通过这两种方式,输出与所需文件相同:

*编辑* 您还可以创建一个包含所有文件名及其数据的字典:

import xlsxwriter

files_list_database = ['2020_04_20_1.csv', '2020_04_20_2.csv', '2020_04_20_3.csv', '2020_04_20_4.csv', '2020_04_20_5.csv']
totals_list_database = [1000, 2000, 3000, 4000, 5000]
files_list_csv = ['2020_04_20_1.csv', '2020_04_20_2.csv', '2020_04_20_3.csv', '2020_04_20_4.csv', '2020_04_20_5.csv']
prices_list_csv = ['1000', '2000', '3000', '4000', '50000']

workbook = xlsxwriter.Workbook('test.xlsx')
worksheet = workbook.add_worksheet('Sheet1')

# Create a dictionary with your file names and your files
all_files = {'files_list_database': files_list_database,
            'totals_list_database': totals_list_database,
            'files_list_csv': files_list_csv,
            'prices_list_csv': prices_list_csv}

for index, file in enumerate(all_files):
    worksheet.write(0, index, file)
    for row in range(1, len(all_files[file])+1):
        worksheet.write(row, index, all_files[file][row-1])

workbook.close()

xlsxwriter方法正是我所需要的!尽管如此,我还是有点惊讶,我不能将4个for循环“组合”为一个for循环,并执行4行;可能是因为我知道我可以用VBA做这样的事情。感谢是可能的,事实上一切都是可能的。检查我的答案,我编辑它是为了在一个循环中获得您想要的结果。这很完美我之前尝试创建一个字典,但它不起作用。我将尝试了解循环和字典是如何一起工作的谢谢您的帮助
import pandas as pd

files_list_database = ['2020_04_20_1.csv', '2020_04_20_2.csv', '2020_04_20_3.csv', '2020_04_20_4.csv', '2020_04_20_5.csv']
totals_list_database = [1000, 2000, 3000, 4000, 5000]
files_list_csv = ['2020_04_20_1.csv', '2020_04_20_2.csv', '2020_04_20_3.csv', '2020_04_20_4.csv', '2020_04_20_5.csv']
prices_list_csv = ['1000', '2000', '3000', '4000', '50000']

df['files_list_database'] = pd.Series(files_list_database)
df['totals_list_database'] = pd.Series(totals_list_database)
df['files_list_csv'] = pd.Series(files_list_csv)
df['prices_list_csv'] = pd.Series(prices_list_csv)

df.to_excel('test.xlsx', index=False)
import xlsxwriter

files_list_database = ['2020_04_20_1.csv', '2020_04_20_2.csv', '2020_04_20_3.csv', '2020_04_20_4.csv', '2020_04_20_5.csv']
totals_list_database = [1000, 2000, 3000, 4000, 5000]
files_list_csv = ['2020_04_20_1.csv', '2020_04_20_2.csv', '2020_04_20_3.csv', '2020_04_20_4.csv', '2020_04_20_5.csv']
prices_list_csv = ['1000', '2000', '3000', '4000', '50000']

workbook = xlsxwriter.Workbook('test.xlsx')
worksheet = workbook.add_worksheet('Sheet1')

worksheet.write('A1', 'files_list_database')
for row in range(2,len(files_list_database)+2):
    worksheet.write(f'A{row}', files_list_database[row-2])

worksheet.write('B1', 'totals_list_database')
for row in range(2,len(totals_list_database)+2):
    worksheet.write(f'B{row}', totals_list_database[row-2])

worksheet.write('C1', 'files_list_csv')
for row in range(2,len(files_list_csv)+2):
    worksheet.write(f'C{row}', files_list_csv[row-2])

worksheet.write('D1', 'prices_list_csv')
for row in range(2,len(prices_list_csv)+2):
    worksheet.write(f'D{row}', prices_list_csv[row-2])

workbook.close()
import xlsxwriter

files_list_database = ['2020_04_20_1.csv', '2020_04_20_2.csv', '2020_04_20_3.csv', '2020_04_20_4.csv', '2020_04_20_5.csv']
totals_list_database = [1000, 2000, 3000, 4000, 5000]
files_list_csv = ['2020_04_20_1.csv', '2020_04_20_2.csv', '2020_04_20_3.csv', '2020_04_20_4.csv', '2020_04_20_5.csv']
prices_list_csv = ['1000', '2000', '3000', '4000', '50000']

workbook = xlsxwriter.Workbook('test.xlsx')
worksheet = workbook.add_worksheet('Sheet1')

# Create a dictionary with your file names and your files
all_files = {'files_list_database': files_list_database,
            'totals_list_database': totals_list_database,
            'files_list_csv': files_list_csv,
            'prices_list_csv': prices_list_csv}

for index, file in enumerate(all_files):
    worksheet.write(0, index, file)
    for row in range(1, len(all_files[file])+1):
        worksheet.write(row, index, all_files[file][row-1])

workbook.close()