NPOIのEXCELテンプレートによるレポート作成
3619 ワード
プロジェクトでサーバ側でEXCELテンプレートを作成するためEXCELを直接呼び出すことができないので調べてみるとNPOIが便利で簡単に実現できます
ここで、カーブを曲がって初めてやったときに出力された値がテキストであることに気づきました.数値型ではありません.数式を直接計算できません.また、レポートを開く式が自動的に計算されていないことに気づきました.後で詳細コードを解決しました.
セル値の設定方法
http://www.shenou123.com/
Silverlightベースの永久無料倉庫管理システム
仕訳システムはカスタム開発管理ソフトウェアのウェブゲーム支援などを受ける
ここで、カーブを曲がって初めてやったときに出力された値がテキストであることに気づきました.数値型ではありません.数式を直接計算できません.また、レポートを開く式が自動的に計算されていないことに気づきました.後で詳細コードを解決しました.
#region
using (FileStream file = new FileStream(@"C:\Inetpub\wwwroot\ClientBin\RptBasic\Rpt_mrp_DepInOut.xls", FileMode.Open, FileAccess.Read))
{
NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook(file);
NPOI.SS.UserModel.ISheet sheet = book.GetSheet("Sheet1");
ExcelSetValue(sheet, 0, 0, dt.Rows[0]["myconame"].ToString() + kind);
ExcelSetValue(sheet, 3, 1, dt.Rows[0]["coname"].ToString());
ExcelSetValue(sheet, 3, 3, dt.Rows[0]["Tel"].ToString());
ExcelSetValue(sheet, 3, 6, dt.Rows[0]["sNum"].ToString());
ExcelSetValue(sheet, 4, 1, dt.Rows[0]["Address"].ToString());
ExcelSetValue(sheet, 4, 3, dt.Rows[0]["Lineman"].ToString());
ExcelSetValue(sheet, 4, 6, dt.Rows[0]["sdate"].ToString());
ExcelSetValue(sheet, 28, 4, dt.Rows[0]["AuditMan"].ToString());
ExcelSetValue(sheet, 28, 7, dt.Rows[0]["upby"].ToString());
int row = 7;
for (int i = 0; i < dtd.Rows.Count; i++)
{
ExcelSetValue(sheet, i + row, 0, dtd.Rows[i]["sNum"].ToString());
ExcelSetValue(sheet, i + row, 1, dtd.Rows[i]["itemname"].ToString());
ExcelSetValue(sheet, i + row, 02, dtd.Rows[i]["model"].ToString());
ExcelSetValue(sheet, i + row, 03, dtd.Rows[i]["unit"].ToString());
ExcelSetValue(sheet, i + row, 04, dtd.Rows[i]["num"].ToString());
ExcelSetValue(sheet, i + row, 05, dtd.Rows[i]["price"].ToString());
ExcelSetValue(sheet, i + row, 06, dtd.Rows[i]["sum"].ToString());
ExcelSetValue(sheet, i + row, 07, dtd.Rows[i]["remark"].ToString());
}
sheet.ForceFormulaRecalculation = true;
//
using (FileStream f = new FileStream(@"C:\Inetpub\wwwroot\ClientBin\Rpt\" + filename + ".xls", FileMode.Create, FileAccess.ReadWrite))
{
book.Write(f);
}
}
#endregion
セル値の設定方法
protected void ExcelSetValue(NPOI.SS.UserModel.ISheet sheet, int Row, int Cell,string sValue)
{
if (sheet.GetRow(Row) == null)
sheet.CreateRow(Row);
if (sheet.GetRow(Row).GetCell(Cell) == null)
sheet.GetRow(Row).CreateCell(Cell);
double d;
if (double.TryParse(sValue, out d))
{
sheet.GetRow(Row).GetCell(Cell).SetCellValue(d);
}
else
sheet.GetRow(Row).GetCell(Cell).SetCellValue(sValue);
}
http://www.shenou123.com/
Silverlightベースの永久無料倉庫管理システム
仕訳システムはカスタム開発管理ソフトウェアのウェブゲーム支援などを受ける