ページにJSビューワを組み込む
以上でレポートの設計は終わりです。このレポートをブラウザで表示するため、ページにJSビューワを組み込みます。
JSビューワのコピー
JSビューワは、次の2つのファイルで構成されます。
- jsViewer.min.css
- jsViewer.min.js
この2つのファイルは、ActiveReports for .NETをインストールしたフォルダのJSViewer以下(C:\Program Files (x86)\ActiveReportsNET16\Deployment\JSViewer)に含まれているので、この2つのファイルをwwwroot以下にコピーします。ここでは、それぞれcssフォルダ、jsフォルダの下にコピーします。
ページへの組み込み
ページに、JSビューワを組み込みます。ここでは、トップページであるPagesフォルダのIndex.cshtmlに組み込むことにします。リスト2のように修正します。
リスト2では、表示領域を次のように「viewer-id」というID値を設定したdiv要素として用意しています。
<div id="viewer-id" style="width: 1200px; height: 100vh;"> </div>
ここに次のようなJavaScriptのコードで、JSビューワを埋め込みます。element属性には、差し込み先のID値、つまり、上記のdiv要素に指定したIDを指定します。reportIDにはレポートファイル名を指定します。
その他のオプションについては、公式ドキュメントの「JavaScriptでJSビューワの操作」を参照してください。
<script type="text/javascript"> GrapeCity.ActiveReports.JSViewer.create({ element: '#viewer-id', reportService: { url: 'api/reporting', }, reportID: 'PageReport.rdlx', settings: { zoomType: 'FitPage' }, }); </script>
@page @model IndexModel @{ ViewData["Title"] = "Home page"; } <!DOCTYPE html> <html lang="ja"> <head> <title>ActiveReportsのサンプル</title> <link rel="stylesheet" href="css/jsViewer.min.css" /> </head> <body> <!-- 表示する領域--> <div id="viewer-id" style="width: 1200px; height: 100vh;"> </div> <!-- 上記の領域にJSビューワを設定する --> <script src="js/jsViewer.min.js"></script> <script type="text/javascript"> GrapeCity.ActiveReports.JSViewer.create({ element: '#viewer-id', reportService: { url: 'api/reporting', }, reportID: 'PageReport.rdlx', settings: { zoomType: 'FitPage' }, }); </script> </body> </html>
コンテナの調整
いったん、これでビルドして確認します。
JSビューアが表示されて、帳票が表示されますが、文字が切れています。これは、Linuxコンテナに対して、まだフォントをインストールしていないのが原因です。
最後の作業として、コンテナにフォントをインストールします。Visual Studioでプロジェクト内に作られているDockerfileファイルを開きます。デフォルトでは、次のように構成されています。
#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging. FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base WORKDIR /app EXPOSE 80 FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build WORKDIR /src COPY ["ActiveReports-Example1/ActiveReports-Example1.csproj", "ActiveReports-Example1/"] RUN dotnet restore "ActiveReports-Example1/ActiveReports-Example1.csproj" COPY . . WORKDIR "/src/ActiveReports-Example1" RUN dotnet build "ActiveReports-Example1.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "ActiveReports-Example1.csproj" -c Release -o /app/publish /p:UseAppHost=false FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "ActiveReports-Example1.dll"]
この最初のコンテナに対して、IPAフォントを組み込みます。
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base WORKDIR /app EXPOSE 80
IPAフォントは、「fonts-ipafont-gothic」(IPAゴシック)のパッケージで提供されているので、apt-getでインストールします。また、言語を日本語(ja_JP.UTF-8)に変更します。具体的には、リスト3のように変更します。
下記で指定している「libdgiplus」は、GDI+をサポートするためのライブラリで、セクションレポートを作る際に必要となるライブラリです。ページレポートの場合は必要ありませんが、ここでは念のため入れておきます。
# フォントをインストールし、言語を日本語にする FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base WORKDIR /app RUN apt-get update \ && apt-get install -y \ fonts-ipafont-gothic \ libgdiplus\ locales\ && apt-get clean \ && apt-get autoremove -y \ && rm -rf /var/lib/apt/lists/* RUN sed -i -E 's/# (ja_JP.UTF-8)/\1/' /etc/locale.gen \ && locale-gen ENV LANG ja_JP.UTF-8 EXPOSE 80 # 以下は変更なし FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build WORKDIR /src COPY ["ActiveReports-Example1/ActiveReports-Example1.csproj", "ActiveReports-Example1/"] RUN dotnet restore "ActiveReports-Example1/ActiveReports-Example1.csproj" COPY . . WORKDIR "/src/ActiveReports-Example1" RUN dotnet build "ActiveReports-Example1.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "ActiveReports-Example1.csproj" -c Release -o /app/publish /p:UseAppHost=false FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "ActiveReports-Example1.dll"]
帳票の完成
以上で完成です。実行すると、帳票が表示されます。作成された帳票は、もちろんページ送りもできますし、印刷もできます。
まとめ
ActiveReports for .NETは、今回説明したように、データソースを指定して、それをどこに配置するかをデザイナで指定するだけで、簡単に帳票が作れます。
今回は利用していませんが、条件を指定してデータをフィルタする機能もあります。また印刷せずに、ExcelやWord、PDFなどにエクスポートしたデータを送ることもできるため、帳票のみならず、さまざまなデータのエクスポータとしても活用できます。