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

C# エクセル取込みしてSQLでデータ更新

C#などで開発する時にエクセルの一括取込み機能を作るときがあると思います。

いちいち調べて、プログラムを組んでと言うのが面倒なので備忘録として残しておきます。

機能としては「検索」と「エクセル取込更新」の二つの機能があります。

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

データベース(SQLite)と取り込み用のエクセルも入っているのでダウンロードしてもらえればすぐに実行して試すことができます。

デモンストレーションで動かした動画を載せておきます。

開発環境

開発環境はVisualStudio2015

データベースはSQLiteです。

VisualStudio2015のインストール

開発環境はVisualStudio2015なのでインストールが必要です。

設定は特に必要なく、標準インストールで良いです。

1時間くらいかかります。

こちらからダウンロードできます。

Visual Studio 2015(Community)

DB.Browser.for.SQLiteのインストール

SQLiteは専用ソフトがないとデータベースを開いて中を見ることができません。

開くとこんな感じで見ることができます。

こちらからダウンロードできます。

SQLite DB.Browser

エクセル取込み更新のコード

フォーム画面のプログラムは以下です。

※以下のソースはここでは書いていませんので、必要あれば、ダウンロードをお願いします。

・DBを更新や検索するSQLのファイル

・SQLiteのDBへアクセスしたり、更新する部品を書いたファイル

解説

エクセルをdatatableに取込み

41行目でエクセルを読み込んで、datatableに取込んでいます。

58行目のgetDataTableFromExcelメソッドでエクセルの内容をSELECT * で全件取得し、datatableに格納させています。

以下のエラーが出る可能性があります。

‘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ビットようを使う必要があるからだそうです。

 

エクセルを立上げずに読取る方法も紹介しています。

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

datatableのデータを使ってDB更新

45行目~48行目でdatatableのレコード分ループして更新しています。

1行ずつdatarowに入った値を元にDBを更新するSQLを発行しています。

dataAccess.updateSupplier(dr);メソッドの中身は以下のように記載しています。

更新後のデータを表示

56行目~60行目で更新後のデータを検索し、表示しています。

更新結果

更新前の状態で検索をすると以下の状態です。

以下の内容でtel列fax列をエクセル更新します。

エクセル取込更新ボタン後は以下が表示されます。

参照設定

SQLite

SQLite.dllがあるので、参照設定追加をしてください。

dllは「~UpdateDatabaseByExcel\SQLite\System.Data.SQLite.dll」のパスに配置されています。

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

COMMENT

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