VSCodeでExcelファイルを扱う方法

採用はこちら

VSCode(Visual Studio Code)では、Excelファイルを閲覧したり、CSVとして編集したり、Pythonを使ってExcelデータを読み書きしたりできます。
ただし、VSCodeはMicrosoft Excelのような表計算ソフトではありません。
そのため、Excelファイルをどの程度編集したいのかによって、適した方法が異なります。

簡単に内容を確認したい場合はExcel対応の拡張機能を利用し、データ加工や集計を行いたい場合はPythonのpandasやopenpyxlを使う方法が便利です。
一方、VBAやピボットテーブル、Power Queryなどを本格的に扱う場合は、Microsoft Excelを使用するほうが適しています。

目次

VSCodeでExcelファイルを扱う主な方法

VSCodeでExcel関連のファイルを扱う方法は、大きく分けて次のようになります。

  • Excel対応の拡張機能を使って閲覧する。
  • 編集対応の拡張機能を使って簡単なセル編集を行う。
  • ExcelデータをCSVに変換して編集する。
  • PythonからExcelファイルを読み書きする。
  • PythonでExcel処理を自動化する。

目的に応じて使い分けることが重要です。

VSCodeでExcelファイルを直接開く方法

VSCode標準では.xlsxを表形式で編集できない

一般的なExcelファイルである.xlsxは、単純なテキストファイルではありません。
そのため、VSCode標準機能だけでは、Microsoft Excelのようにセルが並んだ表計算画面として編集することはできません。

.xlsxファイルをVSCodeで確認したい場合は、ExcelやOfficeファイルに対応した拡張機能を利用するのが一般的です。

Excel対応の拡張機能をインストールする

VSCodeでは、Extensions画面からExcelやOfficeファイルに対応した拡張機能をインストールできます。

WindowsやLinuxでは、次のショートカットで拡張機能画面を開けます。

Ctrl + Shift + X

macOSでは、次のショートカットを使用します。

Command + Shift + X

検索欄に次のようなキーワードを入力すると、Excel関連の拡張機能を探せます。

Excel
xlsx
Office Viewer
CSV

Office Viewerという名前だけで判断しない

VSCode Marketplaceには、「Office Viewer」やそれに近い名前の拡張機能が複数存在します。
そのため、拡張機能名だけではなく、PublisherやExtension ID、対応機能まで確認することが重要です。

拡張機能によって、次のように機能が異なります。

  • Excelファイルを閲覧できる。
  • シートを切り替えられる。
  • セルの検索ができる。
  • セルを編集できる。
  • CSVへ変換できる。
  • 数式や条件付き書式を表示できる。
  • 閲覧専用で編集には対応していない。

「Excelファイルを表示できる拡張機能」が必ず編集にも対応しているとは限らないため注意が必要です。

VSCode上でExcelを編集する方法

編集対応の拡張機能を利用する

Excel対応のVSCode拡張機能の中には、セルの編集に対応しているものもあります。

例えば、次のような単純な表であれば、VSCode内で編集できる場合があります。

商品名 価格 在庫
商品A 1000 20
商品B 1500 15

簡単な値の修正や表データの確認程度であれば、編集対応の拡張機能でも十分な場合があります。

Microsoft Excelと同じ機能が使えるわけではない

VSCodeのExcel拡張機能は、Microsoft Excelそのものではありません。
そのため、次のような高度なExcel機能には対応していなかったり、表示だけに対応していたりする場合があります。

  • VBAマクロ。
  • Power Query。
  • Power Pivot。
  • ピボットテーブル。
  • 高度なグラフ編集。
  • 外部データ接続。
  • ActiveX。
  • Excelアドイン。
  • 複雑な条件付き書式。
  • Excel固有のオブジェクト。

業務用の複雑なExcelファイルを編集する場合は、Microsoft Excelを使用したほうが安全です。

CSVファイルとしてVSCodeで扱う方法

データだけ扱うならCSVが便利

セルの色やグラフなどが不要で、表データだけを扱いたい場合はCSV形式を利用すると便利です。

例えば、Excelに次のようなデータがあるとします。

商品,価格,在庫
Apple,120,100
Orange,150,50

CSVはテキストファイルなので、VSCode標準のエディターから直接開いて編集できます。

CSVではExcel固有の機能は保存できない

CSVに保存できるのは、基本的に文字や数値などの表データです。
そのため、ExcelからCSVへ変換すると、次のような情報は保存できません。

  • セルの背景色。
  • フォント。
  • 罫線。
  • グラフ。
  • 複数のワークシート。
  • VBAマクロ。
  • Excel固有のオブジェクト。

データだけを編集したい場合にはCSVが便利ですが、Excelのレイアウトや機能を維持したい場合には.xlsxを使用する必要があります。

日本語CSVでは文字コードに注意する

日本語を含むCSVでは、文字コードによって文字化けが発生することがあります。

特に、Excelから出力されたCSVでは、環境によってUTF-8以外の文字コードが使われる場合があります。
VSCodeで文字化けした場合は、画面右下の文字コード表示から、適切なエンコーディングを指定して開き直します。

Pythonを使ってExcelファイルを扱う方法

VSCodeでExcelを扱う場合、非常に実用的なのがPythonを利用する方法です。

Pythonを使えば、次のような処理を自動化できます。

  • Excelファイルの読み込み。
  • データの集計。
  • データの検索や抽出。
  • 複数ファイルの一括処理。
  • Excelファイルの自動作成。
  • シートの追加。
  • セルの書き換え。
  • 定型レポートの自動生成。

Excel処理でよく使用されるPythonライブラリには、次のようなものがあります。

pandas
openpyxl
XlsxWriter

pandasでExcelファイルを読み込む

pandasとopenpyxlをインストールする

VSCodeの統合ターミナルを開き、次のコマンドを実行します。

python -m pip install pandas openpyxl

Windows環境では、次のコマンドを使用する場合もあります。

py -m pip install pandas openpyxl

macOSやLinuxでは、環境によって次のように実行する場合があります。

python3 -m pip install pandas openpyxl

.xlsxファイルを扱う場合、pandasとopenpyxlの組み合わせがよく使用されます。

Excelファイルを読み込む

Excelファイルを読み込む基本的なコードは次のとおりです。

import pandas as pd

df = pd.read_excel("sample.xlsx")

print(df)

同じフォルダーにsample.xlsxが存在していれば、その内容をDataFrameとして読み込めます。

特定のシートを指定する

複数のワークシートがある場合は、sheet_nameを指定します。

import pandas as pd

df = pd.read_excel(
    "sample.xlsx",
    sheet_name="売上"
)

print(df)

この例では、「売上」というシートだけを読み込んでいます。

シート名を一覧表示する

Excelブックにどのようなシートがあるか確認したい場合は、ExcelFileを使用できます。

import pandas as pd

excel = pd.ExcelFile("sample.xlsx")

print(excel.sheet_names)

例えば、次のように表示されます。

['売上', '顧客', '商品']

pandasでExcelファイルを作成する

DataFrameをExcelへ出力する

pandasでは、to_excel()を使ってExcelファイルを作成できます。

import pandas as pd

data = {
    "商品": ["Apple", "Orange", "Banana"],
    "価格": [120, 150, 100]
}

df = pd.DataFrame(data)

df.to_excel(
    "output.xlsx",
    index=False
)

実行すると、output.xlsxというExcelファイルが作成されます。

index=Falseを指定すると、DataFrameのインデックス列をExcelへ出力しません。

シート名を指定する

シート名も指定できます。

df.to_excel(
    "output.xlsx",
    sheet_name="商品一覧",
    index=False
)

この場合、ワークシート名は「商品一覧」になります。

pandasで複数シートを作成する

ExcelWriterを使うと、1つのExcelファイルへ複数のDataFrameを書き込めます。

import pandas as pd

sales = pd.DataFrame({
    "商品": ["Apple", "Orange"],
    "売上": [50000, 40000]
})

stock = pd.DataFrame({
    "商品": ["Apple", "Orange"],
    "在庫": [100, 50]
})

with pd.ExcelWriter("report.xlsx") as writer:
    sales.to_excel(
        writer,
        sheet_name="売上",
        index=False
    )

    stock.to_excel(
        writer,
        sheet_name="在庫",
        index=False
    )

実行すると、report.xlsxの中に「売上」と「在庫」の2つのシートが作成されます。

既存のExcelファイルにシートを追加する

ExcelWriterを追記モードで使用する

既存のExcelファイルへ新しいシートを追加したい場合は、mode="a"を指定できます。

import pandas as pd

df = pd.DataFrame({
    "商品": ["Apple", "Orange"],
    "価格": [120, 150]
})

with pd.ExcelWriter(
    "report.xlsx",
    mode="a",
    engine="openpyxl"
) as writer:

    df.to_excel(
        writer,
        sheet_name="追加データ",
        index=False
    )

これにより、既存のreport.xlsxへ「追加データ」というシートを追加できます。

同じシート名がある場合の動作を指定する

同名のシートが存在する場合は、if_sheet_existsを指定できます。

例えば、既存のシートを置き換える場合は次のようにします。

with pd.ExcelWriter(
    "report.xlsx",
    mode="a",
    engine="openpyxl",
    if_sheet_exists="replace"
) as writer:

    df.to_excel(
        writer,
        sheet_name="売上",
        index=False
    )

if_sheet_existsでは、主に次の指定が利用されます。

error
new
replace
overlay

既存シートの扱いを細かく制御できるため、既存ファイルを更新する場合に便利です。

openpyxlでExcelを操作する

openpyxlはセル単位の操作に向いている

pandasは表データの分析や集計に向いています。
一方、openpyxlはExcelブックやセルを細かく操作したい場合に便利です。

例えば、次のような操作ができます。

  • セルの値を変更する。
  • 数式を設定する。
  • フォントを変更する。
  • 背景色を設定する。
  • 罫線を設定する。
  • 列幅を変更する。
  • 行の高さを変更する。
  • ワークシートを追加する。

Excelファイルを読み込む

基本的な読み込み方法は次のとおりです。

from openpyxl import load_workbook

workbook = load_workbook("sample.xlsx")

sheet = workbook["Sheet1"]

print(sheet["A1"].value)

このコードでは、sample.xlsxの「Sheet1」にあるA1セルの値を取得しています。

セルを書き換える

セルの値を変更する場合は、次のように記述します。

from openpyxl import load_workbook

workbook = load_workbook("sample.xlsx")

sheet = workbook["Sheet1"]

sheet["A1"] = "商品名"
sheet["B1"] = "価格"

workbook.save("sample.xlsx")

既存のExcelファイルのセルを個別に編集したい場合には、pandasよりopenpyxlのほうが適していることがあります。

Excelデータを自動加工する

計算列を追加する

Pythonを使えば、Excelデータの計算を自動化できます。

例えば、価格と数量から合計金額を計算する場合は次のようにします。

import pandas as pd

df = pd.read_excel("sales.xlsx")

df["合計"] = df["単価"] * df["数量"]

df.to_excel(
    "sales_result.xlsx",
    index=False
)

手作業で数式を入力する必要がなく、何度でも同じ処理を実行できます。

条件に合うデータだけ抽出する

例えば、価格が10,000円以上の商品だけを抽出する場合は次のようにします。

import pandas as pd

df = pd.read_excel("products.xlsx")

result = df[df["価格"] >= 10000]

result.to_excel(
    "expensive_products.xlsx",
    index=False
)

大量のデータを扱う場合には、Excel上で手作業するよりも効率化できることがあります。

Excelのファイル形式の違い

Excelには複数のファイル形式があります。

主な違いは次のとおりです。

拡張子概要
.xlsx現在一般的に使われるExcelブック
.xls古いExcel 97-2003形式
.xlsmVBAマクロを保存できるExcelブック
.xlsbバイナリ形式のExcelブック
.csvカンマ区切りのテキストデータ

Pythonで扱う場合は、ファイル形式によって使用されるエンジンが異なります。

.xlsxではopenpyxlがよく使用される

.xlsxをpandasで扱う場合は、openpyxlがよく使用されます。

df = pd.read_excel(
    "sample.xlsx",
    engine="openpyxl"
)

通常はpandasが適切なエンジンを自動的に選択するため、明示的に指定する必要がない場合もあります。

.xlsではxlrdが使用される場合がある

古い.xls形式では、xlrdが利用されます。

現在のxlrdは、基本的に.xls用と考えたほうがよく、.xlsxの読み込みにはopenpyxlなどを使用します。

.xlsbではpyxlsbなどを利用する

.xlsb形式を読み込む場合は、pyxlsbなどのエンジンを使用できます。

calamineという選択肢もある

pandasでは、calamineエンジンを利用して複数のExcel形式を扱うこともできます。

環境や対象ファイルによって、適切なエンジンを選択することが重要です。

.xlsmやVBAを扱う場合の注意点

VBAを保持できる場合がある

マクロ付きExcelファイルである.xlsmを扱う場合、VBAマクロの保持に注意が必要です。

openpyxlでは、keep_vba=Trueを指定して既存のVBAを保持できる場合があります。

pandasのExcelWriterでは、例えば次のような指定ができます。

with pd.ExcelWriter(
    "sample.xlsm",
    engine="openpyxl",
    mode="a",
    engine_kwargs={"keep_vba": True}
) as writer:

    df.to_excel(
        writer,
        sheet_name="追加データ",
        index=False
    )

VBAを保持することと編集することは別

keep_vba=Trueは、既存VBAを保持するための設定です。
openpyxlを使ってVBAコードそのものを本格的に編集できるという意味ではありません。

VBAの作成や編集が必要な場合は、Microsoft ExcelのVBAエディターなどを利用するほうが適しています。

pandasとopenpyxlの使い分け

データ処理ならpandas

次のような用途ではpandasが向いています。

  • 大量データの集計。
  • 条件抽出。
  • 並び替え。
  • CSVとExcelの変換。
  • 複数ファイルの統合。
  • Excelレポートの自動生成。

表データを中心に扱う場合は、pandasを使用すると処理を簡潔に記述できます。

セルや書式の操作ならopenpyxl

次のような用途ではopenpyxlが向いています。

  • 特定セルを書き換える。
  • フォントや背景色を変更する。
  • 列幅や行高を変更する。
  • 数式を設定する。
  • ワークシートを追加する。

Excelブックの構造やレイアウトを細かく操作したい場合は、openpyxlが便利です。

VSCodeでExcelを扱う際の注意点

複雑なExcelファイルはバックアップを取る

PythonやVSCode拡張機能から既存Excelファイルを編集する場合、Excel独自の機能が完全に保持されない可能性があります。

特に次のような機能を含むファイルでは注意が必要です。

  • VBA。
  • ActiveX。
  • Power Query。
  • 外部リンク。
  • ピボットテーブル。
  • 高度なグラフ。
  • 図形。
  • Excel固有のオブジェクト。

重要なファイルを編集する場合は、元ファイルを直接上書きせず、コピーを作成してから作業することをおすすめします。

拡張機能の信頼性を確認する

Excelファイルには、顧客情報や売上情報などの機密データが含まれている場合があります。

VSCode Marketplaceから拡張機能を導入する場合は、次の項目を確認しておくと安心です。

  • Publisher。
  • Extension ID。
  • 更新状況。
  • 利用者数。
  • 権限。
  • ソースコードの公開状況。
  • プライバシーポリシー。

名前が似ている拡張機能もあるため、機能だけでなく開発元も確認することが重要です。

VSCodeでExcelを扱う場合のおすすめの使い分け

用途ごとのおすすめ方法は次のとおりです。

やりたいこと適した方法
Excelの内容を確認したいExcel・Office Viewer系拡張機能
簡単なセル編集をしたい編集対応のExcel拡張機能
CSVを編集したいVSCode標準エディター
Excelデータを集計したいPython+pandas
Excelのセルや書式を操作したいPython+openpyxl
Excelレポートを自動生成したいpandas+openpyxlまたはXlsxWriter
大量のExcelファイルを一括処理したいPython
VBAやPower Queryを本格的に扱いたいMicrosoft Excel
ピボットテーブルを本格編集したいMicrosoft Excel

VSCodeでExcelを扱うなら目的に合わせて方法を選ぼう

VSCodeでExcelファイルを扱う方法はいくつかあります。

Excelファイルの内容を確認するだけであれば、Office Viewerなどの閲覧対応拡張機能を利用する方法が簡単です。
簡単なセル編集を行う場合は、編集機能を持つExcel対応拡張機能を選択します。

データの集計や加工、自動化が目的であれば、VSCodeとPythonを組み合わせる方法が非常に便利です。
表データの処理にはpandas、セルや書式の細かい操作にはopenpyxlを利用すると効率よく作業できます。

ただし、VSCodeやPythonはMicrosoft Excelの完全な代替ではありません。
VBA、Power Query、ピボットテーブルなどExcel独自の高度な機能を扱う場合は、Microsoft Excelを利用するほうが適しています。

そのため、閲覧や軽微な編集はVSCode拡張機能、データ処理や自動化はPython、本格的なExcel編集はMicrosoft Excelというように使い分けるとよいでしょう。

以上、VSCodeでExcelファイルを扱う方法についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次