2017-01-26 7 views
0

Iが含むExcelファイルがあります。私はキーに細胞を比較し、キーとしてcolmumnヘッダを持ついくつかのデータのうち、辞書を生成Openpyxl、キーがセルと一致する場合、列にキー値を追加しますか?

A1 =会社名 B1 =モバイル

など

を一致するかどうかを確認します。一致すると、その列のセルと一致するキーの値を比較したいと思います。値が列に存在しない場合はappend

for key in dictionary_test.keys(): 
    os.chdir("C:\Python34") 
    wb = load_workbook("Trying web.xlsx") 
    ws = wb.active 
    for row in ws.iter_rows(): 
     for cell in row: 
      if key == cell.value: 

     ws.append(dictionary_test) 
     wb.save("Trying web.xlsx") 

私は次のエラーを取得する:

Traceback (most recent call last): File "", line 8, in File "C:\Python34\lib\site-packages\openpyxl\worksheet\worksheet.py", line 692, in append col_idx = column_index_from_string(col_idx) File "C:\Python34\lib\site-packages\openpyxl\utils__init__.py", line 112, in >column_index_from_string raise ValueError("{0} is not a valid column name".format(str_col)) ValueError: Contact Person is not a valid column name

は、どのように私はこれを修正するに行きますか?

Excelファイルの構造:

A1 =会社

B1 =モバイル

C1 =電話

D1 =コンタクトパーソン

E1 =コール会社

F1 =住所

現在、それらの下のセルには何もありません。

+0

XLSXファイルに何が含まれているかわからないと、誰も助けることができないのではないかと恐れています。エラーメッセージはそのファイルの構造に関するものなので、少なくともそのファイルの構造(列見出し+サンプル行で十分です)を含めてください。 – Dunkelstern

+0

@Dunkelsternが詳細を追加しました。現在、ファイルにはA1、B1の値しかありません。私は単純にA1とキーを比較し、一致する場合はA1の値をキー値と比較し、同じ列の空のセルに値を追加します。 – Sid

+0

エラーメッセージ内の文字列 'Contact Person'はどこから来たのですか?XLSXのどこかですか、あなたの例でいくつかのコードをスキップしましたか? – Dunkelstern

答えて

0

私はあなたがこのような何かをしようとdictionary_testに想定しています

dictionary_test = { 
    "Company": "Microsoft", 
    "Mobile": "1234567", 
    ... 
} 

ライブラリがあなたのExcelシートの最初の行は列名でなければならないことを知りません。だからあなたはそのループの中で解凍しようとしますが、あなたはそれを追加ラインの完全な辞書に渡しています。代わりに配列を試してみてください。同様に:

data = [ "Microsoft", "1234567", ... ] 
ws.append(data) 

入力データはどのように生成されますか?あなたの手の届かないところから来たのでしょうか、それを配列に追加して追加するだけでしたか?

関連する問題