如何将Python数组写入Excel电子表格

13
我试图使用Python将以下数组写入Excel电子表格:
array = [ [a1,a2,a3], [a4,a5,a6], [a7,a8,a9], [a10, a11, a12, a13, a14]]

电子表格的数组应该如下所示:

a1  a4  a7  a10
a2  a5  a8  a11
a3  a6  a9  a12
            a13
            a14

有人能展示一些Python代码来完成这件事吗?

先行致谢,

Felix


你目前写了什么代码,有哪些不足之处? - Scott Hunter
你是如何确定最终电子表格的样式的? - Scott Hunter
感谢所有回复者。有没有不使用任何Python包的解决方案?欢迎使用Pandas解决方案。 - Felix
5个回答

19
使用Pandas数据框架!
import pandas as pd

array = [['a1', 'a2', 'a3'],
         ['a4', 'a5', 'a6'],
         ['a7', 'a8', 'a9'],
         ['a10', 'a11', 'a12', 'a13', 'a14']]

df = pd.DataFrame(array).T
df.to_excel(excel_writer = "C:/Users/Jing Li/Desktop/test.xlsx")

excel_writer是一个文件路径字符串或现有的ExcelWriter对象。


13

以下是使用XlsxWriter模块进行操作的一种方法:

import xlsxwriter

workbook = xlsxwriter.Workbook('arrays.xlsx')
worksheet = workbook.add_worksheet()

array = [['a1', 'a2', 'a3'],
         ['a4', 'a5', 'a6'],
         ['a7', 'a8', 'a9'],
         ['a10', 'a11', 'a12', 'a13', 'a14']]

row = 0

for col, data in enumerate(array):
    worksheet.write_column(row, col, data)

workbook.close()

输出:

输入图像描述


0
如果您已经在使用pandas进行任务,则可以轻松地使用它来创建数据帧并将其转换为Excel表格。如果没有,使用xlsxwriter比pandas更容易,因为pandas是一个有点重的库。
pip install XlsxWriter

import xlsxwriter

workbook = xlsxwriter.Workbook("MyExcel.xlsx")
worksheet = workbook.add_worksheet()

有多种方法可以将数据写入Excel。您可以使用write_row()、write_column()或单元格逐个写入。

write_row(row, column, data)

row = [1, 2, 3, 4, 5]

worksheet.write_row(1, 2, row)

write_column(row, column, data)

的内容与编程有关。
column= [1, 2, 3, 4, 5]

worksheet.write_column(1, 2, column)

写入(row, column, 数据)

worksheet.write(0, 1, "Hello")
worksheet.write(0, 2, "World")

最后,关闭工作簿。
workbook.close()

像这样,有许多方法可以编写数据,您还可以对单元格、行或列进行条件格式设置。文档可以在此处找到。


0
print array

这将在Python控制台中打印数组,并用方括号标记行的开头和结尾。选择整个内容并复制粘贴到Excel中。点击粘贴图标 -> 文本导入向导。这应该会弹出this

选择固定宽度,然后点击下一步获取this

点击下一步,然后点击完成。就这样了。您仍需要从某些单元格中删除结束括号。


0
我见过的使用Python写入Excel电子表格最常见的方法是使用OpenPyXL,这是一个非本地的库。另一个偶尔使用的库是XlsxWriter,同样也是非本地的。这两个网站都有很好的文档说明如何最好地使用这些库,但下面是我编写的一些简单代码,以演示OpenPyXL的使用:
from openpyxl import workbook
from openpyxl.cell import get_column_letter

workbook = Workbook() # the master workbook
output_file_name = "outfile.xlsx" # what "workbook" will be saved as

worksheet = workbook.active() # all workbooks have one worksheet already selected as the default
worksheet.title = "foo"

worksheet['A3'] = "=SUM(A1, A2)" # set up basic formula
wb.save(output_file_name)

编辑:例如,您的请求可以写成如下形式:

## imports and stuff ##
array = [ [a1,a2,a3], [a4,a5,a6], [a7,a8,a9], [a10, a11, a12, a13, a14]]

workbook = Workbook()
worksheet = workbook.active()

numrows = len(array)
letter = 'A'
for r in range(0, numrows):
    if r == 0: letter = 'A'
    if r == 1: letter = 'B'
    if r == 2: letter = 'C'
    ...

    numcols = len(array[r])
    for c in range(0, numcols):
        worksheet[letter.join(c)] = array[r][c]

老实说,这个可能都不会起作用,但我太累了没力气测试。不过,我觉得你应该明白我要表达的意思。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接