【Python】CSVとエクセル(xlsx)の変換プログラム

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変換完了
$ 

エクセルの表記がきれいになって変換されたことを確認できました。
エクセル表記をきれいにしたい方はぜひ参考にしてください。




エンジニアのオンライン学習

ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。

おすすめオンライン教材
自宅で学習ができるオンラインスクール

ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。



コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUT US
げんき☆ひろき
インターネット関連のSEをやっています。 ネットワーク、サーバー、ストレージ、仮想基盤まで幅広く手を出しており、MVNOの構築経験もあります。 現在は、Pythonを使ったプログラミングの開発をしネットワークの自動化ツールを作成しています! Pythonの入門書も作成しているので、ぜひ参考にしてください!