如何使用xlsxwriter无熊猫将一组列表写入Excel?

问题描述

我创建了3个单独的列表,并将它们附加到一个空白处。

我想在Excel中的CompanySectorURL列下编写每个列表。

我尝试遍历它们,但没有成功。

我想不用熊猫来做。


    import xlsxwriter

    workbook = xlsxwriter.Workbook('example.xlsx')
    worksheet = workbook.add_worksheet('To add')

    companies = ['House1','House2']
    sector = ['Kitchen','Living room']
    url = ['www.house1.com','www.house2.com']

    list_companies = []
    list_companies.append(companies)
    list_companies.append(sector)
    list_companies.append(url)

    head = ['Company','Sector','URL']
    bold = workbook.add_format({'bold':True})

    worksheet.write_row(0,head,bold)
    workbook.close()

解决方法

为方便起见,将列表聚合转换为字典。

要写入excel,请使用worksheet.write(row,col,*args),如下所示:

import xlsxwriter

workbook = xlsxwriter.Workbook('example.xlsx')
worksheet = workbook.add_worksheet('To add')

companies = ['House1','House2']
sectors = ['Kitchen','Living room']
urls = ['www.house1.com','www.house2.com']

companies_dictionary = {}

companies_dictionary['companies']   = companies
companies_dictionary['sector']      = sectors
companies_dictionary['url']         = urls

head = ['Company','Sector','URL']
bold = workbook.add_format({'bold': True})

worksheet.write_row(0,head,bold)


head_offset = 1
for company_index in range(len(companies_dictionary['companies'])):
    current_excel_row_number = company_index + head_offset + 1
    worksheet.write(f'A{current_excel_row_number}',companies_dictionary['companies'][company_index])
    worksheet.write(f'B{current_excel_row_number}',companies_dictionary['sector'][company_index])
    worksheet.write(f'C{current_excel_row_number}',companies_dictionary['url'][company_index])

workbook.close()

结果:

Company Sector  URL
House1  Kitchen www.house1.com
House2  Living room www.house2.com
,

最干净的方法可能是使用write_column()方法。像这样:


import xlsxwriter

workbook = xlsxwriter.Workbook('example.xlsx')
worksheet = workbook.add_worksheet('To add')

companies = ['House1','House2']
sector = ['Kitchen','Living room']
url = ['http://www.house1.com','http://www.house2.com']

head = ['Company','URL']
bold = workbook.add_format({'bold':True})

# Make some of the columns wider for clarity.
worksheet.set_column(0,1,12)
worksheet.set_column(2,2,20)

# Write the data.
worksheet.write_row(0,bold)
worksheet.write_column(1,companies)
worksheet.write_column(1,sector)
worksheet.write_column(1,url)

workbook.close()

输出:

enter image description here

请注意,我在网址中添加了http://,以便XlsxWriter将其转换为Excel链接。

有关使用XlsxWriter写入数据的信息,请参见XlsxWriter文档的Working with and Writing Data部分。