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);
}
基于Silverlight 永久免费的仓库管理系统
日记帐系统承接定制开发管理软件 网页游戏辅助等
NPOI之使用EXCEL模板创建报表的更多相关文章
- jxls实现基于excel模板的报表
此文章是基于 搭建Jquery+SpringMVC+Spring+Hibernate+MySQL平台 一. jar包介绍 1. commons-collections-3.2.jar 2. commo ...
- ASP.NET使用NPOI加载Excel模板并导出下载
1.为什么要使用NPOI导出Excel? 一.解决传统操作Excel遇到的问题: 如果是.NET,需要在服务器端装Office,且及时更新它,以防漏洞,还需要设定权限允许.NET访问COM+,如果在导 ...
- NPOI的使用Excel模板导出
private string ExportScMeeting(DataTable source) { string templateFile = Server.MapPath(@"Excel ...
- NPOI的使用Excel模板导出 可插入到指定行
Excel模版建议把需要添加数据行的样式设置好 模版样式,导出后效果 [2017-11-22 对获取需插入数据的首行样式有时为空报错修改] /// <summary> /// 根据模版导出 ...
- 在服务端C#如何利用NPOI构建Excel模板
目前本人接触过两种模板导出的方式:(1)C#利用NPOI接口制作Excel模板,在服务端用数据渲染模板(2)在前端利用前人搭建好的框架,利用office编写xml制作模板,在客户端进行数据的渲染,导出 ...
- .Net NPOI 根据excel模板导出excel、直接生成excel
一.根据Excel模板导出excel 1.导入NPOI.dll 2.DAL中添加类ExportExcel.cs using NPOI.SS.UserModel; using System; usin ...
- ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 try.dot.net 的正确使用姿势 .Net NPOI 根据excel模板导出excel、直接生成excel .Net NPOI 上传excel文件、提交后台获取excel里的数据
ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 ASP.NET Core 从2.2版本开始,采用了一个新的名为Endpoint的路由方案,与原来的方案在使用上差别不 ...
- c#操作Excel模板,替换命名单元格或关键字形成报表
c#操作Excel模板,替换命名单元格或关键字形成报表 http://blog.sina.com.cn/s/blog_45eaa01a0102vqma.html一 建立Excel 模板文件 templ ...
- NPOI操作EXCEL(六)——矩阵类表头EXCEL模板的解析
哈哈~~~很高兴还活着.总算加班加点的把最后一类EXCEL模板的解析做完了... 前面几篇文章介绍了博主最近项目中对于复杂excel表头的解析,写得不好,感谢园友们的支持~~~ 今天再简单讲诉一下另一 ...
随机推荐
- Unity 3D 动画帧事件
前几天在项目开发中碰到一个这样的需求,RPG游戏中,特效和动画播放不同步的.假如主角在攻击NPC时,先实例化特效,后播放动画.动画毕竟是有一个时间长度的.等到动画播放攻击挥刀的那一瞬间时,特效可能早就 ...
- MS-SQL数据库备份方法
一.手动备份 打开企业管理器 --> 右键点击需要备份的数据库 --> 所有任务 --> 备份数据库 或者: 查询分析器: use master backup database 数 ...
- (转) [老老实实学WCF] 第三篇 在IIS中寄存服务
第三篇 在IIS中寄宿服务 通过前两篇的学习,我们了解了如何搭建一个最简单的WCF通信模型,包括定义和实现服务协定.配置服务.寄宿服务.通过添加服务引用的方式配置客户端并访问服务.我们对WCF的编程生 ...
- ListView小坑
ListView的addHeaderView()和addFooterView()方法需要“Call this before calling setAdapter”,否则崩溃. 但是在KITKAT(ap ...
- DBHerperl类
using System; using System.Collections.Generic; using System.Text; using System.Data; using System.D ...
- ios开发必备第三方库
引言 作为iOS开发人员,在开发App的过程中怎么会不使用第三方库呢?相信没有App是不使用第三方库的! 网络库 网络库,这是开发必备,除非你的App玩单机.现在特别火也特别好用的网络库就数AFNet ...
- JAVA 对象引用,以及对象赋值(转)
原文链接:http://zwmf.iteye.com/blog/1738574 关键字: java对象 引用 Java对象及其引用 关于对象与引用之间的一些基本概念. 初学Java时,在很长一段时间里 ...
- mysql索引之组合索引
多列索引又称组合索引,在mysql的查询操作中,我们经常会遇到多个搜索条件,如:$sql = "select * from article where content='ma4' and t ...
- javascript第一课练习
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8& ...
- PHP Warning: phpinfo(): It is not safe to rely on the system's timezone setting
错误描述: PHP Warning: phpinfo(): It is not safe to rely on the system's timezone settings. You are *re ...