【问题标题】:Way to compare two excel files and CSV file比较两个excel文件和CSV文件的方法
【发布时间】:2017-07-25 22:47:25
【问题描述】:

我需要比较两个 excel 文件和一个 csv 文件,然后将一些数据从一个 excel 文件写入另一个文件。

看起来像这样:

  • CSV 文件,其中包含我将比较的名称。例如(垃圾邮件、鸡蛋)

  • 第一个 Excel 文件及其名称和值。例如(垃圾邮件,100)

  • 第二个带有名称的 Excel 文件。例如(鸡蛋)

现在,当我将文件(第二个)输入程序时,我需要确保鸡蛋 == 带有 csv 文件的垃圾邮件,然后将值 100 保存到鸡蛋中。

对于 excel 文件,我使用 openpyxl,对于 csv,我使用 csv

我可以指望您的帮助吗?也许有更好的库可以做到这一点,因为我的试验被证明是完全失败的。

【问题讨论】:

  • 欢迎使用 Stack Overflow。我们不是代码编写服务。请参阅our help center 了解如何写出好问题的信息。向我们展示您的尝试以及您遇到的困难,我们很乐意为您提供帮助。
  • 我并没有要求解决问题,而是要求能够完成此类工作的图书馆......
  • 如果您不解释为什么提到的库不起作用,我们将无法帮助您查找其他库。你尝试过什么,你在哪里卡住了?
  • 我终于自己搞定了,我会补充一个答案。

标签: excel python-2.7 csv comparison


【解决方案1】:

我自己弄的。一些复杂的方式,但它就像我想要的那样工作。很高兴得到一些提示。

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

【讨论】:

    猜你喜欢
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 2014-06-14
    • 2021-04-27
    • 1970-01-01
    相关资源
    最近更新 更多