当前位置: 首页 > 知识库问答 >
问题:

写入Excel电子表格

奚和光
2023-03-14

我是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位数字。

共有3个答案

白浩荡
2023-03-14

>

要使用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)
阎懿轩
2023-03-14
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

单于奕
2023-03-14

使用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