我是Python新手。我需要将程序中的一些数据写入电子表格。我在网上搜索过,似乎有很多可用的软件包(xlwt、XlsXcessive、openpyxl)。其他人建议写信给一家公司。csv文件(从未使用过csv,也不了解它是什么)。
程序非常简单。我有两个列表(float)和三个变量(string)。我不知道这两个列表的长度,它们可能不会是相同的长度。
我希望布局如下图:
粉红色列将具有第一个列表的值,绿色列将具有第二个列表的值。
那么最好的方法是什么呢?
P. S.我正在运行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循环中创建的单元格(列表1值)格式化为科学或数字?
我不想截断这些值。程序中使用的实际值在小数点后大约有10位数字。
>
要使用xlwt格式化单元格,请定义XFStyle
,并在写入工作表时包含样式。下面是一个具有多种数字格式的示例。请参见下面的示例代码。
Tablib(功能强大,直观):Tablib是一个更强大但直观的库,用于处理表格数据。它可以编写具有多个工作表以及其他格式的excel工作簿,如csv、json和yaml。如果您不需要格式化的单元格(如背景颜色),您将帮助自己使用这个库,从长远来看,这将使您走得更远。
CSV(简单):计算机上的文件是文本或二进制文件。文本文件只是字符,包括换行符和制表符等特殊字符,可以在任何地方轻松打开(例如记事本、网络浏览器或Office产品)。csv文件是以某种方式格式化的文本文件:每行是一个值列表,用逗号分隔。Python程序可以很容易地读写文本,所以csv文件是将数据从Python程序导出到excel(或另一个python程序)的最简单和最快的方法。
Excel文件是二进制文件,需要知道文件格式的特殊库,这就是为什么您需要一个额外的python库,或者像Microsoft Excel、Gnumeric或LibreOffice这样的特殊程序来读/写它们。
import xlwt
style = xlwt.XFStyle()
style.num_format_str = '0.00E+00'
...
for i,n in enumerate(list1):
sheet1.write(i, 0, n, fmt)
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
使用DataFrame.to_excel熊猫。Pandas允许您在功能丰富的数据结构中表示数据,并允许您在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
。
问题内容: 我需要将程序中的一些数据写入电子表格。我在网上搜索过,似乎有很多可用的软件包(xlwt,XlsXcessive,openpyxl)。其他人则建议写入.csv文件(从未使用过CSV,也不真正了解它是什么)。 该程序非常简单。我有两个列表(浮点数)和三个变量(字符串)。我不知道两个列表的长度,它们的长度可能不一样。 粉色列将具有第一个列表的值,绿色列将具有第二个列表的值。 那么最好的方法是
问题内容: 我有一个带有许多选项卡的Excel工作簿。每个选项卡与所有其他选项卡具有相同的标题集。我想将每个选项卡中的所有数据合并到一个数据帧中(而无需重复每个选项卡的标题)。 到目前为止,我已经尝试过: 可以在parse参数中使用表示“所有电子表格”的内容吗?还是这是错误的方法? 提前致谢! 更新:我尝试过: 但这不是“工作”。 问题答案: 这是一种实现方法-将所有工作表加载到数据帧的字典中,然
问题内容: 我有一个名为tblAccounts的表,其内容将来自excel电子表格。 我在Windows 8.1(x64)上使用MS SQL Server 2008(x64) 我尝试使用SQL Server导入/导出向导,但是没有选择现有表的选项,只有一个创建新表的选项。 我尝试使用其他方法,例如OPENROWSETS 但是给了我一个错误: 消息7308,级别16,状态1,行1 OLE DB提供程
问题内容: 我有一个电子表格,实际上只有一个复杂的表格。我基本上将电子表格转换为cvs,并使用常规脚本生成INSERT脚本。 但是,我无法使用包含28个字段的表来执行此操作,该表包含电子表格中某些字段中的数据,这使得导入CVS更加复杂。因此,新CVS中的字段无法正确区分,或者我的脚本没有对此进行说明。 有人对更好的方法有任何建议吗?谢谢。 问题答案: 看一下LOAD DATA INFILE语句。这
问题内容: 我正在寻找使用openpyxl将行插入电子表格的最佳方法。 实际上,我有一个电子表格(Excel 2007),该电子表格具有标题行,其后最多(数千)行数据。我希望将行插入为实际数据的第一行,因此在标题之后。我的理解是,附加功能适合于将内容添加到 结尾 的文件。 阅读有关openpyxl和xlrd(以及xlwt)的文档,除了手动循环浏览内容并将其插入新表(在插入所需行之后)之外,我找不到
问题内容: 我想在数据库中建立表格以在Excel工作表中获取大量联系信息,以便我可以在数据库中进行维护。 我尝试遵循从SQL Server 2008 R2导入导入/导出平面文件的操作,但此操作不起作用。谁能告诉我如何将电子表格成功导入数据库中的表中? 谢谢 问题答案: 有一个Microsoft知识库文章,列出了所有可能的方法。 http://support.microsoft.com/kb/321