2017-11-28 3 views
1

Openpyxlを使って何をしようとしていたのかは、Excelシートからいくつかのセルの値をコピーしてから別のExcelシートを開き、 予想外に、境界線が壊れたシート、特に結合されたセルが見つかりました。あるシートからデータをコピーして別のExcelシートに貼り付けるときにOpenpyxlの境界線が壊れる

あなたの意見をお聞かせください。 また、細胞をループするより良い方法がありますか?現在のところ3セルしかありませんが、100を超えるとどうなりますか? ありがとうございました。

from openpyxl import load_workbook 
import os 
from os.path import exists 

target_file = input('ex)201711 ') 
wb = load_workbook(target_file + '.xlsm', data_only=True) 
sheet = wb['summary'] 
num_people = len(sheet['A:A']) 

for i in range(1, num_people): 
    val_1 = sheet.cell(row=i + 1, column=1).value 
    val_2 = sheet.cell(row=i + 1, column=2).value 
    val_3 = sheet.cell(row=i + 1, column=3).value 

    file_name = '2017(' + val_1 + ').xlsx' 
    if not exists(file_name): 
     continue 
    else: 
     wb = load_workbook(file_name, data_only=True) 
     sheet2 = wb['summary2'] 

     sheet2.cell(row=1, column=1).value = val_1 
     sheet2.cell(row=1, column=2).value = val_2 
     sheet2.cell(row=1, column=3).value = val_3 
     wb.save(file_name) 

答えて

0

私は質問を誤解される可能性がありますが、ループのネストされたが、理想的に見える...

from openpyxl import load_workbook 
import os 
from os.path import exists 

target_file = input('ex)201711 ') 
wb = load_workbook(target_file + '.xlsm', data_only=True) 
sheet = wb['summary'] 
num_people = len(sheet['A:A']) 
num_vals = 3 

for i in range(1, num_people): 
    for j in range(1,numvals+1): 
     val[j] = sheet.cell(row=i + 1, column=j).value 

    file_name = '2017(' + val[1] + ').xlsx' 
    if not exists(file_name): 
     continue 
    else: 
     wb = load_workbook(file_name, data_only=True) 
     sheet2 = wb['summary2'] 
     for j in range(1,numvals+1): 
      sheet2.cell(row=1, column=j).value = val[j] 
     wb.save(file_name) 

はさらに、openpyxlは今読み物事を簡単にすることができ、配列インデックスのスタイルのセル参照を、サポートしています/書き込み:デフォルトアクションを得意と違って、フォーマット国境に関して

#these are equivalent 
sheet2.cell(row=1, column=j).value = val[j] 
sheet2.[openpyxl.utils.get_column_letter(j) + '1'] = val[j] 

、openpyxlには、(残念ながら)明示的に結合されたセル上のすべての境界を指定する必要がありますここでは、トプフルトセルのスタイリングがマージの上に適用される。

+0

ご協力いただきありがとうございました。 –

関連する問題