欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

npoi之运用excel模板创建报表

更新时间: 2014-01-05 03:06:35 责任编辑: Author_N1

 

NPOI之使用EXCEL模板创建报表

因为项目中要用到服务器端创建EXCEL模板 无法直接调用EXCEL 查了下发现NPOI很方便很简单就实现了

其中走了点弯路 第一次弄的时候发现输出的值是文本不是数字型无法直接计算公式 然后又发现打开报表公式没有自动计算 后来都解决了 详见代码

 #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 永久免费的仓库管理系统 

日记帐系统承接定制开发管理软件 网页游戏辅助等

上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:06:35
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/18358/
本文WWW.DOC100.NET DOC100.NET版权所有。