PythonでExcelのデータを並べ替える

エクセルでデータを並べ替えると、分析や解釈がしやすいように情報を整理することができます。Excelでは、データを昇順または降順に並べ替えることができ、値、セルの色、フォントの色などで並べ替えるかどうかを指定することもできます。この記事では、[**Spire.XLS for Python**](https://www.e-iceblue.com/Introduce/xls-for-python.html) ライブラリを使ってPythonでExcelの行や列をソートする方法を紹介します。

**4つの例を取り上げます：**
1.	PythonでExcelの行をソートする
2.	PythonでExcelの列を並べ替える
(1) セルの値でデータを並べ替える 
(2) セルの色による並べ替え 
(3) フォントの色による並べ替え

## Python Excelライブラリのインストール
コードに入る前に、以下のpipコマンドを使用して[Spire.XLS for Python](https://www.e-iceblue.com/Introduce/xls-for-python.html)ライブラリをインストールする必要があります：
`pip install Spire.XLS`

## SortColumns.Addメソッド：
この記事では、Excelデータの並べ替えに使われるコア・メソッドは**SortColumnsAdd(key, sortComparsionType, orderBy)** メソッドである。3つのパラメータは以下の通りです：

**`Key`**: 並べ替えたい列のインデックス。
**`sortComparsionType`**: ソート方法を指定します。セルの値 (`Values`)、セルの色 (`BackgroundColor`)、フォントの色 (`FontColor`)によるソートをサポートする。
**`orderBy`**: 昇順 (`Ascending`)、降順 (`Descending`)、指定された値を上 (`Top`)、指定された値を下 (`Bottom`)に配置するなどのソート順を示します。

## 【Python】 Excelで行を並べ替える
```python
from spire.xls.common import *
from spire.xls import *
 
# エクセル文書を読み込む
workbook = Workbook()
workbook.LoadFromFile("Year.xlsx")
 
# 最初のワークシートを取得する
sheet = workbook.Worksheets[0]
 
# 最初の行をソートする
workbook.DataSorter.IsIncludeTitle = True
workbook.DataSorter.Orientation = SortOrientationType.LeftToRight
workbook.DataSorter.SortColumns.Add(0,SortComparsionType.Values,OrderBy.Ascending)
workbook.DataSorter.Sort(sheet.Rows[0])
 
# ファイルに保存
workbook.SaveToFile("SortRows.xlsx", ExcelVersion.Version2016)
workbook.Dispose()
```
上記のコード・サンプルは、ワークシートの最初の行を昇順にソートする。出力は以下のようになる：
![SortExcelRow.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/b0297a43-21ad-a26a-3e1e-3e9c4d267a28.png)


## 【Python】 セルの値でデータを並べ替える
```python
from spire.xls.common import *
from spire.xls import *
 
# エクセル文書を読み込む
workbook = Workbook()
workbook.LoadFromFile("Orders.xlsx")
 
# 最初のワークシートを取得する
worksheet = workbook.Worksheets[0]
 
# 指定した列を降順に並べ替える
workbook.DataSorter.SortColumns.Add(0, SortComparsionType.Values, OrderBy.Descending)
workbook.DataSorter.Sort(worksheet["A1:D7"])
 
# ファイルに保存
workbook.SaveToFile("SortByCellValue.xlsx", ExcelVersion.Version2016)
workbook.Dispose()
```

上記のコードサンプルは、指定した範囲の最初の列のデータを降順にソートします。出力は以下のようになります：
![SortCellValue.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/d15dd852-d22d-0b9a-34a6-f175e5bc9edf.png)



## 【Python】 セルの色でデータを並べ替える
```python
from spire.xls.common import *
from spire.xls import *
 
# エクセル文書を読み込む
workbook = Workbook()
workbook.LoadFromFile("Orders.xlsx")
 
# 最初のワークシートを取得する
worksheet = workbook.Worksheets[0]
 
# 指定された列の一番上に赤いセルを置く
column = workbook.DataSorter.SortColumns.Add(3, SortComparsionType.BackgroundColor, OrderBy.Top)
column.Color = Color.get_Red()
workbook.DataSorter.Sort(worksheet["A1:D7"])
 
# ファイルに保存
workbook.SaveToFile("SortByCellColor.xlsx", ExcelVersion.Version2016)
workbook.Dispose()
```
上記のコード・サンプルは、背景が赤のセルを一番上に配置する。出力は以下のようになります：
![SortCellColor.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/dbc686bf-5a85-12fb-a507-589c2e1f2e4d.png)



## 【Python】 フォントの色でデータを並べ替える
```python
from spire.xls.common import *
from spire.xls import *
 
# エクセル文書を読み込む
workbook = Workbook()
workbook.LoadFromFile("Orders.xlsx")
 
# 最初のワークシートを取得する
worksheet = workbook.Worksheets[0]
 
# 指定した列の一番下に赤いフォントを配置する
column = workbook.DataSorter.SortColumns.Add(1, SortComparsionType.FontColor, OrderBy.Bottom)
column.Color = Color.get_Red()
workbook.DataSorter.Sort(worksheet["A1:D7"])
 
# ファイルに保存
workbook.SaveToFile("SortByFontColor.xlsx", ExcelVersion.Version2016)
workbook.Dispose()
```
上記のコード・サンプルは、赤いフォントのセルを一番下に配置する。出力は以下のようになります：
![SortFontColor.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/56f5fde8-9fdd-254f-0288-ce2c752693cc.png)


* * *

*PythonでExcelファイルを処理する他の例については、こちらをご覧ください：*

https://www.e-iceblue.com/Tutorials/Python/Spire.XLS-for-Python/Program-Guide/Spire.XLS-for-Python-Program-Guide-Content.html