2016-12-16 141 views
0

假设我有A1作为工作簿中唯一的单元格,它是空白的。 我想我的代码“所以它说,它“1 2 3”python将数据添加到现有的Excel单元格Win32com

截至目前我有加“1”,“2”和” 3:

NUMBERS = [1, 2, 3, 4, 5] 
ThisSheet.Cells(1,1).Value = NUMBERS 

这只是写的第一个值到细胞。我试过

ThisSheet.Cells(1,1).Value = Numbers[0-2] 

但这只是把LAST值放在那里。有没有办法让我只添加所有的数据?这些信息将始终是字符串格式,我需要使用Win32Com。

更新: 我做

STRINGVAR = ''。加入(STR(五)V IN LIST)

UPDATE:此。加入完全适用于数字列表。现在,我想它归因于另一个列表看起来像这样

LIST=[Description Good\nBad, Description Valid\nInvalid] 

如果我打印列表[0]的结果是

Description Good 
Bad 

这就是我想要的。但是,如果我在这一个使用。加入,它打印

('Description Good\nBad, Description Valid\nInvalid') 

所以这一次我需要它来打印,就好像我做LIST [0]和LIST [1]

+0

如果你想要NUMBERS中的所有值,那么你似乎需要'ThisSheet.Cells(1,1).Value =''.join([str(_)for _ in NUMBERS])''。如果你只是想要前三个值,那么使用'ThisSheet.Cells(1,1).Value =''.join([str(_)for _ in NUMBERS [:3]])''。 –

+0

这实际上是我用我的字符变量做的,它的工作原理除了打印特殊字符而不是列表中的项目。因此它会打印\ n而不是将其写入新行。它还在每个项目的末尾打印('开头和')。 – nico

+0

不能帮助,因为我没有Excel。 –

回答

1

所以,如果你想放在一个不同的细胞每一个数字,你会做这样的事情:

it = 1 
for num in NUMBERS: 
    ThisSheet.Cells(1,it).Value = num 
    it += 1 

或者,如果你想在同一单元中的第3个数字:

ThisSheet.Cells(1,it).Value = ' '.join([str(num) for num in NUMBERS[:3]]) 

或所有元素的NUMBERS

ThisSheet.Cells(1,1).Value = ' '.join([str(num) for num in NUMBERS]) 

编辑

根据你的问题的编辑,因含有\n并假设每次都发现一个换行符时间字符串类型,你想跳到下一行:

# Split the LIST[0] by the \n character 
splitted_lst0 = LIST[0].split('\n') 
# Iterate through the LIST[0] splitted by newlines 
it = 1 
for line in splitted_lst0: 
    ThisSheet.Cells(1,it).Value = line 
    it += 1 

如果你想这样做,整个LIST,而不是只为LIST[0],首先将其合并使用连接方法,然后将其拆分:

joined_list = (''.join(LIST)).split('\n') 

然后,按照以前的方法重复遍历它。

+0

如果我没有在我的列表中有新行,使用这将工作得很好。到目前为止,它正在打印\ n而不是移动到新的行,并在每个项目的末尾(在每个项目的开头以及')。任何方式来解决这个问题? – nico

+0

@ nico你是说你在NUMBERS中有换行符?是字符串类型的NUMBERS?致歉,请致电 – otorrillas

+0

。起初我试图让这些数字有效,但我试图对第二个有新行的列表做同样的事情。每个列表都包含字符串,并且不包含整数。第二个列表就像列表= [说明好\ n不好,说明有效\ n无效]由于限制,我无法提供确切的列表,但是当我打印列表[0]时,它会在新行上打印说明好和坏。当我使用.join时,它会打印('Description Good \ nBad'),('Description Valid \ nInvalid') – nico

相关问题