我是Python的新手。我需要将程序中的一些数据写入电子表格。我在网上搜索过,似乎有很多可用的包(xlwt,XlsXcessive,openpyxl)。其他人建议写入.csv文件(从未使用过CSV,也不太了解它是什么)。
这个程序非常简单。我有两个列表(浮点数)和三个变量(字符串)。我不知道这两个列表的长度,它们可能不会是相同的长度。
我希望布局如下图所示:
粉红色列将具有第一个列表的值,绿色列将具有第二个列表的值。
那么,最好的方法是什么呢?
附注:我运行的是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位。
发布于 2012-11-18 13:32:44
import xlwt
def output(filename, sheet, list1, list2, x, y, z):
book = xlwt.Workbook()
sh = book.add_sheet(sheet)
variables = [x, y, z]
x_desc = 'Display'
y_desc = 'Dominance'
z_desc = 'Test'
desc = [x_desc, y_desc, z_desc]
col1_name = 'Stimulus Time'
col2_name = 'Reaction Time'
#You may need to group the variables together
#for n, (v_desc, v) in enumerate(zip(desc, variables)):
for n, v_desc, v in enumerate(zip(desc, variables)):
sh.write(n, 0, v_desc)
sh.write(n, 1, v)
n+=1
sh.write(n, 0, col1_name)
sh.write(n, 1, col2_name)
for m, e1 in enumerate(list1, n+1):
sh.write(m, 0, e1)
for m, e2 in enumerate(list2, n+1):
sh.write(m, 1, e2)
book.save(filename)
更多解释请访问:https://github.com/python-excel
发布于 2012-11-18 13:51:44
使用pandas中的DataFrame.to_excel。Pandas允许你用功能丰富的数据结构来表示你的数据,也可以让你read in excel文件。
您首先必须将数据转换为DataFrame,然后将其保存为excel文件,如下所示:
In [1]: from pandas import DataFrame
In [2]: l1 = [1,2,3,4]
In [3]: l2 = [1,2,3,4]
In [3]: df = DataFrame({'Stimulus Time': l1, 'Reaction Time': l2})
In [4]: df
Out[4]:
Reaction Time Stimulus Time
0 1 1
1 2 2
2 3 3
3 4 4
In [5]: df.to_excel('test.xlsx', sheet_name='sheet1', index=False)
出来的excel文件如下所示:
请注意,这两个列表的长度必须相等,否则熊猫会抱怨。要解决此问题,请将所有缺少的值替换为None
。
发布于 2015-05-01 07:34:16
我调查了一些Python的Excel模块,发现openpyxl是最好的。
这本免费的书用Python has a chapter on openpyxl自动化了无聊的东西,并提供了更多细节,你也可以查看Read the Docs站点。您不需要安装Office或Excel即可使用openpyxl。
你的程序看起来像这样:
import openpyxl
wb = openpyxl.load_workbook('example.xlsx')
sheet = wb.get_sheet_by_name('Sheet1')
stimulusTimes = [1, 2, 3]
reactionTimes = [2.3, 5.1, 7.0]
for i in range(len(stimulusTimes)):
sheet['A' + str(i + 6)].value = stimulusTimes[i]
sheet['B' + str(i + 6)].value = reactionTimes[i]
wb.save('example.xlsx')
https://stackoverflow.com/questions/13437727
复制相似问题