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

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


## Python Excelライブラリ
Pythonを使用してExcelファイルを操作するには、[**Spire.XLS for Python**](https://www.e-iceblue.com/Introduce/xls-for-python.html)ライブラリが必要です。このリンクから[製品パッケージをダウンロード](https://www.e-iceblue.com/TemLicense.html)してローカルパスからインストールするか、以下のpipコマンドを使用して直接インストールすることができます：
> **pip install Spire.XLS**

## PythonでExcelの指定した行をコピーする 
Pythonを使ってExcelの指定した場所に行をコピーするには、以下の手順を参照してください：
1.	**`LoadFromFile()`** メソッドを使用してExcelファイルをロードする；
2.	最初のワークシートを取得し、その中でコピーする必要がある行を取得します；
3.	2番目のワークシートを取得し、**`CopyRow(sourceRow, destSheet, destRowIndex, copyOptions)`** メソッドを使用して、指定された行を2番目のワークシートの指定された位置にコピーします；
4.	列幅を設定し、最後に **`SaveToFile()`** メソッドを使用して生成されたファイルを保存します。

**Pythonのコード：**
```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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/0a929069-49d1-c6df-659d-880e52ca3a41.png)




## PythonでExcelの指定した列をコピーする
Pythonを使ってExcelの列を指定した場所にコピーするには、以下の手順を参照してください：
1.	**`LoadFromFile()`** メソッドを使用してExcelファイルをロードする；
2.	最初のワークシートを取得し、その中からコピーする必要のある列を取得します；
3.	2番目のワークシートを取得し、**`CopyColumn(sourceColumn, destSheet, destColIndex, copyOptions)`** メソッドを使用して、指定された列を2番目のワークシートの指定された場所にコピーする；
4.	行の高さを設定し、最後に **`SaveToFile()`** メソッドを使用して生成されたファイルを保存します。

**Pythonのコード：**
```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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/50bc906d-67e0-7d32-0143-5c2273a961df.png)



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

**Pythonのコード：**
```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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/cccd8ada-b8b2-2a1d-6b48-879432bd1511.png)

* * *

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

https://www.e-iceblue.com/TemLicense.html

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

https://www.e-iceblue.com/forum/spire-xls-f4.html