簡體   English   中英

Python合並2個XLSX文件

[英]Python Combine 2 XLSX files

我有兩個XLSX文件需要合並。 它們都是Excel 2010文件(.xlsx),我所閱讀的內容都是以空格分隔的(我可以接受更正)。 這兩個文件將具有相同的行數,並且行將對齊; 例如row1,file1將對應於row1,file 2等等。文件具有很長的字段,因此為了簡單起見,我將顯示模擬數據。 第一個文件的格式為:

a 123 20 20141201
b 456 50 20141130
 .....

第二個文件的格式為:

20141201
20141130
...

因此,我希望輸出為:

a 123 20 20141201 20141201
b 456 50 20141130 20141130
...

我的代碼在下面,但是似乎有2個問題:

首先,array3的輸出格式不正確:

'a 123 20 20141201 \t\r\n', '20141201\n',
'b 456 50 20141130 \t\r\n', '20141130\n', 
....

如何正確地將它們串聯起來,以確保其他日期戳在制表符,換行符等之前(\\ t \\ r \\ n)?

其次,當我將此數組寫入輸出文件時,行是不一致的:

第一行的第一列中的所有內容都由分隔符(注意☺=白色方形符號,不確定為什么會顯示為笑臉嗎?):

     col1                                  col2     col3     col4       col5
row1|a ☺ 123 ☺ 20 ☺ 20141201 ☺☺ 20141201

row2|b                                     456      50       20141130

row3|20141130    

row4|c ......................... 

我的代碼在這里:

ins1 = open( "file1.xlsx", "r" )
array1 = []
for line in ins1:
    array1.append(line)
ins1.close()

ins2 = open( "file2.xlsx", "r" )
array2 = []
for line in ins2:
    array2.append(line)
ins2.close()  

array3 = []
for i in range(0, len(array1)):
    array3.append(array1[i])
    array3.append(array2[i])

resultFile = open("output.xlsx",'wb')
wr = csv.writer(resultFile)
print array3
wr.writerow(array3)
resultFile.close()

抱歉,我對Python還是很陌生,所以也許以上並不是最好的方法。 我願意接受有關如何進行此操作的替代建議。 我看過Pandas,我相信它將使此任務更加容易,但是不幸的是,我無法安裝外部庫以排除該選項。 任何幫助深表感謝。

編輯:基於Serge的答案,這里是一個有效的解決方案:

ins1 = open( "file1.xlsx", "r" )
ins2 = open( "file2.xlsx", "r" )
outs = open("output.xlsx",'wb')
for line in ins1:
    line = line.rstrip() + "\t" + next(ins2)
    print line.rstrip()
    outs.write(line)
ins1.close()
ins2.close()
outs.close()  

假設所有文件都是用空格分隔的csv格式,那么以下簡化代碼就足夠了:

with open( "file1.xlsx", "r" ) as ins1, open( "file2.xlsx", "r" ) as ins2, \
        open("output.xlsx",'wb') as resultfile :
    for line in ins1:
        line = line.rstrip() + " " + next(ins2)
        print line.rstrip()
        resultfile.write(line)

說明:

  • with確保文件被正確關閉,任何可以在代碼中發生
  • 上面的代碼假設file1和file2對齊 ,逐行處理文件
  • 該代碼只需從file1的行中刪除行尾,並從file2刪除一個空格和該行,然后將結果寫入output
  • 打印行中的rstrip避免了多余的新行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM