【C#】データベースからExcel表を出力できるアプリケーションを作成しました
はじめに
今回のアプリケーションはポートフォリオの中にC#
を含めたいと思い作成し始めしました。
このようなアプリケーションにしようと思った理由は、業務系の仕事に携わっている中で
「データベースから取ってきたデータを整形して Excel 等のファイルに出力できる」
このようなツールがあれば便利であり、需要もあるのではと考えたからです。
この記事ではアプリケーションの説明書のように機能紹介をしていきたいと思います。
以下からダウンロードすることができます。
YieldExportReport-v1.0.0.zip をダウンロードし解凍後フォルダ内の YieldExportReport.exe で起動します。
開発環境
- IDE:Visual Studio Community 2022
- OS:Windows10 21H2
- 言語:C#
- フレームワーク:.NET6
対応 OS
Windows のみ(.NET6 対応)
※.NET6 対応 Windows 一覧
また、Windows
に.NET6
がインストールされていない場合は以下のようなメッセージが表示されます。
OK をクリックしていただくか以下ページののデスクトップアプリ実行から.NET6 のランタイムインストールすると利用できます。
機能一覧
ここからは機能を紹介していきます。
ログイン画面
起動時最初の画面です。
ここにデータベース接続設定一覧が表示されます。
現在は何もありませんので追加ボタンから接続設定を新規作成します。
データベース接続
ここでデータベース接続設定を編集します。
対応データベース
- MicrosoftSQLServer
- MicrosoftOleDb
- MySQL
- PostgreSQL
今回は MySQL のテストデータベースを作成しておきましたので、そこに対して接続設定を記載します。
設定ファイルはクエリや出力を保存するファイルです。
この後作成していくので空白のままで構いません。
編集完了したらデータベースへ接続します。
メイン画面
アプリケーションの画面は 5 つの画面で構成されます。
- クエリエディタ
- レポートエディタ
- データベースツリー
- データビュー
- レポートツール
ドッキングウインドウとなっているため構成を移動することも可能です。
設定ファイル
クエリやレポート出力設定は個別にファイル管理することが可能です。
ファイルから設定保存用ファイルを新規作成します。
選択後からは適宜、保存ボタンで選択したファイルに設定が保存されます。
クエリエディタ
ここでは SQL を自由に記述します。
今回はテストデータから社員一覧を取得するような SQL を記載しています。
クエリ実行
実行ボタンで接続中のデータベースからデータを取得しデータビューに表示します。
以下のようにデータベースの社員情報がデータビューに表示されています。
データビュー右のボタンから XML,JSON,CSV,Excel の形式でデータ出力することができます。
レポート設定[全般]
データビューのデータをレポートに出力するにはレポートエディタで設定をします。
全般から出力の基本設定ができます。
出力先やファイル名,出力後の動作などを項目を用意しています。
レポート設定[テンプレート]
テンプレートから出力元の Excel ファイル選択やシート選択できます。
今回は D ドライブ直下に以下ようなテンプレートファイルを用意しました。
レポート出力設定[出力設定]
取得したデータをテンプレートのどのセルに出力するかを設定できます。
セル出力
レポートツールから出力するフィールドを設定に追加できます。
追加後、セル列に出力したいセルを入力すればそのセルへデータが出力されます。
連続出力
データをデータビュー行数だけ繰り返し出力する設定です。
テンプレートファイルのどの行から繰り返し出力するか設定します。
今回は 8 行目からデータが出力されてほしいので「8」とします。
フィールド&セルの設定もセル出力設定と同様に行うことができます。
レポート出力(分割なし)
ここまでの設定でレポートを出力してみます。
以下のように Excel ファイルが出力されました。
先ほど設定したセルにデータビューのデータが出力されています。
レポート出力(分割あり)
レポートが出力されましたが部署コード,部署名が同一セルへの出力になってるので分割して部署ごとのレポートを作成します。
シート分割
部署ごとにシートを作成してみます。
シート分割設定へ「部署名」を追加します。
さらに全般から分割設定がありますので「シート分割のみ」を選択します。
これでレポートを出力すると以下のように部署ごとにシートが作成されています。
ファイル分割
部署ごとにレポートファイルを作成してみます。
ファイル分割設定へ「部署名」を追加します。
さらに全般から分割設定がありますので「ファイル分割のみ」を選択します。
そして出力後にファイル全てを開くよりもフォルダを開いてほしいので、出力後処理「フォルダを開く」を選択します。
これでレポートを出力するとフォルダが開き、以下のように部署ごとにファイルが作成されています。
まとめ
私のポートフォリオとして内部のコード等を評価されれば良いと思っていました。
ですが作成していくと、この機能がないと他が成り立たないや使い勝手が悪いなど考えるようになりここまで仕上げるのに半年程かかってしまいました。。
100%ではないにしろ私が構想していた機能は粗方実装できましたので、これからさらにより良いアプリケーションに仕上げていけたらと思っています。
機能追加予定
- PDF や HTML での出力機能追加
- クエリではなく専用ツールを作成する
ソースコードを Git に UP しています
Discussion