PythonでExcelシートをCSVへ出力する
OfficeScriptをさわってみた流れから、VBAが使えない環境でExcelシートをCSVへ出力するには、と思ってPADでやってみたりPython使ってみたりいろいろ試しました。Pythonではこんな感じで動いたというメモ。
関連記事
openpyxlのインストールが必要なのでこちらも参照ください。
参考記事
ありがとうございます!
コード
C:\Sample\test.xlsx
のToCsvSheet
シートを、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付属の言語より超絶オシャレ(?)なんですけど!!!
同じ結果を求めるのでもツールが違うとまたおもしろいですね。
コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)
YouTubeでQ&Aコンテンツを企画しています
運営しているYouTubeチャンネルで、ご相談やご質問を募集しています。動画のコメントやお問い合わせページからお気軽にご相談をお寄せください。