PythonでCSVファイルをエクセルファイルに変換するプログラムを紹介します。
また、今回はサーバー、もしくはNW機器にで出力した結果において「スペース」となっている箇所を全てカンマ「,」に変換し、エクセルできれいに表示できるように変換します。
【Python】CSVファイル〜エクセルファイル(xlsx)へ変換するプログラム
今回は、サーバーから出力した、「df -h」コマンドの出力結果を元にプログラムを作成します。
通常、スペース区切りとなり、以下のように表示されます。
$ df -h ファイルシス サイズ 使用 残り 使用% マウント位置 devtmpfs 908M 0 908M 0% /dev tmpfs 920M 0 920M 0% /dev/shm tmpfs 920M 8.6M 911M 1% /run tmpfs 920M 0 920M 0% /sys/fs/cgroup /dev/mapper/centos-root 6.2G 1.5G 4.8G 24% / /dev/sda1 1014M 192M 823M 19% /boot tmpfs 184M 0 184M 0% /run/user/0 $
CSV→エクセル(Excel)への変換
以下のエクセル変換プログラムは、Pythonの「pandas」ライブラリを使用しています
Pandasはデータを処理するための機能を多く持っており、今回でいうExcelへの変換も簡単なプログラムで実施してくれます。
※ csv-excel-test02.py
import pandas as pd # CSVファイルの読み込み data = pd.read_csv('file.csv') # Excel形式で出力 data.to_excel('excel-data.xlsx', encoding='utf-8')
※ 実行結果
$ python3 csv-excel-test02.py $
以下のようにエクセルに変換されて正常に表記できることが確認できます。
エクセル(Excel)→CSVへの変換
次に、ExcelからCSVへの変換プログラムを以下に作成しました。
※ excel-csv.py
import pandas as pd # Excelファイルの読み込み data = pd.read_excel('excel-data.xlsx', 'Sheet1', index_col=None) # CSV形式で出力 data.to_csv('csv-data.csv', encoding='utf-8')
※ 実行結果
$ python3 excel-csv.py $
以下のように正常にcsvファイルに変換されたことが確認できます。
「csv」と「openpyxl」ライブラリを使ったエクセルへの変換プログラム
「pandas」ライブラリ意外にも、エクセルに変換することができるライブラリはあります。
以下では、2つのライブラリを使用したプログラムとなります。
- 「csv」:Python標準ライブラリでCSVファイルの読み込み・書き込み、新規作成、上書き保存・追記を実行することができる
- 「openpyxl」:Excelファイルの読み込み・書き込みができる
※ csv-excel-test.py
import csv import openpyxl wb = openpyxl.Workbook() ws = wb.active with open('file.csv') as f: reader = csv.reader(f, delimiter=':') for row in reader: ws.append(row) wb.save('excel-data.xlsx')
※ 実行結果
$ python3 csv-excel-test.py $
エクセル変換時にセルに分割し表示をきれいにするプログラム
上記では、CSVからエクセルへ変換をすることができましたが、エクセルシートで表示された出力結果は、CSVのように「スペース」をデフォルトで認識せず、一つのセル内でデータが表示されます。
これを、スペース区切りでそれぞれのセルへデータを書き込みたいので、一度、CSVファイルないのデータを「スペース」から「カンマ」区切りに置換して、エクセルへの変換を実行するプログラムを作成しました。
事前のcsvファイルは以下となります。
以下では「re」ライブラリでデータを置換できるようにし、エクセル形式でファイル出力するプログラムとなります。
※ csv-excel-test03.py
import pandas as pd import re with open('file.csv', 'r', newline='') as file, \ open('file_out.csv', 'w', newline='') as fileout: text = re.sub(r'\s* ', ',', file.read()) print(text, file = fileout) print('置換完了') # CSVファイルの読み込み data = pd.read_csv('file_out.csv') # Excel形式で出力 data.to_excel('excel-data.xlsx', encoding='utf-8') print('CSV > Excel変換完了')
※ 実行結果
$ python3 csv-excel-test03.py 置換完了 CSV > Excel変換完了 $
エクセルの表記がきれいになって変換されたことを確認できました。
エクセル表記をきれいにしたい方はぜひ参考にしてください。
サーバーを構築するならVPSがおすすめです。
エンジニアのオンライン学習
ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。
おすすめオンライン教材 | |
自宅で学習ができるオンラインスクール | |
ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。
コメントを残す