12
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

openpyxlで別ブックにシートをコピーする

Introduction

この記事ではopenpyxlで別ブックにあるシートをコピーする方法を掲載しています。
openpyxlでは基本的には別ブックにあるシートを丸ごとコピーすることはできません(リンク先参照)。ですが、シートにある値であれば、コピーすることができます。

Pythonスクリプト

Pythonのコード例を以下に示します。以下の例ではfgo.xlsxのシート1の内容を読み込み、新規作成したfgo_2.xlsxのclassというシートにコピーしています。

sheet_copy.py

'''
    sheet_copy.py
    purpose: make new xlsx and copy sheet
'''

import openpyxl as xl


# set input file name
inputfile = 'fgo.xlsx'

# set output file name
outfile = 'fgo_2.xlsx'

# set output sheet title 
sheettitle = 'class'

# read tmp xlsx
wb1 = xl.load_workbook(filename=inputfile)
ws1 = wb1.worksheets[0]

# create new xlsx file
wb2 = xl.Workbook()
ws2 = wb2.worksheets[0]
ws2.title = sheettitle

# write to sheet in output file
for row in ws1:
    for cell in row:
        ws2[cell.coordinate].value = cell.value

# save target xlsx file
wb2.save(outfile)

最後の方の

# write to sheet in output file
for row in ws1:
    for cell in row:
        ws2[cell.coordinate].value = cell.value

の部分でws1(fgo.xlsxのシート1)のcellの値を、逐次的にws2(fgo_2.xlsxのclassシート)のcellに代入しています。

同様の方法を使えば、塗りつぶしの色やフォントなどの体裁もコピーできそうです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
12
Help us understand the problem. What are the problem?