Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用CSV生成的字典使用python更新.xlsx文件中的值_Python_Python 3.x_Csv_Dictionary_Openpyxl - Fatal编程技术网

使用CSV生成的字典使用python更新.xlsx文件中的值

使用CSV生成的字典使用python更新.xlsx文件中的值,python,python-3.x,csv,dictionary,openpyxl,Python,Python 3.x,Csv,Dictionary,Openpyxl,每天我都会收到一份旧的Excel 95数据文件。它有多达字母“L”的列和数百行。 “B”列是一个客户参考号,对每个客户都是唯一的。 “I”列是美元值 每天早上我都需要使用此文件更新另一个Excel文件。我搜索客户参考号,然后输入美元值。目标文件中客户参考和美元价值的列分别为“D”和“E” 由于我是python新手,我认为这将是一个很好的自动化项目。在研究和安装了一些其他模块(并阅读了《用python自动化无聊的东西》一书)之后,我还没有取得任何成功 我将源文件保存为csv,然后导入csv,然后将

每天我都会收到一份旧的Excel 95数据文件。它有多达字母“L”的列和数百行。 “B”列是一个客户参考号,对每个客户都是唯一的。 “I”列是美元值

每天早上我都需要使用此文件更新另一个Excel文件。我搜索客户参考号,然后输入美元值。目标文件中客户参考和美元价值的列分别为“D”和“E”

由于我是python新手,我认为这将是一个很好的自动化项目。在研究和安装了一些其他模块(并阅读了《用python自动化无聊的东西》一书)之后,我还没有取得任何成功

我将源文件保存为csv,然后导入csv,然后将其转换为python中的词典。这个很好用,我很满意

我的问题是试图将值写入目标文件。我没有得到任何错误,文件保存在最后,但当我打开它的值不存在。我不知道为什么。感谢您的帮助

import os, csv, openpyxl

os.chdir('nameOfMyDirectory')

print('What is the name of the source file?')
sourceFileName = input()

print('What is the key column?')
keyColumn = int(input())

print('What is the value column?')
valueColumn = int(input())

source = csv.reader(open(sourceFileName + '.csv'))
sourceDictionary = {}
for row in source:
    key = row[keyColumn]
    sourceDictionary[key] = row[8]
上面的每一件事似乎都能起作用,我可以使用交互式shell使用键列打印美元值。我已经把它包括在内,以防我错了,这也需要改变

下面是问题所在(我想)

程序运行,没有错误。新文件与文件名一起保存,但值未更新,仍然为空

我不确定openpyxl column=4值是否是从1或0开始的值之一,因此我尝试从这两个值开始计数,但这两个值都不起作用

非常感谢您的帮助

import os, csv, openpyxl

os.chdir('nameOfMyDirectory')

print('What is the name of the source file?')
sourceFileName = input()

print('What is the key column?')
keyColumn = int(input())

print('What is the value column?')
valueColumn = int(input())

source = csv.reader(open(sourceFileName + '.csv'))
sourceDictionary = {}
for row in source:
    key = row[keyColumn]
    sourceDictionary[key] = row[8]

我被要求展示一些示例数据,因此这里有一个指向两个google工作表的链接,它们与源文件csv和目标文件xlsx相同。希望这有帮助


我正在尝试用“源文件列I”更新“目标文件的列E”。我使用客户ID列作为参考

问题只是类型不匹配。从csv读取的键为
string
格式,从Excel工作表读取的值为
float
值。因此,匹配这两个变量的
if
语句总是返回false

要对齐数据类型,请在第二个
循环中调整以下行,首先将其转换为整数,然后转换为字符串:

membershipID = str(int(sheet.cell(row=rowNum, column=4).value))

问题很简单,就是类型不匹配。从csv读取的键为
string
格式,从Excel工作表读取的值为
float
值。因此,匹配这两个变量的
if
语句总是返回false

要对齐数据类型,请在第二个
循环中调整以下行,首先将其转换为整数,然后转换为字符串:

membershipID = str(int(sheet.cell(row=rowNum, column=4).value))

你能发布数据来说明你在说什么吗?特别是当前的布局和期望的结果?我在我的问题中添加了一个指向2张谷歌工作表的链接。希望这有帮助。我怀疑
if
子句的计算结果是
False
。你可以在里面放一些调试代码,比如打印语句来检查。你能发布数据来说明你在说什么吗?特别是当前的布局和期望的结果?我在我的问题中添加了一个指向2张谷歌工作表的链接。希望这有帮助。我怀疑
if
子句的计算结果是
False
。您可以将一些调试代码(如打印语句)放入其中进行检查。