PythonでExcelシートをCSVへ出力する

PythonでExcelシートをCSVへ出力する

OfficeScriptをさわってみた流れから、VBAが使えない環境でExcelシートをCSVへ出力するには、と思ってPADでやってみたりPython使ってみたりいろいろ試しました。Pythonではこんな感じで動いたというメモ。


関連記事

openpyxlのインストールが必要なのでこちらも参照ください。

参考記事

ありがとうございます!

コード

C:\Sample\test.xlsxToCsvSheetシートを、C:\Sample\test.csvというCSVファイルに出力するコードです。5~7行目をお好みで。
import sys  # システムパラメータのライブラリ( sys.exit() にて利用 )
import openpyxl  # openpyxlライブラリのインポート

# ファイルの入力、出力先フォルダ
exfileName = r'C:\Sample\test.xlsx'  # Excelパスをraw文字列で指定
sheetName = 'ToCsvSheet'  # CSVにしたいシート名
csvfileName = r'C:\Sample\test.csv'  # 出力するCSVのパスをraw文字列で指定

# ¥を置換
exfileName = exfileName.replace('\\', '/')
csvfileName = csvfileName.replace('\\', '/')

# ブックの読み込み
wb = openpyxl.load_workbook(exfileName)  
ws = wb[sheetName]  # シート指定

# A1セルが空欄なら終了
if ws['A1'].value is None:
    sys.exit() 

# CSV用のテキストを作成
txt = "" # 初期値
for row in range(1, ws.max_row + 1):  # 1行目から最終行まで繰り返し
    for col in range(1, ws.max_column + 1):  # 1列目から最終列まで繰り返し
        if col > 1:  # 2列目以降だったら
            txt += ","  # 区切り文字(カンマ)
        v = ws.cell(row, col).value  # セルの内容を取得
        if (v is not None):  # 値があったら
            txt += str(v)  # 文字列で追記
    txt += "\n"  # 改行
print(txt)  # 確認用に出力

# ブックの終了
wb.close()

# CSV出力
csv = open(csvfileName, "w")
csv.write(txt)
csv.close()

.max_row.max_columnていう関数がスマートすぎてびびる。えっっっこんなにカンタンに最後の行列とってこれるの……! Excel付属の言語より超絶オシャレ(?)なんですけど!!!

同じ結果を求めるのでもツールが違うとまたおもしろいですね。

公開日:2024/09/30

書籍を執筆しています。

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)

YouTubeでQ&Aコンテンツを企画しています

運営しているYouTubeチャンネルで、ご相談やご質問を募集しています。動画のコメントやお問い合わせページからお気軽にご相談をお寄せください。