SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

クラウド時代にマッチする、ドキュメント生成・更新APIライブラリ「DioDocs(ディオドック)」(AD)

【DioDocs帳票生成ハンズオン】強力な新機能「テンプレート構文」を使ってみる

  • X ポスト
  • このエントリーをはてなブックマークに追加

Hello, DioDocs!

 ではハンズオンを開始します。まずはExcelからPDFを作成してみましょう。Visual Studioを起動して新しいプロジェクトを作成してください。

「新しいプロジェクトの作成」画面
「新しいプロジェクトの作成」画面

 「コンソール」アプリケーションを検索し、その中から「コンソールアプリ(.NET Core)」でC#のプロジェクトテンプレートを選択し「次へ」を選択してください。

プロジェクト名の設定
プロジェクト名の設定

 続いてプロジェクト名に「HelloDioDocs」と入力して、プロジェクトを「作成」します。この段階で「F5」キーを押してデバッグ実行し、次のように表示されることを確認しておきましょう。

デバッグ コンソールの画面
デバッグ コンソールの画面

 動作しましたね? ではDioDocsを試していきましょう!

 まずはNuGetサーバーからDioDocsのライブラリをダウンロード・適用します。「HelloDioDocs」プロジェクトの「依存関係」を右クリックし、「NuGetパッケージの管理」を選択します。

「NuGetパッケージの管理」を選択
「NuGetパッケージの管理」を選択

 続いて「参照」タブで「DioDocs」と入力して検索し、「Grapecity.DioDocs.Excel.ja」を選択したのち「インストール」します。バージョンはスクリーンショット上のものではなく、最新版を利用してください。

「Grapecity.DioDocs.Excel.ja」をインストール
「Grapecity.DioDocs.Excel.ja」をインストール

 続いてテンプレートとなるExcelファイルを作成します。今回はベースとなるExcelファイルを用意してあります。以下からダウンロードしてください。

 ダウンロードしたファイルをプロジェクト直下にコピーし、プロパティの「出力ディレクトリにコピー」を「新しい場合はコピーする」に変更してください。

「出力ディレクトリにコピー」を「新しい場合はコピーする」に変更
「出力ディレクトリにコピー」を「新しい場合はコピーする」に変更

 では実際にDioDocsを使ってみましょう。以下がHelloDioDocsプログラムの全体です。

using GrapeCity.Documents.Excel;

namespace HelloDioDocs
{
    class Program
    {
        static void Main(string[] args)
        {
            var workbook = new Workbook();
            workbook.Open("Template.xlsx");

            workbook.Worksheets[0].Range["B5"].Value = "Hello, DioDocs!";

            workbook.Save("Invoice.pdf", SaveFileFormat.Pdf);
        }
    }
}

 順に説明していきましょう。

 まず先頭でDioDocsの名前空間に対してusingを宣言しています。

using GrapeCity.Documents.Excel;

 続いてWorkbookオブジェクトを生成してExcelファイルを開きます。

var workbook = new Workbook();
workbook.Open("Template.xlsx");

 そして開かれたワークブックの先頭のシートの「B5」セルに対して、文字列を設定します。DioDocsのオブジェクト構造はVBAやVSTOのオブジェクト構造と非常に近しくなっており、それらの経験がある方には理解しやすい設計となっていることが見て取れるかと思います。

workbook.Worksheets[0].Range["B5"].Value = "Hello, DioDocs!";

 最後にInvoice.pdfという名称のPDFファイルで保存しています。

workbook.Save("Invoice.pdf", SaveFileFormat.Pdf);

 以下がテンプレートとなったExcelファイルと、そこから生成されたPDFファイルです。

テンプレートとなったExcelファイルと生成されたPDFファイル
テンプレートとなったExcelファイルと生成されたPDFファイル

 御中の左側、企業名の領域に「Hello, DioDocs!」という文字が設定された上でPDF化されていることが見て取れます。

 C#とExcelの一般的な知識だけで、多くのことができそうだということを感じていただけたのではないでしょうか?

テンプレート構文

 さて、先の例ではExcelに明示的に値を設定しに行きました。

 これはこれで悪くはないのですが、ExcelのレイアウトとC#のプログラムが密結合してしまっており、セルを1つ下に移動したいといった、些細なレイアウト修正でもプログラムの改修が発生してしまいます。

 こういったレイアウトとロジックを分離する手段として、一般的なユーザーインターフェイスを構築するためのアーキテクチャとしては、近年ではバインディングという手法がよく利用されます。.NETだとWPFなどで利用されていますよね。

 DioDocs V3Jではデータ構造とレイアウトを分離するため、バインディングと類似した「テンプレート構文」が新たに導入されました。これは非常に強力な機能です。

 過去の記事で、ExcelとC#コードを疎結合にするための実装例を紹介しましたが、今後は基本的にテンプレート構文を利用していくのが良いでしょう。

 では早速テンプレート構文を利用して、ハンズオンを進めましょう。

次のページ
データソース

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
クラウド時代にマッチする、ドキュメント生成・更新APIライブラリ「DioDocs(ディオドック)」連載記事一覧

もっと読む

この記事の著者

中村 充志(リコージャパン株式会社)(ナカムラ アツシ)

 Microsoft MVP for Visual Studio and Development Technologies リコージャパン株式会社 金融事業部 金融ソリューション開発部所属。 エンタープライズ領域での業務システム開発におけるアプリケーション アーキテクト・プログラマおよび中間管理職。 業務ではWPFおよびASP.NETを用いた業務システム開発が中心。 SI案件において、テスト・保守容易性を担保した、アーキテクチャ構築を得意としている。 GitHub:https://github.com/nuitsjp Twitter:@nuits_jp 著書 『Essential Xamarin ネイティブからクロスプラットフォームまで モバイル.NETの世界』(共著) 『Extensive Xamarin ─ひろがるXamarinの世界─』(共著)

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/12255 2020/05/28 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング