Skip to content
| Marketplace
Sign in
Visual Studio Code>Visualization>OpenXML ViewerNew to Visual Studio Code? Get it now.
OpenXML Viewer

OpenXML Viewer

tmidorikawa

| (0) | Free
Office Open XML (.xlsx / .docx / .pptx) を VS Code 上で直接プレビューする読み取り専用ビューアー。
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

OpenXML Viewer

Office Open XML 形式のファイル(.xlsx / .docx / .pptx)を Visual Studio Code 上で直接プレビュー するための拡張機能です。 ファイルをダブルクリックするだけで、Excel・Word・PowerPoint を起動せずに中身を素早く確認できます。

[!NOTE] 本拡張機能は 閲覧(読み取り専用) を目的としています。ファイルの編集・保存機能は提供しません。


目次

  • 主な機能
  • 対応ファイル形式
  • 動作要件
  • インストール
  • 使い方
  • コマンド
  • 設定
  • 仕様
  • 制限事項
  • 開発
  • ロードマップ
  • コントリビュート
  • ライセンス

主な機能

  • 📊 Excel ブック(.xlsx)の閲覧
    • シート単位でセル内容を表形式で表示
    • 複数シートのタブ切り替え
  • 📝 Word 文書(.docx)の閲覧
    • 段落・見出し・表などの本文構造を表示
  • 📑 PowerPoint プレゼンテーション(.pptx)の閲覧
    • スライドごとのテキスト・図形・画像を表示
    • スライド一覧(サムネイル)からのジャンプ
  • 🖱️ シームレスな操作
    • エクスプローラーでファイルを開くだけでプレビューを起動(カスタムエディター)
    • 外部アプリケーションの起動が不要
  • 🔒 安全な閲覧
    • 読み取り専用のため、誤編集による破損が発生しない
    • Webview のコンテンツセキュリティポリシー(CSP)により外部リソース読み込みを制限

対応ファイル形式

種類 拡張子 形式 対応状況
Excel ブック .xlsx SpreadsheetML ✅ 閲覧
Word 文書 .docx WordprocessingML ✅ 閲覧
PowerPoint .pptx PresentationML ✅ 閲覧

[!IMPORTANT] 対象は Office Open XML(OOXML)形式 のファイルです。 旧バイナリ形式(.xls / .doc / .ppt)やマクロ有効形式(.xlsm など)は対象外です。


動作要件

  • Visual Studio Code 1.90.0 以降
  • 追加のランタイムや外部アプリケーション(Microsoft Office など)のインストールは 不要

インストール

Visual Studio Code Marketplace から

  1. VS Code のサイドバーから 拡張機能(Extensions) ビューを開く(Ctrl+Shift+X / ⌘+Shift+X)
  2. OpenXML Viewer を検索
  3. Install をクリック

VSIX ファイルから

code --install-extension openxml-viewer-<version>.vsix

または、コマンドパレット(Ctrl+Shift+P / ⌘+Shift+P)から 「Extensions: Install from VSIX...」 を実行し、.vsix ファイルを選択します。


使い方

  1. VS Code のエクスプローラーで .xlsx / .docx / .pptx ファイルを開きます。
  2. 本拡張機能のカスタムエディターが自動的に起動し、内容がプレビュー表示されます。
  3. 既定のテキストエディターなどで開きたい場合は、ファイルを右クリックして 「Open With...(アプリケーションを選択して開く)」 から開き方を切り替えられます。

[!TIP] 既定の開き方を変更したい場合は、「Open With...」→「Configure default editor for '*.xlsx'...」 から 拡張子ごとに既定エディターを設定できます。


コマンド

コマンドパレット(Ctrl+Shift+P / ⌘+Shift+P)から利用できます。

コマンド コマンドID 説明
OpenXML Viewer: Open Preview openxml-viewer.openPreview アクティブなファイルをプレビューで開く
OpenXML Viewer: Reload openxml-viewer.reload 現在のプレビューを再読み込みする

設定

settings.json(ユーザー設定 / ワークスペース設定)から構成できます。

設定キー 型 既定値 説明
openxmlViewer.spreadsheet.maxRows number 1000 スプレッドシートで一度に描画する最大行数
openxmlViewer.spreadsheet.showGridlines boolean true セルのグリッド線を表示するか
openxmlViewer.document.showImages boolean true Word 文書内の画像を表示するか
openxmlViewer.presentation.thumbnails boolean true スライドのサムネイル一覧を表示するか
openxmlViewer.theme string "auto" プレビューの配色(auto / light / dark)

設定例:

{
  "openxmlViewer.spreadsheet.maxRows": 5000,
  "openxmlViewer.theme": "dark"
}

仕様

設計方針(依存関係)

本拡張機能は、F# / JavaScript ともに標準ライブラリ以外の外部ライブラリを原則として利用しない 方針で設計しています。

  • フルスクラッチ実装: OOXML のパーサー(ZIP 展開・XML 解析)およびビューアー(レンダリング)は、外部ライブラリに依存せず自前で実装します。
  • 方針の理由:
    • 依存ライブラリの脆弱性・破壊的変更・メンテナンス停止といったリスクを排除する
    • 拡張機能のサイズと読み込みコストを最小化する
    • 解析・描画の挙動を完全に制御し、読み取り専用・オフライン動作を保証する
  • 例外: ビルドツールチェーン(F# → JavaScript 変換を行う Fable、.vsix を生成する @vscode/vsce など)や、VS Code 拡張ホストが提供する vscode API は対象外です。これらは実行時の機能ライブラリではなく、開発・配布のための基盤として利用します。

アーキテクチャ

本拡張機能は F# で実装し、Fable(F# → JavaScript コンパイラ)で VS Code 拡張として動作する JavaScript へトランスパイルします。 VS Code の Custom Editor API(CustomReadonlyEditorProvider)を利用して、 対象拡張子のファイルに対するカスタムエディターを登録します。 描画は Webview 上で行い、拡張機能本体(Extension Host 側)でファイルを解析した結果を Webview へ送信します。

┌──────────────────────────────────────────────────────────────┐
│                     VS Code Extension Host                     │
│                  (F# → Fable → JavaScript)                    │
│                                                                │
│   ┌────────────────────────┐     ┌──────────────────────────┐ │
│   │  CustomEditorProvider   │ ──▶ │   OOXML Parser (F#)       │ │
│   │  (.xlsx/.docx/.pptx)    │     │  (ZIP 展開 + XML 解析)     │ │
│   └────────────┬───────────┘     └──────────────────────────┘ │
│                │  postMessage                                  │
│                ▼                                               │
│         ┌────────────┐                                         │
│         │   Webview   │  ◀── HTML/CSS/JS でレンダリング          │
│         └────────────┘                                         │
└──────────────────────────────────────────────────────────────┘

技術スタック

領域 採用技術
実装言語 F#
JS へのコンパイル Fable
拡張機能 API バインディング 自前の最小バインディング(src/Vscode.fs)
バンドル esbuild
ビルドオーケストレーション npm スクリプト
パッケージング @vscode/vsce
外部ランタイムライブラリ 不使用(F# / JavaScript ともに標準ライブラリのみ・フルスクラッチ実装)

ファイル解析

  • Office Open XML ファイルは実体が ZIP アーカイブ であり、内部の XML パーツ(xl/, word/, ppt/ 配下)を解析します。
  • ZIP 展開(DEFLATE 解凍)および XML 解析は、外部ライブラリを使わずフルスクラッチで実装 します。
  • 解析対象の主なパーツ:
    • .xlsx: xl/workbook.xml, xl/worksheets/sheet*.xml, xl/sharedStrings.xml, xl/styles.xml
    • .docx: word/document.xml, word/styles.xml, word/media/*
    • .pptx: ppt/presentation.xml, ppt/slides/slide*.xml, ppt/media/*

レンダリング方針

  • フルスクラッチ: ビューアー(レンダリング)は外部 UI ライブラリ・フレームワークを使わず、標準の HTML/CSS/JS のみで実装します。
  • 読み取り専用: Webview からファイルへの書き込みは行いません。
  • 段階的描画: 大きなファイルでもフリーズしないよう、行・スライド単位で段階的に描画します(上限は設定で調整可能)。
  • テーマ追従: VS Code のカラーテーマに追従して表示色を切り替えます(openxmlViewer.theme で固定も可能)。

セキュリティ

  • Webview には厳格な Content Security Policy(CSP) を適用し、外部スクリプト・外部リソースの読み込みを禁止します。
  • 文書内に埋め込まれた画像は、拡張機能が webview.asWebviewUri で安全に変換した上で表示します。
  • 外部ネットワークへの通信は行いません(オフラインで完結します)。

制限事項

  • 編集・保存・印刷には対応していません(閲覧専用)。
  • 複雑なレイアウト(高度な図形・SmartArt・グラフ・条件付き書式・マクロなど)は簡略化、または非表示となる場合があります。
  • パスワード保護・暗号化されたファイルは開けません。
  • 数式は計算結果のキャッシュ値を表示します(再計算は行いません)。
  • 旧バイナリ形式(.xls / .doc / .ppt)には対応していません。

開発

必要環境

  • .NET SDK 10.0 以降(F# / Fable のビルドに使用)
  • Node.js 18 以降(Fable の出力実行・パッケージングに使用)
  • Visual Studio Code

セットアップ

git clone https://github.com/tatsuya-midorikawa/openxml-viewer.git
cd openxml-viewer

# .NET ローカルツール(Fable など)の復元
dotnet tool restore

# npm 依存関係の復元
npm install

ビルド / デバッグ実行

# F# を JavaScript へコンパイル(ウォッチモード)
npm run watch          # dotnet fable watch src --outDir build --test:MSBuildCracker

# 単発ビルド(Fable → esbuild)
npm run build          # dotnet fable src ... && esbuild build/Extension.js ...

VS Code でプロジェクトを開き、F5(Run Extension)を押すと、 拡張機能を読み込んだ Extension Development Host が起動します。 そのウィンドウで .xlsx / .docx / .pptx を開いて動作を確認できます。

パッケージング

npm run package        # Fable ビルド後に .vsix を生成(vsce package)

詳細な手順は DEVELOPMENT.md、Marketplace への公開は PUBLISHING.md を参照してください。

プロジェクト構成

openxml-viewer/
├── src/                       # 拡張機能のソース(F#)
│   ├── Core/                  # フルスクラッチの基盤
│   │   ├── Inflate.fs         #   DEFLATE 解凍(RFC 1951)
│   │   ├── Zip.fs             #   ZIP アーカイブ読み取り
│   │   ├── Xml.fs             #   XML パーサー
│   │   ├── Text.fs            #   UTF-8 デコード
│   │   └── Opc.fs             #   Open Packaging Conventions
│   ├── Parsers/               # 各形式パーサー
│   │   ├── Spreadsheet.fs     #   .xlsx(SpreadsheetML)
│   │   ├── Document.fs        #   .docx(WordprocessingML)
│   │   └── Presentation.fs    #   .pptx(PresentationML)
│   ├── Model.fs               # Webview へ渡す共有モデル
│   ├── Vscode.fs              # VS Code API への最小バインディング
│   ├── Extension.fs           # エントリーポイント / カスタムエディター登録
│   └── OpenXmlViewer.fsproj   # F# プロジェクトファイル
├── media/                     # Webview アセット・アイコン
├── .config/dotnet-tools.json  # Fable のローカルツール定義
├── package.json               # 拡張機能マニフェスト
├── README.md / DEVELOPMENT.md / PUBLISHING.md / CHANGELOG.md
└── LICENSE

ロードマップ

  • [x] .xlsx ビューアー(セル・複数シート)
  • [x] .docx ビューアー(本文・表・画像)
  • [x] .pptx ビューアー(スライド・サムネイル)
  • [ ] 検索・コピー対応
  • [ ] グラフ・図形の描画強化
  • [ ] エクスポート(PDF / HTML)

コントリビュート

バグ報告・機能要望・プルリクエストを歓迎します。 Issues からお気軽にご連絡ください。


ライセンス

本プロジェクトは MIT License の下で公開されています。

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft