2016-12-16 143 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

相關問題