S2Fisshplate.NETとは
Fisshplate.NETは、S2Container.NETやQuillには依存しておらず、汎用的に利用することができます。
S2Fisshplate.NETを使うことによって、QuillとS2Fisshaplate.NETを連携させ、インターフェースを定義するだけでFisshplate.NETの機能を使うことが可能になります。
0.1.0 ではQuillとの連携機能のみ提供しております。
Quillとの連携方法
Quillのセットアップは事前に行っておいてください。
また、S2Fisshplate.NETのセットアップを行っておきます。
Dtoの作成
まず、テンプレートに埋め込むDtoを作ります。
- プロパティは必ずpublicにしてください。
public class TestFisshplateDto { public string Title { get; set; } public List<TestItem> ItemList { get; set; } }
インターフェースの定義
次にインターフェースを定義します。
-
インターフェースには次の属性をつけて下さい。
- [Implementation]
- [Aspect(typeof(Seasar.S2Fisshplate.Interceptors.FPQuillInterceptor))]
- メソッドの戻り値は必ず「HSSFWorkbook」にしてください。
- 引数は1つにして下さい。引数が複数の場合、第1引数のみが埋め込み用データとして扱われ、他は無視されます。
-
メソッドには次の属性をつけて下さい。パラメータには、テンプレートファイルへのパスを記述します。
※0.1.1からFPTemplateFileに変更になりました! 0.1.0までのFPTemplateはdeprecatedになります。
- [[FPTemplateFile(string Path)]]
[Implementation] [Aspect(typeof(Seasar.S2Fisshplate.Interceptors.FPQuillInterceptor))] public interface TestFisshplate { [[FPTemplateFile(@"Template\FPSample.xls")]] HSSFWorkbook GetTestWb(TestFisshplateDto dto); }
テンプレートファイルの作成
テンプレートファイルを作成します。
- ファイル名は、FPTemplate属性に指定したファイル名で作成します。
- 実行ファイルから参照できる場所に配置してください。
- VisualStudioの場合、テンプレートファイルのプロパティの「出力ディレクトリにコピー」を「常にコピーする」「新しい場合はコピーする」にすることで読み込まれます。
- 引数のDtoのプロパティは「data」という名前で参照できます。
- この場合、「TestFisshplateDto.Title」は「${data.Title}」で参照されます。
ファイルの出力
呼び出し側ではこのようになります。テンプレートファイルの読み込み、解析、ファイル出力などの処理が自動で実行され、出力ファイルが戻されます。
protected TestFisshplate fisshplate; // Quillでインジェクションされます。 public void Hoge() { // QuillInjector.GetInstance().Inject(this); TestFisshplateDto dto =new TestFisshplateDto(); dto.Title = "テストです"; List<TestItem> itemList = new List<TestItem>(); TestItem item = new TestItem(); item.Date = DateTime.Now; item.Name = "1行目"; item.Num = 10; itemList.Add(item); // ・・以下、必要な数だけ明細行を追加 dto.ItemList = itemList; HSSFWorkbook wb = fisshplate.GetTestWb(dto); }
このようにして、データ埋め込み済みのHSSFWorkbookを取得する事が出来ます。
- DIの機能についての詳細は、Quillで簡単DI+AOPを参照してください。