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

时间:2014-03-09 04:08:55

标签: python excel xlwt

我是python的新手,我正在使用xlwt创建列表和excel表单。我使用st.write(ID,name)创建了6个列。我首先怀疑写入中的ID是rowID还是columnID(意味着write(1,'abc')将写入第一行或第一列)?

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

更新:这是我目前正在使用的代码,但它会将异常抛出为Exception: invalid worksheet name 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 个答案:

答案 0 :(得分:4)

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

所以,剪掉你的name_string然后再试一次可以帮到你。

ws = wb.add_sheet(_small_course_name)

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

更多: https://groups.google.com/forum/#!msg/python-excel/QK4iJrPDSB8/D4LmyJJ7tXkJ

答案 1 :(得分:1)

首先,这是Worksheet.write()实施(source):

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')

这将生成一个test.xls文件,A1单元格中包含“Hello”,A2单元格中包含“World”。

另见相关主题:

希望有所帮助。

答案 2 :(得分:0)

还有一种方法可以做到(看看是否有帮助) - 以pythonic方式做到这一点

如下所示转置您的列表,然后将其正常粘贴到Excel上。

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