毎日私は古いExcel 95ファイルを与えられています。列には文字「L」と数百行までの列があります。 列 'B'は顧客の参照番号です。各顧客固有の番号です。 列 'I'はドル値です。CSVから生成されたディクショナリを使用して、Pythonを使用して.xlsxファイルの値を更新してください
毎朝、このファイルを使用して別のExcelファイルを更新する必要があります。私は顧客の参照番号を検索し、ドルの値を入力します。宛先ファイルの顧客参照とドル値の列は、それぞれ「D」と「E」です。
私はこれが自動化する良いプロジェクトになると思いました。研究といくつかの他のモジュールのインストール(そして、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]
上記のすべてがうまくいくように見えますが、対話型シェルを使用して、キー列を使用してドル値を印刷できます。私はそれが私が間違っているincageを含めてきましたが、これも変更する必要があります。問題があると思われる場所の下
は
print('What is the destination file name?')
destinationFileName = input()
wb = openpyxl.load_workbook(destinationFileName + '.xlsx')
sheet = wb.get_sheet_by_name('nameOfMySheet')
allRows = sheet.max_row
for rowNum in range(2, allRows): #Start from row 2 and go to the end
membershipID = sheet.cell(row=rowNum, column=4).value
if membershipID in sourceDictionary:
sheet.cell(row=rowNum, column=5).value = sourceDictionary[membershipID]
wb.save('newFileName.xlsx')
プログラムの実行を(と思う)とエラーがないです。新しいファイルはファイル名とともに保存されますが、値は更新されず、まだ空です。
openpyxlカラム= 4の値が1または0から始まった値の1つだったかどうかはわかりませんでした。したがって、両方から数えてみましたが、どちらも動作しません。
ご迷惑をおかけして申し訳ございません。私はここにいくつかの例のデータを表示するように求めてきた
は、ソースファイルのcsvと宛先ファイルのxlsxと同じです2のGoogleスプレッドシートへのリンクです。お役に立てれば。 Link to sheets
'ソースファイルの列I'を使用して '宛先ファイルの列E'を更新しようとしています。私は顧客ID列を参照として使用します。
はあなたが言っていることを示すためにデータをポストすることはできますか?具体的に現在のレイアウトと望ましい結果? – Parfait
私の質問に2つのGoogleシートへのリンクを追加しました。お役に立てれば。 – Steven
'if'節が' False'と評価されていると思われます。そこにprintステートメントのようなデバッグコードを入れてチェックすることができます。 –