困ったー

WIN10・アプリ・ゲームで困ったことを調べてみた

「こまったー」は困ったことを調べたブログです。

オキュラスクエスト2 |  ARK |  フォートナイト |  マイクラ |  サティスファクトリー | 

スポンサーリンク


【Visual Studio 2019】C#でエクセルを簡単に扱う~セルの取得・セルの上書き保存

◆Paypayならチャージだけでマイナポイント最大5000円還元( アイフォン(iOS) | アンドロイド)

C#でエクセルを簡単に扱う方法の紹介です。

Excelのオブジェクトを使う方法というのもありますが、外部ライブラリでClosedXMLというのを使ったほうところ、かなり簡単にエクセルの操作ができました。

コードも少ないと思うのでおすすめです。

C#でエクセルを簡単に扱うには?

excel

C#でエクセルファイルのデータを取得することができます。

 

一般的な方法は、プロジェクトエクスプローラで「参照>参照の追加」でExcelのオブジェクトをインポートします。

f:id:apicode:20200729094605p:plain

 

しかしこの方法だと結構プログラムを書くのは面倒っちそうでした。

 

そこでググってみたら、ClosedXMLというライブラリを使うほうが簡単だよ~ということで、実際使ってみたらかなり効率がよかったです。

 

ということで、ここではClosedXMLを使ったサンプルを紹介していきます。

参考:Excelファイルを C# と VB.NET で読み込む "正しい" 方法 - Qiita

 

準備

まずエクセルファイルを用意。

f:id:apicode:20200729094608p:plain

 

次にClosedXMLを入手します。

GitHubに公開されています。

https://github.com/closedxml/closedxml

 

Visual Studioへインポートするには、「ツール>NuGetパッケージマネージャ>パッケージマネージャーコンソール」を実行。

 

コンソールが開いたら

PM> Install-Package ClosedXML

を実行すればインストールを終わりまで勝手にやってくれます。

f:id:apicode:20200729094609p:plain

 

セルを取得

あとはテスト用のコードを書きます。

まずはライブラリが使えるように宣言。

using ClosedXML.Excel;

 

上記参考ページのコードをテスト用に若干手直しして使ってみます。

エクセルのファイルパスを指定してワークブックオブジェクト、ワークシートオブジェクトを作成します。

 

あとは作ったオブジェクトでセル位置を指定すると読み込めました。

 

private void button1_Click(object sender, EventArgs e)
{
 String filePath = "c:\\_work\\sample.xlsx";

 XLWorkbook workbook = new XLWorkbook(filePath);
 IXLWorksheet worksheet = workbook.Worksheet(1);
 int lastRow = worksheet.LastRowUsed().RowNumber();
 String sResult = "";
 for (int i = 1; i <= lastRow; i++)
 {
  IXLCell cell = worksheet.Cell(i, 1);
  sResult += (cell.Value + "");
 }
 textBox1.Text = sResult;
}

 

試すと無事にファイルからデータを読み込めました。

f:id:apicode:20200729094611p:plain

 

特定のセルの読み込みも簡単です。

「worksheet.Cell("A2").Value」のような書き方でA2セルの値を取得できます。

private void button1_Click(object sender, EventArgs e)
{
 String filePath = "c:\\_work\\sample.xlsx";

 XLWorkbook workbook = new XLWorkbook(filePath);
 IXLWorksheet worksheet = workbook.Worksheet(1);

 textBox1.Text = worksheet.Cell("A2").Value + "";
}

 

 

セルへ書き込み

今度はセルへ書き込んでファイルを保存してみましょう。

 

以下のようにワークブック、ワークシートを取得したあとで、セル「A2」の値を書き換えてワークブックを保存します。

private void button1_Click(object sender, EventArgs e)
{
String filePath = "c:\\_work\\sample.xlsx";

XLWorkbook workbook = new XLWorkbook(filePath);
IXLWorksheet worksheet = workbook.Worksheet(1);

worksheet.Cell("A2").Value = "清宮幸太郎";
workbook.SaveAs(filePath);
}

 

これで、エクセルファイルのA2セルの「きよみや」という項目を「清宮幸太郎」というデータにち書き換えることができました。おい、そろそろ10本以上打ってよホームラン。

f:id:apicode:20200729095637p:plain

 

つうわけでClosedXMLを使うと、セルの修正や保存も簡単に書けました。

 

 

注意点

ClosedXMLは旧形式ファイル(.xls)は未対応のようです。

 

そちらのファイルを操作することが必須条件ということであれば、エクセルオブジェクトを使うほうがいいかもしれません。

 

[C#関連記事]

  1. 【Visual Studio 2019】C#の始め方 - 困ったー
  2. 【Visual Studio 2019】C#のエラーと対策 - 困ったー
  3. 【C#】ツールボックス 一覧 - 困ったー
  4. 【Visual Studio】C#でフォームの使い方 フル画面?半透明?バーを消す?
  5. 【VisualStudio】C#のボタンとは?使い方は?
  6. 【VisualStudio】C#のパネルとは?使い方は?
  7. 【Visual Studio】C#で表・テーブルを使うには?
  8. 【Visual Studio】C#でスクレイピング
  9. 【Visual Studio】C#で文字やファイルを扱うには? - 困ったー
  10. 【Visual Studio】C#で画像やサウンドを扱うには? - 困ったー
  11. 【Visual Studio】C#で動画を制御するには?ビデオ入力表示は?
  12. 【Visual Studio】C#でインターネット関数の使い方 - 困ったー
  13. 【Visual Studio】C#で顔認識や日本語解析のサンプル - 困ったー
  14. 【Visual Studio】C#からMySqlの使い方 接続するには?SQL文を実行するには?

 

[Visual Studio 2019関連記事]

  1. Visual Studio 2019 無料で使うには?ダウンロードするには?
  2. インストーラ作成のまとめ アイコンは?.NET Frameworkを含めるには?
  3. Visual Source Codeとは?Visual Studio 2019との違いは?

このブログは、ネットや書籍上の情報、個人の体験や感想を中心にまとめたものです。 正確性を期していはいますが、間違い・誤訳等あるかもしれません。 当サイトの情報によって生じたいかなる損失について一切の責任を負わないものとします. あらかじめご了承ください。

利用規約・プライバシーポリシー |〇問い合わせ