如何使用Python向Excel电子表格中写入内容?

197

我需要将程序中的一些数据写入Excel电子表格。我在网上搜索到有许多可用的软件包(如xlwt、XlsXcessive、openpyxl)。其他人建议将数据写入.csv文件(我从未使用过CSV,也不太理解它是什么)。

这个程序非常简单。我有两个列表(float类型)和三个变量(字符串类型)。我不知道这两个列表的长度,并且它们可能长度不同。

我希望布局如下图所示:

Layout sample

粉色列将具有第一个列表的值,绿色列将具有第二个列表的值。

那么最好的方法是什么?

我正在运行Windows 7,但并不一定在运行该程序的计算机上安装Office。

import xlwt

x=1
y=2
z=3

list1=[2.34,4.346,4.234]

book = xlwt.Workbook(encoding="utf-8")

sheet1 = book.add_sheet("Sheet 1")

sheet1.write(0, 0, "Display")
sheet1.write(1, 0, "Dominance")
sheet1.write(2, 0, "Test")

sheet1.write(0, 1, x)
sheet1.write(1, 1, y)
sheet1.write(2, 1, z)

sheet1.write(4, 0, "Stimulus Time")
sheet1.write(4, 1, "Reaction Time")

i=4

for n in list1:
    i = i+1
    sheet1.write(i, 0, n)

book.save("trial.xls")

我使用了你提供的所有建议来写这篇文章。它能够完成任务,但还有一些可以稍微改进的地方。

在for循环中创建的单元格(list1 值)如何以科学计数法或数字格式进行格式化?

我不想截断这些值。程序中使用的实际值应该有小数点后约10位数字。


如果您在记事本/写字板等文本编辑器中打开一个tsv文件,您将了解它是什么。使用tsv的主要优势在于,您可以确信基本上任何版本的任何电子表格程序都可以打开它,而不仅仅是office2010的excel。 - loopbackbee
使用Python中的字符串格式控制数值数据的显示。 - Fred Mitchell
请查看openpyxl以处理.xlsx文件。 - Santiago
12个回答

0
你可以尝试使用hfexcel,这是一个基于XlsxWriter的人性化面向对象的Python库:
from hfexcel import HFExcel

hf_workbook = HFExcel.hf_workbook('example.xlsx', set_default_styles=False)

hf_workbook.add_style(
    "headline", 
    {
       "bold": 1,
        "font_size": 14,
        "font": "Arial",
        "align": "center"
    }
)

sheet1 = hf_workbook.add_sheet("sheet1", name="Example Sheet 1")

column1, _ = sheet1.add_column('headline', name='Column 1', width=2)
column1.add_row(data='Column 1 Row 1')
column1.add_row(data='Column 1 Row 2')

column2, _ = sheet1.add_column(name='Column 2')
column2.add_row(data='Column 2 Row 1')
column2.add_row(data='Column 2 Row 2')


column3, _ = sheet1.add_column(name='Column 3')
column3.add_row(data='Column 3 Row 1')
column3.add_row(data='Column 3 Row 2')

# In order to get a row with coordinates:
# sheet[column_index][row_index] => row
print(sheet1[1][1].data)
assert(sheet1[1][1].data == 'Column 2 Row 2')

hf_workbook.save()

0

如果您需要修改现有的工作簿,最安全的方法是使用pyoo。您需要安装一些库,并且需要跳过一些步骤,但一旦设置完成,这将是非常可靠的,因为您可以利用LibreOffice / OpenOffice广泛而坚实的API。

请参阅我的Gist,了解如何设置Linux系统并使用pyoo进行基本编码。

以下是代码示例:

#!/usr/local/bin/python3
import pyoo
# Connect to LibreOffice using a named pipe 
# (named in the soffice process startup)
desktop = pyoo.Desktop(pipe='oo_pyuno')
wkbk = desktop.open_spreadsheet("<xls_file_name>")
sheet = wkbk.sheets['Sheet1']
# Write value 'foo' to cell E5 on Sheet1
sheet[4,4].value='foo'
wkbk.save()
wkbk.close()

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