はじめに
これまで何回かにわたり、グレープシティの「DioDocs」という製品を紹介してきました。
- .NET向けExcel・PDF操作ライブラリ「DioDocs」の衝撃! その魅力に迫る
 - .NET向けExcel・PDF操作ライブラリ「DioDocs」を使ったアプリケーション構築~究極に軽量な帳票生成環境を手に入れる~
 - DioDocsとAzure Functionsで帳票生成サービスを作ろう!
 
2019年12月には新しいバージョンであるV3Jがリリースされ、非常に強力な「テンプレート構文」が新たに追加されました。
そこで今回は、このテンプレート構文を利用した、誰でも実施できるハンズオンテキストとして本稿を執筆しました。誰でもExcelのテンプレートファイルから、PDF帳票を簡単に生成することができます。
試用はユーザー登録なども必要なく、NuGetからインストールするだけで無料で利用できます。さぁ! Visual Studioを開いて、記事を読みながらDioDocsを実際に体験してみましょう!
ハンズオンのゴール
データベースからデータを取得して、大量の帳票を一括生成することを可能とします。しかも、これ以上なく簡単に。
以下のようなテンプレートとなるExcelファイルを用意し
 こんな簡単なコードを実行すると
using var command =
    new SqlCommand(
        File.ReadAllText("SelectInvoices.sql"),
        connection);
using var dataTable = new DataTable();
dataTable.Load(command.ExecuteReader());
var workbook = new Workbook();
workbook.Open("Template.xlsx");
workbook.AddDataSource("Invoice", dataTable);
workbook.ProcessTemplate();
workbook.Save("Invoice.pdf", SaveFileFormat.Pdf);
  以下の通り、複数ページのPDF帳票が簡単に生成できます。
 DioDocsは、日々使い慣れているExcelのスキルに、ほんの少しDioDocsのエッセンスを身につけるだけで、PDF帳票が簡単に生成できるようになる魅力のライブラリです。
ハンズオン概略
対象者
本ハンズオンは以下の方を対象としています。
- 簡単なC#プログラムを書いたことがある
 - 帳票生成に興味がある
 - プログラムからExcelやPDFを操作すること興味がある
 
環境
本ハンズオンの環境は以下の通りです。
- Windows 10
 - .NET Core 3.1
 - Visual Studio 2019
 - Docker Desktop
 
Dockerは帳票生成に利用するテストデータを取得するSQL Serverの実行に利用します。簡単なコマンドをいくつか叩くだけです。
誰でも利用可能な形で記載してあります。不慣れでもまったく問題ありません。
ハンズオンコンテンツ
ハンズオンの完成形はGitHub上で公開しています。
詰まった方は、適宜こちらを参考にしてください。

              
              
                          
                          
                          
                          
                          
                          
                          
                          
                          
                          
                          
                          
                          
                          
                          
                          
                          
                          
                          
                          
                          
                          
                          
                          
                              
                              
                              
                              
                              
                              
                              
                              
                              
                              
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
															
														
															
														
															
														
    
    
    
    
    
													
													
													
													
													
										
									
                    