前回は

Excelファイルを項目別に分割する

で、さまざまな発注先のデータがつまったExcelファイルを発注先ごとに分割するアプリをつくりました。今回は発注書のテンプレをつかって発注先ごとにExcelファイルを送ることができるようにします。

問題のテンプレですが、これをつかいます。

発注書エクセルテンプレート(無料)_タテ型_001

これだと17行から29行までを差し替えればこれをもとに発注書をつくれそうです。

まずこのテンプレートを実行ファイルがあるフォルダにコピーしておきます。ファイル名は「発注書_タテ型.xlsx」にします。

[開始]ボタンをクリックしたときの処理は前回とほとんど同じです。処理をする前にtemplateFilePathが存在するかどうか確認しています。

OutputFilesメソッドを変更しました。テンプレートのファイルのパスを第一引数、新しく作成するファイルを第二引数にして、自作メソッド OutputFile(string templateFilePath, string newFilePath, IGrouping<string, Data> group)メソッドを呼び出しています。

OutputFile(string templateFilePath, string newFilePath, IGrouping<string, Data> group)メソッドでは、テンプレートのファイルの前半部分をコピーして、そのあと発注する商品の情報を書き込み、最後にテンプレートファイルの後半部分をコピーしています。

各セルのスタイルを取得して新しく生成する発注書のセルに適用しています。

SetColomHeder(IXLWorksheet newWorksheet, int row)メソッドは発注書の項目(摘要、数量、単価、金額)をセットするためのメソッドです。スタイルはテンプレートのセル”B17″を使用しています。

SetOrderList(IXLWorksheet newWorksheet, int firstRow, IGrouping<string, Data> group)メソッドは発注する商品の情報をセットするためのメソッドです。

セルは、BからI、JからL、MからN、OからQを統合しています。またスタイルも文字か数字か、数字でも金額なにかどうかで変更しています。

SetSubtotal(IXLWorksheet newWorksheet, int rowOrderListStart, int rowOrderListEnd)メソッドは小計(税なし)を表示するためのものです。またSetConsumptionTax(IXLWorksheet newWorksheet, int rowOrderListStart, int rowOrderListEnd)とSetTotal(IXLWorksheet newWorksheet, int rowOrderListEnd, string Subtotal, string ConsumptionTax)は消費税と合計金額をセットするためのものです。

以上をセットしたら備考欄をセットすれば完成です。

GetCellFooterStart(IXLWorksheet newWorksheet, int rowOrderListEnd)メソッドは備考欄をどこへセットするかを求めるメソッドです。

これが終わったらそれ以外にも必要なデータをセルにセットしてしまえば完成です。