1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PythonでExcelの行、列、セルをコピーする

Posted at

Excelでは、行、列、セルのコピーは日常業務で頻繁に必要とされる操作です。データのレイアウトを素早く調整したり、データのテンプレートをコピーしたり、データのバッチ処理を実行したりするのに役立ちます。
この記事では、Pythonを使ってExcelの行、列、セル範囲を指定した場所にコピーする方法を紹介します。

Python Excelライブラリ

Pythonを使用してExcelファイルを操作するには、Spire.XLS for Pythonライブラリが必要です。このリンクから製品パッケージをダウンロードしてローカルパスからインストールするか、以下のpipコマンドを使用して直接インストールすることができます:

pip install Spire.XLS

PythonでExcelの指定した行をコピーする

Pythonを使ってExcelの指定した場所に行をコピーするには、以下の手順を参照してください:

  1. LoadFromFile() メソッドを使用してExcelファイルをロードする;
  2. 最初のワークシートを取得し、その中でコピーする必要がある行を取得します;
  3. 2番目のワークシートを取得し、CopyRow(sourceRow, destSheet, destRowIndex, copyOptions) メソッドを使用して、指定された行を2番目のワークシートの指定された位置にコピーします;
  4. 列幅を設定し、最後に SaveToFile() メソッドを使用して生成されたファイルを保存します。

Pythonのコード:

from spire.xls import *
from spire.xls.common import *

# Excelファイルを読み込む
workbook = Workbook()
workbook.LoadFromFile("道具.xlsx")

# 最初のワークシートを取得する
sheet1 = workbook.Worksheets[0] 
# 最初のワークシートでコピーする行を取得する
row = sheet1.Rows[0]

# 2枚目のワークシートの入手
sheet2 = workbook.Worksheets[1]

# 指定された行を2番目のワークシートの最初の行にコピーする
sheet1.CopyRow(row, sheet2, 1, CopyRangeOptions.All)

# 同じ列幅を設定する
columns = sheet1.Columns.Length
for i in range(columns):
    column_width = row.Columns[i].ColumnWidth
    sheet2.Rows[0].Columns[i].ColumnWidth = column_width

# ファイルを保存する
workbook.SaveToFile("CopyExcelRow.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

CopyRow.png

PythonでExcelの指定した列をコピーする

Pythonを使ってExcelの列を指定した場所にコピーするには、以下の手順を参照してください:

  1. LoadFromFile() メソッドを使用してExcelファイルをロードする;
  2. 最初のワークシートを取得し、その中からコピーする必要のある列を取得します;
  3. 2番目のワークシートを取得し、CopyColumn(sourceColumn, destSheet, destColIndex, copyOptions) メソッドを使用して、指定された列を2番目のワークシートの指定された場所にコピーする;
  4. 行の高さを設定し、最後に SaveToFile() メソッドを使用して生成されたファイルを保存します。

Pythonのコード:

from spire.xls import *
from spire.xls.common import *

# Excelファイルを読み込む
workbook = Workbook()
workbook.LoadFromFile("道具.xlsx")

# 最初のワークシートを取得する
sheet1 = workbook.Worksheets[0] 
# コピーする列を取得する
column = sheet1.Columns[1]

# 2枚目のワークシートを取得する
sheet2 = workbook.Worksheets[1]

# 指定された列を2つ目のワークシートの最初の列にコピーする
sheet1.CopyColumn(column, sheet2, 1, CopyRangeOptions.All)

# 同じ行の高さを設定する
rows = column.Rows.Length
for i in range(rows):
    row_height = column.Rows[i].RowHeight
    sheet2.Columns[0].Rows[i].RowHeight = row_height

# ファイルを保存する
workbook.SaveToFile("CopyExcelColumn.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

CopyColumn.png

PythonでExcelの指定したセル領域をコピーする

Pythonを使ってExcelの指定したセル領域をコピーするには、以下の手順を参照してください:

  1. oadFromFile() メソッドを使用してExcelファイルをロードする;
  2. 最初のワークシートを取得し、その中のコピーする必要のあるセル範囲を取得する;
  3. 2番目のワークシートを取得し、指定されたセル範囲を取得する;
  4. CellRange.Copy(destRange,copyOptions) メソッドを使用して、ワークシート1のセル領域をワークシート2の指定された場所にコピーする;
  5. 行の高さと列の幅を設定し、最後に SaveToFile() メソッドを使用して生成されたファイルを保存します。

Pythonのコード:

from spire.xls import *
from spire.xls.common import *

# Excelファイルを読み込む
workbook = Workbook()
workbook.LoadFromFile("道具.xlsx")

# 最初のワークシートを取得する
sheet1 = workbook.Worksheets[0] 
# 指定したセル範囲を取得
range1 = sheet1.Range["D1:G4"]

# 2枚目のワークシートの入手
sheet2 = workbook.Worksheets[1]
# 指定されたセル領域を取得する
range2 = sheet2.Range["B2:E5"]

# 最初のワークシートの指定されたセル領域を、2 番目のワークシートの指定された場所にコピーする
range1.Copy(range2, CopyRangeOptions.All)

# 同じ行の高さと列の幅を設定する
for i, row in enumerate(range1.Rows):
    for j, column in enumerate(row.Columns):
        range2.Rows[i].Columns[j].ColumnWidth = column.ColumnWidth
        range2.Rows[i].RowHeight = row.RowHeight

# ファイルを保存する
workbook.SaveToFile("CopyExcelCells.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

CopyCells.png


  • ウォーターマークを削除するには?クリックして1ヶ月のトライアルライセンスをリクエストしてください。

  • 技術的な問題については、フォーラムにアクセスしてください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?