Excel ファイルは構造化データの保存によく利用される一方、Markdown は技術ドキュメント、静的 Web サイト、Git ベースの公開ワークフローで広く使用されています。スプレッドシートのデータを Markdown ドキュメントで再利用したい場合、Excel の表を手作業でコピーして再フォーマットするのは時間がかかるだけでなく、ミスの原因にもなります。より効率的で信頼性の高い方法は、Python を使用して変換処理を自動化することです。 本記事では、Spire.XLS for Python を使用して Excel を Markdown に変換する方法を紹介します。ワークブック全体の変換だけでなく、特定のワークシートやセル範囲のエクスポート、さらに複数ファイルの一括変換についても、シンプルなコード例とともに解説します。 Excel を Markdown に変換するメリット Python 用 Excel → Markdown ライブラリのインストール方法 Python で Excel を Markdown に変換する基本方法 高度な Excel → Markdown 変換シナリオ 画像とハイパーリンクの出力オプションをカスタマイズする 特定のワークシートを Markdown に変換する 指定したセル範囲を Markdown にエクスポートする 複数の Excel ファイルを一括で Markdown に変換するn Excel を Markdown に変換する際のベストプラクティス まとめ よくある質問 Excel を Markdown に変換するメリット Excel の表を Markdown に変換すると、次のような場面で役立ちます。 ドキュメントの作成:README や Wiki に Excel の表を簡単に追加できます。 Git との連携:Markdown はテキストベースの形式であるため、Excel ファイルよりも変更履歴を管理しやすく、差分の確認も容易です。 オンライン公開:Excel データをブログやドキュメントサイトなどで活用できます。 データ共有の簡素化:Markdown テーブルは軽量で互換性が高く、多くのプラットフォームで利用できます。 Python 用 Excel → Markdown ライブラリをインストールする Python で Excel を Markdown に変換するには、PyPI から Spire.XLS for Python をインストールします。 pip install spire.xls Markdown 変換機能は Spire.XLS for Python 16.4.0 以降でサポートされています。以前のバージョンを使用している場合は、以下のコマンドでアップグレードしてください。 pip install --upgrade spire.xls Python で Excel を Markdown に変換する基本方法 Excel ファイルを Markdown に変換する最もシンプルな方法は、ワークブックを読み込み、.md ファイルとして保存することです。 必要な手順は次の 3 つだけです。 Workbook オブジェクトを作成する Workbook.LoadFromFile() メソッドで Excel ファイルを読み込む Workbook.SaveToMarkdown() メソッドで Markdown ファイルとして保存する from spire.xls import Workbook # Workbook オブジェクトを作成 workbook = Workbook() # Excel ファイルを読み込む workbook.LoadFromFile("report.xlsx") # Markdown ファイルとして保存 workbook.SaveToMarkdown("output.md") # リソースを解放 workbook.Dispose() 出力例: 高度な Excel → Markdown 変換シナリオ 実際のプロジェクトでは、必ずしもワークブック全体を変換する必要はありません。画像やハイパーリンクの出力方法をカスタマイズしたい、特定のワークシートのみを変換したい、指定したセル範囲だけをエクスポートしたい、フォルダ内の Excel ファイルをまとめて処理したい場合があります。 次のセクションでは、これらの変換をPythonで実装する方法を示します。 1. 画像とハイパーリンクの出力オプションをカスタマイズする Excel を Markdown に変換する際、画像とハイパーリンクは Markdown 形式で出力されます。MarkdownOptions クラスを使用することで、出力形式を柔軟に制御できます。 プロパティ True の場合 False の場合 SavePicInRelativePath 画像を相対パスで保存(例:) 画像を絶対パスで保存(例:) SaveHyperlinkAsRef 参照スタイルリンク(例:[text][ref1]) インラインリンク(例:[text](https://example.com)) ドキュメントプロジェクトでは、Markdown ファイルと画像フォルダを一緒に移動できるため、相対パスの利用が一般的です。 一方、小規模な Markdown ファイルでは、インラインリンクのほうが読みやすく管理しやすい場合があります。 以下は、画像とリンクの出力方法をカスタマイズして Markdown へ変換する例です。 from spire.xls import Workbook, MarkdownOptions # Workbook オブジェクトを作成 workbook = Workbook() # Excel ファイルを読み込み workbook.LoadFromFile("sample.xlsx") # MarkdownOptions を作成 markdown_options = MarkdownOptions() # 画像を相対パスで保存 markdown_options.SavePicInRelativePath = True # ハイパーリンクをインライン形式で保存 markdown_options.SaveHyperlinkAsRef = False # Markdown として保存 workbook.SaveToMarkdown("custom_options.md", markdown_options) # リソースを解放 workbook.Dispose() 出力結果: 2. 特定のワークシートを Markdown に変換する 複数のワークシートを含む Excel ファイルから、特定のシートだけをエクスポートしたい場合は、AddCopy() メソッドを使って対象シートを新しいワークブックへコピーし、そのワークブックを Markdown として保存します。 これにより、不要なシートが Markdown へ出力されるのを防げます。 from spire.xls import Workbook def convert_specific_sheet(excel_file, sheet_name, output_md): """ 特定のワークシートを Markdown に変換する """ workbook = Workbook() new_workbook = None try: # Excel ファイルを読み込み workbook.LoadFromFile(excel_file) # 対象シートを検索 worksheet = None for ws in workbook.Worksheets: if ws.Name == sheet_name: worksheet = ws break if worksheet is None: print(f"ワークシート '{sheet_name}' が見つかりませんでした。") return # 新しいワークブックを作成し、シートをコピー new_workbook = Workbook() new_workbook.Worksheets.Clear() new_workbook.Worksheets.AddCopy(worksheet) # Markdown として保存 new_workbook.SaveToMarkdown(output_md) print(f"ワークシート '{sheet_name}' は {output_md} に正常に変換されました。") finally: if new_workbook is not None: new_workbook.Dispose() workbook.Dispose() # 使用例 convert_specific_sheet("report.xlsx", "Sheet 1", "sheet1.md") 3. 指定したセル範囲を Markdown にエクスポートする ワークシート全体ではなく、サマリーテーブルや特定のデータ範囲のみを出力したい場合もあります。 その場合は、対象範囲を新しいワークブックへコピーしてから Markdown として保存できます。 from spire.xls import Workbook, CopyRangeOptions def convert_cell_range_to_markdown(excel_file, sheet_name, cell_range, output_md): """ 指定セル範囲を Markdown に変換する """ workbook = Workbook() new_workbook = Workbook() try: workbook.LoadFromFile(excel_file) worksheet = workbook.Worksheets[sheet_name] if worksheet is None: print(f"ワークシート '{sheet_name}' が見つかりませんでした。") return # セル範囲を取得 src_range = worksheet.Range[cell_range] # 新しいワークブックを作成 new_workbook.CreateEmptySheets(1) new_sheet = new_workbook.Worksheets[0] # コピー先範囲を作成 dest_range = new_sheet.Range[ 1, 1, src_range.Rows.Count, src_range.Columns.Count ] # データをコピー src_range.Copy(dest_range, CopyRangeOptions.All) # Markdown として保存 new_workbook.SaveToMarkdown(output_md) print( f"ワークシート '{sheet_name}' のセル範囲 '{cell_range}' は " f"{output_md} に正常に変換されました。" ) finally: new_workbook.Dispose() workbook.Dispose() # 使用例 convert_cell_range_to_markdown( "report.xlsx", "Sheet 1", "A1:C5", "cell_range.md" ) この方法は、ワークシート全体ではなく、必要な部分だけをドキュメントへ再利用したい場合に便利です。 4. 複数の Excel ファイルを一括で Markdown に変換する 大量のExcelファイルを処理する場合は、フォルダ内の .xlsx および .xls ファイルを順番に変換することで、自動化できます。 これは、複数のレポートからドキュメントを生成する必要がある場合、定期的にデータセットをエクスポートする場合、または Excel から Markdown への変換を公開ワークフローに統合する場合に特に役立ちます。 from pathlib import Path from spire.xls import Workbook def batch_convert_excel_to_markdown(input_folder, output_folder): """ フォルダ内の Excel ファイルをまとめて Markdown に変換する 対応形式: .xlsx, .xls """ input_dir = Path(input_folder) output_dir = Path(output_folder) # 出力フォルダを作成 output_dir.mkdir(parents=True, exist_ok=True) excel_extensions = {".xlsx", ".xls"} converted_count = 0 for input_file in input_dir.iterdir(): # フォルダはスキップ if not input_file.is_file(): continue # 一時ファイルはスキップ if input_file.name.startswith("~$"): continue # Excel ファイルのみ処理 if input_file.suffix.lower() not in excel_extensions: continue output_file = output_dir / f"{input_file.stem}.md" workbook = Workbook() try: workbook.LoadFromFile(str(input_file)) workbook.SaveToMarkdown(str(output_file)) converted_count += 1 print(f"変換完了: {input_file.name} -> {output_file.name}") except Exception as e: print(f"{input_file.name} の変換に失敗しました: {e}") finally: workbook.Dispose() print(f"nバッチ変換が完了しました。{converted_count} 個のファイルを変換しました。") # 使用例 batch_convert_excel_to_markdown("./excel_files", "./markdown_output") Excel を Markdown に変換する際のベストプラクティス よりクリーンな Markdown を生成するために、以下の点を推奨します。 できるだけシンプルな表構造を使用する Markdown テーブルとして利用する場合は結合セルを解除する 変換前に不要な行や列を削除する ポータブルなドキュメントでは相対画像パスを利用する GitHub、Wiki、静的サイトへ公開する前に生成結果を確認する まとめ Spire.XLS for Python を使用して Python で Excel を Markdown に変換すると、わずかなコードでワークブックデータから Markdown ファイルを簡単に生成できます。これは、ドキュメント作成、レポート作成、公開ワークフローに Excel データのエクスポート機能を追加する必要がある開発者にとって実用的なソリューションです。 よくある質問 Q1:どの Excel 形式を Markdown に変換できますか? A:.xlsx や .xls などの一般的な Excel 形式を読み込み、Markdown ファイルとして保存できます。 Q2:画像は Markdown に保持されますか? A:はい。デフォルトでは、画像を Base64 文字列として Markdown 出力に埋め込むことができます。エクスポートオプションを設定して、画像を相対パスまたは絶対パスで保存することも可能です。 Q3:Microsoft Excel は必要ですか? A:いいえ。Spire.XLS for Python はスタンドアロンで動作し、Microsoft Excel や Microsoft Office のインストールは不要です。 無料ライセンスを取得する 評価版の制限なしで利用するには、30 日間の無料トライアルライセンスを申請できます。