博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NPOI之使用EXCEL模板创建报表
阅读量:6972 次
发布时间:2019-06-27

本文共 3042 字,大约阅读时间需要 10 分钟。

因为项目中要用到服务器端创建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);        }

 

基于Silverlight 永久免费的仓库管理系统 

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

 

转载地址:http://hrasl.baihongyu.com/

你可能感兴趣的文章
Linux 中,如何显示 (gcc)make时实际执行命令
查看>>
每个程序员都应该了解的内存知识(2)-CPU caches
查看>>
solr error logs org.apache.solr.common.SolrException: ERROR: [doc=17] unknown field alias
查看>>
django 项目创建使用
查看>>
简单的Verilog测试模板结构
查看>>
接口数据加密
查看>>
vue-router-transiton
查看>>
Micresoft Dynamices CRM 中的Webresouce
查看>>
DevExpress之TreeList节点绑定图片
查看>>
OC分类(Category)
查看>>
【Android游戏开发十四】深入Animation,在SurfaceView中照样使用Android—Tween Animation!...
查看>>
Python函数zip-map
查看>>
Django使用邮箱进行验证操作的实现方法
查看>>
BZOJ1206虚拟内存[hash]
查看>>
查询cad库中,所有程序leg引用的点的id,需要预先处理点表和程序表
查看>>
Docker Data Center系列(五)- 使用自定义的TLS安全认证
查看>>
julia生成指定格式的字符串.jl
查看>>
转:ActivityGroup + GridView 实现Tab分页标签
查看>>
模拟实现ls-l进阶
查看>>
作业5
查看>>