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

例外情况是使用xlwt和python将列表插入到列中,python,excel,xlwt,Python,Excel,Xlwt,我对python非常陌生,我正在使用xlwt编写列表和excel工作表。我使用st.write(ID,name)创建了6个列。我的第一个疑问是write中的ID是rowID还是columnID(表示write(1,'abc')将写入第一行或第一列) 现在我有6个列表,我想把每个列表都写到工作表中的一列,怎么写?st.write(colIDX,0,list1)是有效的write语句(它会将list1写入第0列吗)?如果没有,我怎么做 更新:这是我当前正在使用的代码,但它将异常作为异常:无效工作表名

我对python非常陌生,我正在使用xlwt编写列表和excel工作表。我使用
st.write(ID,name)
创建了6个列。我的第一个疑问是write中的ID是rowID还是columnID(表示write(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')

首先,这里有一个
工作表。write()
implementation():

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

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

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')
这将生成一个
test.xls
文件,在
A1
单元格中显示“Hello”,在
A2
单元格中显示“World”

另请参见相关线程:


希望对您有所帮助。

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

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

ws=wb.添加工作表(\u小\u课程\u名称)

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

更多信息:

还有一种方法可以做到这一点(看看是否有用)- 用蟒蛇的方式做

如下图所示转换列表,然后将其粘贴到excel上

>>> a = [['a', 'b', 'c'], ['aaaaaaaaaa', 'b', 'c'], ['a', 'bbbbbbbbbb', 'c']]
>>> list(zip(*a))
[('a', 'aaaaaaaaaa', 'a'), ('b', 'b', 'bbbbbbbbbb'), ('c', 'c', 'c')]

当我执行此操作时,
workbook=xlwt.workbook()sheet=workbook.add_sheet('test')
将引发异常作为
exception:invalid worket name u'test'
@user2916886 hm,请在问题中包含您正在使用的全部代码好吗?谢谢。@user2916886这是一个奇怪的错误。根据“it不应该在
测试
工作表名称上抛出错误”。@user2916886另外,这与您最初提出的问题实际上并不相关。即使我也不理解为什么它在那一点上抛出异常。我还更改了主题名称,使其与当前问题相关
>>> a = [['a', 'b', 'c'], ['aaaaaaaaaa', 'b', 'c'], ['a', 'bbbbbbbbbb', 'c']]
>>> list(zip(*a))
[('a', 'aaaaaaaaaa', 'a'), ('b', 'b', 'bbbbbbbbbb'), ('c', 'c', 'c')]