Markdown ファイル(UTF-8)を読み取り、Apache POI を使って Excel(.xlsx)に整形出力するツールです。
仕様書・設計書の Markdown を「見出し/箇条書き/表/引用/コードブロック」などの体裁を保ったまま Excel に落とし込みたい用途を想定しています。
本リポジトリは個人による開発であり、特定の組織・雇用主とは無関係です。
- 入力: Markdown(UTF-8)
- 出力: Excel(.xlsx)
- シート名:
spec
-
見出し
#〜#####/##/###はそれぞれサイズ違いの太字スタイル####以降は通常サイズ太字扱い- 行末の閉じ
#を許容(例:## title ##) - 原則 A 列に出力(
indent=0の見出し)
-
通常段落(テキスト)
- インデント量に応じて列を右へ(A 列起点)
- 同一インデントの連続行は同じセルへ追記される場合あり(状態により制御)
-
箇条書き
*/-/+(先頭が*/-/++ 空白の行)- 先頭に
・を付与して出力 - ネスト(インデント)に応じて列が右へ(B 列起点)
<br>を含む場合は行を縦展開し、2行目以降は1列右(説明行)へ出力
- 先頭に
-
番号付きリスト
1./1)/12./12)(数字 +.または)+ 空白)- ネスト(インデント)に応じて列が右へ(B 列起点)
<br>を含む場合は縦展開+継続行を右列に出す挙動に対応
-
引用
>>の後ろに空白がなくても引用として扱います- 左端に太い青線、背景をコードブロックと同系色で塗る(2種類のスタイル)
<br>を含む場合は同じ列に縦展開- 行末が
<br>の場合、次の行(>でも通常行でも)へ引用の継続として吸い込む
-
コードブロック(フェンス ``` / ~~~)
- 背景グレー、フォントは英数字は
Consolas、日本語はMeiryoに切替 - 枠線をブロックの外周に付与
- 開始フェンスの後ろの info string を許容
- コードフェンスは コードブロック中でも最優先で判定され、閉じることができます
- 背景グレー、フォントは英数字は
-
水平線
---に加え、***/___/- - -/* * *のような形式にも対応- 空白・タブを含んでいても、同一記号(
-/*/_)が 3 個以上であれば水平線として扱います - 行全体に下線(hairline)を描画
-
テーブル(パイプ
|形式)| a | b |のような行に加え、a | bのように先頭 / 末尾の|がない行もテーブル行として扱う- 検出は「インラインコード外の
|が 1 つ以上ある行」 - 区切り行
|---|---|(:も可、空白可)をヘッダ区切りとして扱う - セル内の
\|は|に復元 - インラインコード内の
|は区切りとして扱わない(安全側) - セル内の
<br>は「空白」に畳み込み(インラインコード内は維持) - ヘッダ行は太字+下線、ボディ行は薄い下線、最終行だけ下線なし
注意: テーブル(表)は
.xlsx生成後に 手動で列幅調整などの体裁調整が必要です(自動の列幅最適化は行いません)。
-
強調(太字 / 斜体)
- 太字
**bold**/__bold__ - 斜体
*italic*/_italic_ - 太字+斜体の組み合わせにも対応
**が誤検出されないように「本物の太字マーカー判定」が入っています*/_の強調判定は、逐次トグルではなく CommonMark 寄りの delimiter run 解決で行います- Unicode の whitespace / punctuation を考慮して左右の境界条件を判定します
_は追加条件(単語内の誤検出抑止など)を反映しています- delimiter run の rule of 3 を反映しています
***/___のような複合 run(太字+斜体)や混在 run に対応しています
- 太字
-
打ち消し線
~~text~~- 太字 / 斜体との組み合わせにも対応
<br>分割時の継続状態にも~~を保持します
-
インラインコード(複数長バッククォート対応)
- 単一の
`code`だけでなく、複数長のバッククォート列によるコードスパンを解釈します - 中にバッククォートを含む内容にも対応します
- 赤字、等幅(ASCII は Consolas / CJK は Meiryo)
- 単一の
-
ハード改行対応
- コード外の
<br>を分割点として解釈し、行を縦展開 - 行末の「半角スペース 2 個以上」または「バックスラッシュ
\」もハード改行として扱います - 行末が
<br>の場合、次入力行へ継続(強調継続なども carry で保持) <br>をまたぐ時は、開いている強調(太字/斜体)だけを閉じて次行で再オープンします- インラインコード内の
<br>は分割しません
- コード外の
一般的な「Markdown→表だけ」変換ではなく、設計書の読みやすさを優先して Excel に整形します。
<br>と標準的なハード改行を“改行”として扱い、縦展開+行末<br>は次行へ継続(強調継続も保持)- 引用
>:左端に太い青線+背景色、<br>は同列に縦展開、行末<br>は次行(通常行も含む)へ吸い込み継続 - コードブロック(``` / ~~~):背景グレー+外周枠線、ASCII は
Consolas/ 日本語は `Meiryo` に自動切替、info string も許容 - 列配置ルールが明確:トップレベルは A 列、インデントは右へ。リストは B 列起点でネスト深さに応じて右へ(上限は clamp)
- インライン装飾:太字 / 斜体 / 打ち消し線と、複数長バッククォートのインラインコードをセル内リッチテキストで反映
- Java 8 以上
- Apache POI(XSSF /
XSSFWorkbookを使用) - Swing(
JFileChooser/JOptionPaneを使用)
注意: 本ツールは処理完了時に
JOptionPane.showMessageDialog(...)を必ず呼びます。
サーバー等の headless 環境で実行する場合は、GUI 呼び出し部分を無効化するなどの調整が必要です。
本ツールは 常に GUI(ダイアログ)で設定します。
コマンドライン引数による設定は行いません(引数が渡されても無視され、ダイアログが表示されます)。
- IDE から
md2excel.app.MarkdownToExcelを実行 - またはコマンドラインから main を実行(引数なし)
java ... md2excel.app.MarkdownToExcel
次の順にダイアログが出ます。
- Markdown ファイル選択(
JFileChooser) mergeCols入力(既定: 40)- フォント選択(既定: 游ゴシック)
- 縦位置選択(上揃え/上下中央揃え/下揃え)
# / ## / ### / 通常のフォントサイズ入力
出力ファイルは入力ファイルと同じ場所に .xlsx 拡張子で生成されます。
- トップレベル(インデント 0)は A 列起点
- インデントがあるブロック(コード/引用/テーブル等)は B 列起点で右へ
- 箇条書き・番号付きはネスト深さに応じて右へ
mergeColsを超える列は右端に丸め込み(clamp)されます
- グリッド線表示・印刷ともに OFF
0..mergeCols-1の列幅を固定(3 * 256)- 既定セルスタイルを設定(通常スタイル)
このリポジトリは Maven/Gradle を使用しません。
依存 jar は Git に含めないため、lib/README.md の手順に従って lib/ に配置し、プロジェクトのクラスパス(IDE の Build Path / Module Dependencies 等)に追加してください。
- 見出しは ATX 形式(
#)を対象(行末の閉じ#は許容) - 強調は太字 / 斜体 / 打ち消し線 / インラインコードまで(リンク等は未対応)
- コードブロックはフェンス形式(``` / ~~~)のみ(インデントコードブロック等は未対応)
- テーブルは「インラインコード外の
|が 1 つ以上ある行」を前提とした簡易判定です
md2excel.app(起動)md2excel.config(設定)md2excel.excel(Excel/POI ユーティリティ・Style)md2excel.markdown(Markdown 文字処理・リスト深さ等)md2excel.render(レンダリング本体)
md2excel.app.MarkdownToExcelエントリポイント。設定読み込み → Markdown 読み込み(Stream)→ 描画 → xlsx 出力。md2excel.config.Md2ExcelConfig引数/GUI から設定値を作る。md2excel.render.MarkdownRenderer行ごとの種別判定 → 状態遷移(ブロック境界処理)→ Excel の行・セルに出力。md2excel.render.RenderState/md2excel.render.RenderContextレンダリング状態と共有オブジェクトを保持。md2excel.excel.MdStyleExcel の各種CellStyleを生成(見出し、表、引用、コード枠等)。md2excel.render.MarkdownInlineセル内のリッチテキスト(強調 / 打ち消し線 / インラインコード / 改行分割)を処理。md2excel.render.MarkdownTableテーブル行の解析とセル生成、終端行の罫線処理。md2excel.render.MdBlockBoundary/md2excel.render.BlockQuoteUtil/md2excel.render.RowUtil/md2excel.render.CellAppendUtil境界制御、引用スタイル適用、行生成・再利用、追記。md2excel.markdown.ListStackUtil/md2excel.markdown.MdTextUtilリスト深さ管理、文字処理ユーティリティ。md2excel.excel.Md2ExcelSheetUtil水平線行などのシート出力ユーティリティ。
入力例:
# Title<br>Sub
* item1<br>detail
- item2<br>detail
> quote<br>line2<br>
next line (still quote)
| a | b |
|---|---|
| **x** | `y` |出力のイメージ:
- 見出しは A 列に 2 行(
<br>で縦展開) - 箇条書きは B 列、2行目以降は C 列に縦展開
- 引用は同列に縦展開し、行末
<br>により次行も引用として継続 - 表はヘッダ太字、セル内の強調やインラインコード をリッチテキストで反映
Copyright (c) 2025 bonpurple
Apache License 2.0(詳細は LICENSE を参照)
NOTICE / docs/third-party/THIRD-PARTY-LICENSES.md / docs/third-party/THIRD-PARTY-NOTICES.txt を参照してください。