csvの値を1行ずつエクセルへ転記する方法 Dataframe_to_row / openpyxl / Python

openpyxl

プラグラミング言語「PYTHON」を使ってみよう!!

業務自動化・効率化の実例を踏まえ、解説できればと思っています。対象はプログラムを学び始めた初心者向けとなります。

今回の内容

  • csvファイルに入力されているデータをエクセルへ転記する



使用するのはopenpyxl

今回使用するのは、エクセルファイルを読み書きできるPythonライブラリ「openpyxl」です。

openpyxlのなかのDataframe_to_rowという関数(データを1行ずつ取得できる関数)を使用します。

ここではopenpyxlがインストールされているのを前提として書き進めていきます。

  • openpyxlはエクセルを扱うことができるライブラリです。
  • openpyxlの関数「Dataframe_to_row」でデータを1行ずつ取得します。
  • PandasやNumpyで使用可能です。

サンプルコード

import pandas as pd
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows

wb=Workbook()
ws=wb.active
df=pd.read_csv('fruits.csv',encoding='shift_jis')
for row in dataframe_to_rows(df,index=None,header=None):
    ws.append(row)

wb.save('果物の価格.xlsx')

コメント

  • Pythonファイルと同じフォルダに「fruits.csv」を保存しておく
  • 7行目 df=pd〜 でcsvファイル「fruits.csv」を読み込む
  • 8行目 for row in dataframe〜 でcsvファイルの中身を1行ずつ取得する
  • 9行目 ws.append(row)で取得した値をwsへ書き込み
  • 10行目 wb.save〜でエクセルファイルとして保存する

出力


元ファイル:「fruits.csv」ファイルの中身です。


プログラムを実行すると、このようなエクセルファイルが作成されました。


「header=None」を「header=True」に書き換えるとこうなります。A1に「果物」、B1に「価格」が入力されています。

注記

うまくいかないときは「encoding=’shift_jis’」を「encoding=’utf-8’」などへ変えると良いかもしれません。macかwindowsかで変わります。



タイトルとURLをコピーしました