Web APIサービスで作成するコントロールデータのエクスポート(2)
LinearGaugeコントロールの内容を画像としてエクスポートする
このサンプルでは、直線型ゲージを表示するためのLinearGaugeコントロールを利用した例を紹介します。まずはコントローラとしてLinearGaugeControllerを作成します。コントローラには手を入れず、デフォルトで作成されたままとします。
次にViewを実装します。「Views\LinearGauge\Index.cshtml」ファイルを作成し、次のように記述しました。
@* ComponentOne MVCコントロールの名前空間指定 *@ @using C1.Web.Mvc @{ ViewBag.Title = "LinearGaugeサンプル"; } <script type="text/javascript"> // LinearGaugeを画像としてエクスポート function exportImage() { // webapiclient.min.jsで定義されるExporterのインスタンス作成 var exporter = new wijmo.gauge.ImageExporter(); // 画像種別を取得 var imageType = $("#mySelect").val(); // 対象となるコントロールを取得 var control = wijmo.Control.getControl('#linearGauge'); // Web APIサービスのURL var url = "http://localhost:18888/api/export/image"; // エクスポートリクエストを送信 exporter.requestExport(control, url, { fileName: "exportLinearGauge", type: imageType, }); } </script> <h2>Image Export Sample</h2> @* LinearGaugeの定義 *@ @(Html.C1().LinearGauge().Id("linearGauge") .Face(fb => fb.Min(0).Max(10)) .Pointer(pb => pb.Max(5).Thickness(0.5)).Format("").ShowText(ShowText.All) .IsReadOnly(false).Step(0.5) .Ranges(items => items .Add(item => item.Min(1).Max(2).Color(System.Drawing.Color.Red)) .Add(item => item.Min(3).Max(4).Color(System.Drawing.Color.Green)) .Add(item => item.Min(7).Max(10).Color(System.Drawing.Color.Yellow)) ).ShowRanges(true) .Width(600).Height(50) ) <!-- エクスポートする画像種別 --> <select id="mySelect"> <option selected>Png</option> <option>Jpg</option> <option>Gif</option> <option>Bmp</option> <option>Tiff</option> </select> <button onclick="exportImage()" title="Export">Export</button>
エクスポート処理を実現するために、JavaScriptのexportImage関数を定義しています。ここでは、webapiclient.min.jsに定義されているエクスポート用のクラスをインスタンス化して呼び出しています。hostにはセルフホスティングしているWeb APIサービスアプリケーションを呼び出すためにlocalhost:18888としています。APIのパスは予め決められているものとなっています。
エクスポートを行うには、requestExportメソッドに対して、対象となるコントロール、APIのURL、エクスポートした結果のファイル名、画像種別を指定します。エクスポート可能な画像種別はselectで指定していますが、この種別名はwebapiclient.min.jsで定義されています。
このコントローラを呼び出すと次のように表示されます。
エクスポートの動作確認を行うには、あらかじめWeb APIサービスアプリケーションを起動しておく必要があります。Visual Studioを2つ起動するなどしてご確認ください。
この画面が表示されたら画像種別を選択してExportボタンを押下すると、指定した画像種別でゲージを画像としてダウンロードすることができます。
FlexGridコントロールの内容をExcelファイルとしてエクスポートする
次に、グリッド表示を行うFlexGridコントロールを、ExcelファイルやCSVファイルとしてエクスポートする例を紹介します。FlexGridController.csを作成してIndexメソッドを以下のように実装します。
public ActionResult Index() { // 10件のデータを取得 return View(Sale.GetData(10)); }
ここで出てきたSaleクラスはランダムな販売情報を返すためのモデルクラスで、上記の例では10件のランダムデータを返すように指定しています。
次にViewを実装します。「Views\FlexGrid\Index.cshtml」ファイルを作成し次のように記述しました。
@* Models名前空間指定 *@ @using C1WebApiClient.Models @{ ViewBag.Title = "FlexGridサンプル"; } <script type="text/javascript"> // FlexGridをExcel/CSVファイルとしてエクスポート function exportFlex() { // webapiclient.min.jsで定義されるExporterのインスタンス作成 var exporter = new c1.mvc.grid.ExcelExporter(); // ファイル種別を取得 var fileType = $("#mySelect").val(); // 対象となるコントロールを取得 var control = wijmo.Control.getControl("#flexGrid"); // Web APIサービスのURL var url = "http://localhost:18888/api/export/excel"; // エクスポートリクエストを送信 exporter.requestExport(control, url, { fileName: "exportFlexGrid", type: fileType, }); } </script> <h2>Excel Export Sample</h2> @* FlexGridの定義 *@ @(Html.C1().FlexGrid<Sale>().Id("flexGrid").Width("auto") .AutoGenerateColumns(false) .Bind(bl => bl.Bind(Model)) .CssClass("grid") .IsReadOnly(true) .Columns(bl => { bl.Add(cb => cb.Binding("ID")); bl.Add(cb => cb.Binding("Date")); bl.Add(cb => cb.Binding("Country")); bl.Add(cb => cb.Binding("Product")); bl.Add(cb => cb.Binding("Color")); bl.Add(cb => cb.Binding("Amount")); }) ) <div> <select id="mySelect"> <option selected>Xls</option> <option>Xlsx</option> <option>Csv</option> </select> <button onclick="exportFlex()" title="Export">Export</button> </div>
エクスポート処理を実現するために、JavaScriptのexportFlex関数を定義しています。エクスポートを行うには、先ほどと同様にrequestExportメソッドに対して、対象となるコントロール、APIのURL、エクスポートした結果のファイル名、ファイル種別を指定します。
このコントローラを呼び出すと次のように表示されます。
この画面が表示されたらファイル種別を選択してExportボタンを押下すると、グリッドに表示された内容をExcelやCSVファイルとしてダウンロードすることができます。
まとめ
本記事では、先日リリースされたComponentOne Studioの2015J v2の概要と、注目機能であるWeb APIを中心に紹介しました。
ゲージやグリッドの内容をファイルにエクスポートする機能が簡単に実現できることがお伝え出来たでしょうか。最近はビッグデータの流行に伴い、各種KPI指標を分析するためのツールやノウハウが広く知られるようになってきています。筆者も各種データをCSVでダウンロードし、Excelで分析する機会は増えてきました。ちょっとした手間でデータをエクスポートする機能を実装するための一助になればと思います。