CSVファイルから報告書テキストを読み込もう(2)
CSVファイルを設定する
ActiveReportsへのデータソース(データの供給元)の指定は、「ActiveReports レポートエクスプローラ」で行います。
[ActiveReportsレポートエクスプローラ]ウィンドウが開いたら、[データソース]を右クリックして追加を選びます。
今回はCSVファイルからデータを読み込むので、CSVデータソースを選択して、ファイルパスにCSVファイルを指定してあげるとファイルの内容がすぐにプレビューで確認できます。ヘッダの有無や、デリミタなどの設定もダイアログから選ぶだけで変更できるので、簡単にさまざまな形式のCSVに対応できます。
設定が正しければデータソースの中にデータセットが自動的に追加されて、CSVの項目名も自動設定されます。
CSVの項目と帳票定義項目を紐付ける
CSVファイルの内容を読み込めるようになったら、帳票定義体上の項目とCSVの項目を結びつけます。印字領域に合わせてTextBoxを配置して、Valueプロパティにドロップダウンリストから項目を選択します。ここで式を指定してファイル内容を変換して印字することも可能です。
印字プレビューの確認
ActiveReportsは、プログラムを実行しなくてもデザイナのプレビュー機能により、実際にCSVファイルの値を読み込んで印字イメージを確認できます。
プログラムコードの作成
開発環境での動作であれば、「ActiveReports 11.0J RDLレポートアプリケーション」より新規プロジェクトを作った場合は、自動生成されたコードのrdlxファイル名の修正だけで動作させることができます。
private void Form1_Load(object sender, EventArgs e) { viewer1.LoadDocument(Application.StartupPath + @".\Sheet2.rdlx"); }
しかし、このままでは帳票定義体の中に絶対パスでCSVファイル名が定義されているため、実行時もCSVファイルが開発環境で指定した場所と同じ場所になければなりません。
そこでアプリからCSVファイルの場所を指定できるようにします。
このサンプルではApplication.StartupPathにCSVファイルを配置する前提でコードを作成します。まず、ソリューションエクスプローラでCSVファイルをプロジェクトに追加し、そのプロパティで「常にコピーする」にしておきます。
準備が整ったら次のようにコードを修正します。
private void Form1_Load(object sender, EventArgs e) { var rptPath = new System.IO.FileInfo(Application.StartupPath + @".\Sheet2.rdlx"); var rpt = new GrapeCity.ActiveReports.PageReport(rptPath); rpt.Report.DataSources[0].ConnectionProperties.ConnectString = "Path=" + Application.StartupPath + ".\\\\Data.csv;Encoding=shift_jis;Locale=ja-JP;TextQualifier=\";ColumnsSeparator=,;RowsSeparator=\\r\\n;HasHeaders=True"; var runtime = new GrapeCity.ActiveReports.Document.PageDocument(rpt); viewer1.LoadDocument(runtime); }
このようにデータソースの中のConnectionStringの内容を変更することで読み込むCSVファイルを変更できます。
アプリの実行
コードが完成したらさっそく実行して確認してみます。ここまでの手順が正しければ、プレビューと同じ内容が画面に表示されます。