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

例外情况是使用xlwt和python将列表插入到列中

范承志
2023-03-14

我对python非常陌生,我正在使用xlwt处理列表和excel表写入。我使用st.write(ID,名称)创建了6个colum。我的第一个疑问是,写入中的ID是行ID还是列ID(意味着写入(1,'abc')将写入第一行或第一列)?

现在我有6个列表,我想把每个列表都写到工作表中的一列。怎么写?st.write(colIDX,0,list1)是有效的write语句(它会将list1写入第0列吗)?如果没有,我该怎么做?

更新:这是我目前正在使用的代码,但它将异常抛出为异常:无效的工作表名称u'test'

import xlwt
import os
from merge import *

workbook = xlwt.Workbook()
sheet = workbook.add_sheet('test')

sheet.write(0,0,'Column1')
sheet.write(0,1,'Column2')
sheet.write(0,2,'Column3')
sheet.write(0,3,'Column4')

lst1 = list()
lst2 = list()
lst3 =  lt3 + lt4  #lt1 lt2 lt3 lt4 are lists are from merge file
lst4 =  lt1 + lt2


pt = 'C:/Users/Desktop/tmp'
for filename in os.listdir(pt):
    lst1.append(filename)
    lst2.append('PST')

ng = 'C:/Users/Desktop/tmp2'
for filename in os.listdir(ng):
    lst1.append(filename)
    lst2.append('NG')



column_number = 0
for row_number, item in enumerate(lst1):
    sheet.write(row_number, column_number, item)

column_number = 1
for row_number, item in enumerate(lst2):
    sheet.write(row_number, column_number, item)

column_number = 2
for row_number, item in enumerate(lst3):
    sheet.write(row_number, column_number, item)

column_number = 3
for row_number, item in enumerate(lst4):
    sheet.write(row_number, column_number, item)


workbook.save('test.xls')

共有3个答案

闽鸿宝
2023-03-14

还有一种方法可以做到这一点(看看它是否有帮助)——以一种类似蟒蛇的方式来做

像下面这样转置你的列表,然后正常粘贴到excel上。

>>> a = [['a', 'b', 'c'], ['aaaaaaaaaa', 'b', 'c'], ['a', 'bbbbbbbbbb', 'c']]
>>> list(zip(*a))
[('a', 'aaaaaaaaaa', 'a'), ('b', 'b', 'bbbbbbbbbb'), ('c', 'c', 'c')]
申思远
2023-03-14

首先,这里有一个Worksheet.write()实现(源代码):

def write(self, r, c, label="", style=Style.default_style):
    self.row(r).write(c, label, style)

第一个参数是行号,第二个参数是列号。

此外,下面是一个如何将列表写入第一列的示例:

import xlwt

data = ['Hello', 'World']

workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('test')

column_number = 0
for row_number, item in enumerate(data):
    worksheet.write(row_number, column_number, item)

workbook.save('test.xls')

这将产生一个测试。xls文件,在A1单元格中显示“Hello”,在A2单元格中显示“World”。

另请参阅相关线程:

  • Python-写入Excel电子表格

希望这有帮助。

子车飞鹏
2023-03-14

在我的情况下,只是超出了工作表名称中允许的字符限制

所以,剪下你的名字,再试一次可以帮助你。

ws=wb。添加表格(_small_course_name)

Excel对工作表名称有31个字符的硬限制。您的名称是34个字符。这不是xlwt限制。在Excel中手动尝试。

更多信息:https://groups.google.com/forum/#!msg/python excel/QK4iJrPDSB8/d4lmyj7txkj

 类似资料:
  • 我试图在列表中的列表中插入一些东西,但是我不知道该怎么做。 例如,我有一个列表列表: 我想将插入子列表,索引为0,位于元素之后,所以它看起来像这样:

  • 问题内容: 因为不插入换行符,这是将列表写入文件的最干净的方法吗? 似乎会有一种标准的方法… 问题答案: 你可以使用循环: 在Python 2中,你也可以使用 如果你热衷于单个函数调用,请至少移除方括号[],以便一次打印一个字符串(一个而不是一个)-没有理由占用所有内存具体化整个字符串列表。

  • 问题内容: 给出两个列表: 语法是什么: 插入到这样现在看起来像? 插入的所有项目进入,使得现在的样子? 问题答案: 你的意思是? 还是合并?

  • 问题内容: 我有一个元组列表: 我想为给定ID更新具有多个行/值的表(在这种情况下,ID = 1) 所以: 我在格式上遇到麻烦-我已将字符串归结为以下形式: 但是,由于元组周围有多余的括号,因此这当然是行不通的。有任何构想“ Python地做到这一点的方法”的想法吗? 问题答案: 好了,您需要构建以下行: 试试那个:

  • 问题内容: 我有5个长度相同的列表,我想将它们写到CSV的5列中。到目前为止,我只能使用以下代码将一个代码写入一列: 如果我添加另一个循环,它只会将该列表写入同一列。有人知道获得五个单独列的好方法吗? 问题答案: 将它们更改为行 然后就

  • 我有5个相同长度的列表,我想把它们写在CSV的5列中。到目前为止,我只能用以下代码在一列中写一个: 如果我为循环添加另一个