2017-07-25 65 views
-1

我需要比較兩個excel文件和一個csv文件,然後將一些數據從一個excel文件寫入另一個。比較兩個excel文件和CSV文件的方法

它看起來是這樣的:有名字,我會比較

  • CSV文件。例如(垃圾郵件,雞蛋)

  • 第一個帶有名稱和值的Excel文件。例如(垃圾郵件,100)

  • 帶名稱的第二個Excel文件。例如(蛋)

現在,當我輸入文件(第二)到程序我需要確保蛋==垃圾與csv文件,然後保存的100值到雞蛋。

對於在Excel文件上操作,我使用的是openpyxl和csv,我使用的是csv

我可以指望你的幫助嗎?也許有更好的圖書館來做到這一點,因爲我的試驗證明是徹底失敗的。

+0

歡迎使用Stack Overflow。我們不是代碼寫作服務。請參閱[我們的幫助中心](https://stackoverflow.com/help/how-to-ask)瞭解如何寫出一個好問題。向我們展示您嘗試過的方式以及您卡在哪裏,我們很樂意提供幫助。 – agtoever

+0

我沒有問過解決問題的方法,但是對於那些可以完成這種工作的圖書館...... – Wakun

+0

如果你不解釋爲什麼提到的庫不起作用,我們不能幫你找到其他庫。你有什麼嘗試,你卡在哪裏? – agtoever

回答

0

明白了。一些複雜的方式,但它像我想要的那樣工作。將很高興爲它的一些提示。

import openpyxl 
import numpy as np 

lines = np.genfromtxt("csvtest.csv", delimiter=";", dtype=None) 
compdict = dict() 
for i in range(len(lines)): 
    compdict[lines[i][0]] = lines[i][1] 

wb1 = openpyxl.load_workbook('inputtest.xlsx') 

wb2 = openpyxl.load_workbook(filename='spistest.xlsx') 

ws = wb1.get_sheet_by_name('Sheet1') 

spis = wb2.get_sheet_by_name('Sheet1') 

for row in ws.iter_rows(min_row=1, max_row=ws.max_row, min_col=1): 
    for cell in row: 
     if cell.value in compdict: 
      for wiersz in spis.iter_rows(min_row=1, max_row=spis.max_row, min_col=1): 
       for komorka in wiersz: 
        if komorka.value == compdict[cell.value]: 
         cena = spis.cell(row=komorka.row, column=2) 
         ws.cell(row=cell.row, column=2, value=cena.value) 

wb1.save('inputtest.xlsx') 
wb2.close()