[C#]NPOIを使ってExcelの読み書きをする方法

[スポンサードリンク]

NPOIを使ってExcelの読み書きをする方法

NPOIとは

ざっくりとした説明だが、「Apache POI」というWordやExcelのファイルを読み書きするためのJavaライブラリを、「.NET」に移植したものらしい。

私も、「Microsoft Office XX.X Object Library」を使うものだと思っていたが、ネットにはこのライブラリについて批判的な情報が多い。

実際にNPOIに慣れるとこちらのほうが簡単だと思う。

NPOIのインストール

NPOIは「Visual Studio Community(私の環境は2017)」で、プロジェクトごとにインストールする。
次の手順でインストールすると、参照設定も自動で必要な分行われる。

NuGetパッケージマネージャ

メニューから
「ツール」→「NuGetパッケージマネージャ」→「パッケージマネージャーコンソール」を開く。

すると、「パッケージマネージャーコンソール」ウィンドウが開き、下図のように、コマンドプロンプトが表示される。

赤字を入力してEnterキーを押す。
「PM> Install-Package NPOI

これで「正常にインストールされました」とメッセージが表示され。
「PM>」というプロンプトが出たら「パッケージマネージャーコンソールウィンドウ」を閉じる。

Excelから別のExcelへ値をコピーするサンプル

このサンプルは、1シート目の内容を、書き込み先の1シート目のセルに書き込んでいる。
書き込み先のセルにすでに値があれば、その値は読み込み元のセルの値で上書きされる。

注意点

行番号と列番号

「1列目、2列目」「1行目、2行目」と数えるExcelVBAなどと異なり、NPOIでは「0列目、1列目・・・」「0行目、1行目・・・」と数える。

0から数えていくので注意してもらいたい。

Excelの開き方

例えばExcelのブックを開くときに、FileStreamを使わずに、

とすると、いつまでもファイルを掴んでいるため、ブックを保存する、

で、「他のファイルが開いているために書き込みができない」というエラーになる。

このため、FileStreamを使用して、「ブックを読み込んだらすぐにそのファイルを閉じる」という処理に変更した。
また、一回ファイルが読み込めなくなると、冒頭の「WorkbookFactory.Create」でも同様のエラーが出始める。

ブックを読み込んだら、すぐにファイルを閉じる。ブックを書き込んだらすぐにファイルを閉じる。
ファイルを開きっぱなしにしないように気を付ける。

[スポンサードリンク]

関連記事

コメント

    • testsan
    • 2017年 11月 30日

    CellやRowはそれぞれ
    NPOI.SS.Util.CellUtil.GetCell();
    NPOI.SS.Util.CellUtil.GetRow();
    で取得すると、存在しない場合には作成して返してくれますよ。

      • ucchanx
      • 2018年 5月 22日

      コメント有難うございます。
      返信が遅くなり申し訳ありません。

      このような方法があるのですね。
      アドバイスありがとうございます。
      感謝です。
      これからもよろしくお願いいたします。

  1. この記事へのトラックバックはありません。

CAPTCHA


ピックアップ記事

  1. SUM関数を使用して累計を求める (さらに…)…
  2. 本記事ではXMLからSQLを取得し、SQLiteで実行する。プリペアードステートメントを使用する。 …
  3. 例えば、商品の色が登録されているもの、登録されていないものなどを取得する場合 (さらに&hell…
  4. リモートデスクトップ接続のサーバーで、スタートメニューが反応しなくなった場合 (さらに&hell…
  5. Oracle 12cではCDBとPDBの概念があるため、それより前のバージョンの様にログインすると、…

カテゴリー

[スポンサードリンク]




ページ上部へ戻る