Python-写入Excel电子表格

发布于 2021-02-02 23:19:28

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

该程序非常简单。我有两个列表(浮点数)和三个变量(字符串)。我不知道两个列表的长度,它们的长度可能不一样。

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

那么最好的方法是什么?

PS我正在运行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位数字。

关注者
0
被浏览
72
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。
    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)
    


  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看