previous arrowprevious arrow
next arrownext arrow
Shadow
Slider
C#/VB.net

C# エクセルをDatatble,Datagridviewに取込み(複数シート)

C#でエクセルをdatatableに取込むことはたまにあると思います。

備忘録として残しておきます。

実際に作ったファイルはこちらからダウンロードできます。

エクセルをDatatbleに取込み、Datagridviewに表示

色々と解説はありますが、それは後にして、コードはこんな感じです。

エクセルを複数シート取込んで、データグリッドビューに表示します。

エクセルを開かずに処理する方法もあります。

C# エクセルを開かずにDatatbleに取込み(Closed XML)エクセルをC#で処理するときにMicrosoft.Office.Interop.Excelを参照追加して処理することが今のところは主流で...

流れは以下の通りです。

①ダイアログでエクセルを選択
②エクセルを開く
③シートごとにdatatableへ格納
④エクセルを閉じる

解説

それぞれ処理4つのポイントを解説します。

①ダイアログでエクセルを選択

20行目からgetExcelPath()というメソッドに飛んでいます。

詳細は以下をご確認ください。

C# ダイアログで選択したファイルパスを取得 ダイアログで選択したファイルのパスを取得するのってどんなやり方だったっけ?となることが私は多いです。 と言うか、覚える気が...

②エクセルを開く

エクセルを開くにはブックやらシートやらと変数を定義しないとダメなようです。

13行目~17行目です。

そして、objWorkBooks.Open(filePath);でエクセルを開いています。

③シートごとにdatatableへ格納

31行目でシートを変数へ格納し、

34行目からの処理でシート枚数分ループさせています。

getDataTableFromExcelメソッド内でシートのデータすべてを取得しています。

SQLのSELECT * [strSheetName] はシートのすべてのデータを取得するという意味です。

※列が1列空いたり、行が1行空白だと、その前までしか取得されません。

④エクセルを閉じる

44行目~58行目でエクセルを閉じて、オブジェクトを開放しています。

これでエクセルを閉じたり、プロセスやメモリを開放することができます。

エクセルを取込んでSQLで更新する方法も紹介しているのでご覧ください。

C# エクセル取込みしてSQLでデータ更新C#などで開発する時にエクセルの一括取込み機能を作るときがあると思います。 いちいち調べて、プログラムを組んでと言うのが面倒なので...

実行結果

3シートがそれぞれデータグリッドビューに表示されました。

C#アプリ開発 メールお知らせアプリ 開発案件の経験は2案件ほどで、ほとんど経験ありません。 そんな私が独学でプログラミングの勉強をしてきました。 そこで...

補足

Microsoft.ACE.OLEDB.12.0

以下が出た場合

‘Microsoft.ACE.OLEDB.12.0’ プロバイダーはローカルのコンピューターに登録されていません。

AccessDatabaseEngine_X64.exeをダウンロードしてインストールしてください。

こちらからダウンロード可能です。

https://www.microsoft.com/ja-jp/download/details.aspx?id=13255

参考サイト:Microsoft.ACE.OLEDB.12.0プロバイダーはローカルコンピュータに登録されていません

原因は32ビットのofficeを動かしているため、64ビットようを使う必要があるからだそうです。

エクセル参照設定

ソリューションに参照設定で「Microsoft Excel XXX Object Library」を追加しておいてください。

参考:Excelの参照設定

関連している記事

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です