NPOI 菜鸟实践行之根据指定的模板生成Excel 2003格式的文件 (一)

 

感谢群里的各位朋友的指导和教学,感谢Tony Qu的热心指导,感谢阿修罗兄提供的Excelhelper类

谈谈个人对Excel的理解,结合NPOI,个人水平一般般,菜鸟一只

Excel 打开后,分为sheet-文件簿,Rows-行,Cell-单元格

要基于模板生成EXCEL,首先我们要明白的是我们要填充的数据在整个Excel的sheet中是处于头,还是尾部,还是中间


我是这样理解的,如果模板是含有风格的,比如说我这种含有三行内容的,计算的话,需要的模板列应该只包含下面这个表头(模板XLS)

系統 XXXX系统数据库表名BC(XX表)
序号字  段  名  称数 据 属 性逻 辑 条 件 
 中   文英    文类型长度小数单位NULL(数 据 值 范 围)(备  注)
          
              

而我们要生成的xls最终需要是这样BC.7z

 

确定表头无需动态生成(固定的行和列),内容(行和列不确定),表尾格式(表尾头固定的行列,表尾内容行和列不确定)之后,我们就可以将代码分为生成表头,生成内容,生成表尾,接下来我就将生成内容的代码公布出来,给大家看看,这个代码是已经进行过重构的,是可以通用的哦,代码里你可以清晰的看到我生成索引内容的时候也是动态的,其他代码都是参考阿修罗兄提供的excelhelper类,如果需要查看,请到189925337(NPOI超级群)群里下载即可。

 

#region 单元格数据生成通用类private static int CreateDataMethod(ISheet sheet1, ICellStyle style, DataTable dtGetRowTable, int rowIndex, HSSFCellStyle dateStyle){foreach (DataRow row in dtGetRowTable.Rows){#region 填充内容HSSFRow dataRow = sheet1.CreateRow(rowIndex) as HSSFRow;foreach (DataColumn column in dtGetRowTable.Columns){HSSFCell newCell = dataRow.CreateCell(column.Ordinal) as HSSFCell;string drValue = row[column].ToString();#region 字段类型处理switch (column.DataType.ToString()){case "System.String": //字符串类型
                            newCell.SetCellValue(drValue);newCell.CellStyle = style;break;case "System.DateTime": //日期类型
                            DateTime dateV;DateTime.TryParse(drValue, out dateV);newCell.SetCellValue(dateV);newCell.CellStyle = dateStyle; //格式化显示break;case "System.Boolean": //布尔型bool boolV = false;bool.TryParse(drValue, out boolV);newCell.SetCellValue(boolV);newCell.CellStyle = style;break;case "System.Int16": //整型case "System.Int32":case "System.Int64":case "System.Byte":int intV = 0;int.TryParse(drValue, out intV);newCell.SetCellValue(intV);newCell.CellStyle = style;break;case "System.Decimal": //浮点型case "System.Double":double doubV = 0;double.TryParse(drValue, out doubV);newCell.SetCellValue(doubV);newCell.CellStyle = style;break;case "System.DBNull": //空值处理newCell.SetCellValue("");newCell.CellStyle = style;break;default:newCell.SetCellValue(drValue);newCell.CellStyle = style;break;}#endregion#region 插入留余空白列int iLastCell = sheet1.GetRow(4).LastCellNum + 1 - dtGetRowTable.Columns.Count;for (int i = 1; i < iLastCell; i++){HSSFCell newNullCell = dataRow.CreateCell(newCell.ColumnIndex + i) as HSSFCell;newNullCell.SetCellValue("");newNullCell.CellStyle = style;}#endregion}#endregionrowIndex++;}return rowIndex;} #endregion

int iLastCell = sheet1.GetRow(4).LastCellNum + 1 - dtGetRowTable.Columns.Count;//这个地方是根据模板表头所占数据计算的,这个是通用的留余做法。

源文件提供下载:Form1.7z

模板(带表头):表头(模板XLS)

xls:BC.7z

其实这就是一种简单的报表做法,下图所示是在实际项目当中使用的数据字典功能模块的效果图。

转载于:https://www.cnblogs.com/yzb305070/archive/2012/06/23/2483433.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/262592.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java设计模式12:装饰器模式

装饰器模式 装饰器模式又称为包装&#xff08;Wrapper&#xff09;模式。装饰器模式以多客户端透明的方式扩展对象的功能&#xff0c;是继承关系的一个替代方案。 装饰器模式的结构 通常给对象添加功能&#xff0c;要么直接修改对象添加相应的功能&#xff0c;要么派生子类来扩…

差分管电路图_最简单的单差分OCL功放电路图(四款单差分OCL功放电路设计原理图详解)...

最简单的单差分OCL功放电路图(一)本电路采用了单管输入、推挽放大和阻容耦舍的输入级&#xff0c;解决了差分管配对的难题&#xff0c;而实际电路又达到了较高的技术水平&#xff0c;是一款十分优秀的功放电路。电路原理如图2-8所示。它由三部分组成&#xff1a;输入级、中间缓…

Google Maps API 代码

阅读全文并下载&#xff1a;http://www.cckan.net/forum.php?modviewthread&tid54 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http:/…

JDBC使用案例

一、结果集中获取数据并对实体set值&#xff0c;封装成对象返回&#xff1b; 2、封装JDBC工具类 只要执行一次的&#xff0c;如读取配置文件&#xff0c;则写静态代码块&#xff1b; 异常抛出要写明方法才可以throw&#xff0c;静态代码块异常只能捕捉try catch; 类加载器两个作…

Android入门:Log介绍

一、Log类介绍 在Logcat视图中查看Android日志信息&#xff1b; (1)Log.v()&#xff1a;任意信息&#xff1b; (2)Log.e()&#xff1a;error信息&#xff1b; (3)Log.w()&#xff1a;warning信息&#xff1b; (4)Log.i()&#xff1a;提示信息&#xff1b; (5)Log.d()&#xff1…

docker启动nginx后挂了_Docker容器部署 Nginx服务

1.查找 Docker Hub 上的 nginx 镜像[rootlocalhost ~]# docker search nginx2.拉取官方的Nginx镜像[rootlocalhost ~]# docker pull nginx3.在本地镜像列表里查到 REPOSITORY 为 nginx 的镜像[rootlocalhost ~]# docker images nginxREPOSITORY TAG IMAGE ID CREATED SIZEdocke…

JAVA中的日志框架-log4j的使用

JAVA日志-使用log4j 1. log4j.jar下载 windows下载地址&#xff1a; http://www.apache.org/dyn/closer.cgi/logging/log4j/1.2.15/apache-log4j-1.2.15.zip Linux平台下的下载地址&#xff1a; http://download.chinaunix.net/download.php?id12696&ResourceID6256 把l…

childNodes详解

定义和用法 childNodes 属性返回节点的子节点集合&#xff0c;以 NodeList 对象。 提示&#xff1a;您可以使用 length 属性来确定子节点的数量&#xff0c;然后您就能够遍历所有的子节点并提取您需要的信息。 浏览器支持 所有主流浏览器都支持 childNodes 属性。 语法 element…

PreparedStatement预编译的sql执行对象

一、预编译&#xff0c;防sql注入 其中&#xff0c;设置参数值占位符索引从1开始&#xff1b;在由sql 连接对象创建 sql执行对象时候传入参数sql语句&#xff0c;在执行对象在执行方法时候就不用再传入sql语句&#xff1b; 数据库索引一般是从1开始&#xff0c;java对象一般是从…

祝贺父亲节快乐的python代码_祝福父亲节快乐的句子50句

祝福父亲节快乐的句子50句祝福父亲节快乐的句子50句导语&#xff1a;他是一棵苍天大树&#xff0c;为我们遮风挡雨&#xff0c;呵护我们健康成长。下面励志故事网小编为大家整理了祝福父亲节快乐的句子&#xff0c;希望大家喜欢。1. 老爸老爸您最棒&#xff0c;身强体壮有力量。…

Linux下Vi/Vim的使用方法

本文介绍了vi (vim)的基本使用方法&#xff0c;但对于普通用户来说基本上够了&#xff01;i/vim的区别简单点来说&#xff0c;它们都是多模式编辑器&#xff0c;不同的是vim 是vi的升级版本&#xff0c;它不仅兼容vi的所有指令&#xff0c;而且还有一些新的特性在里面。例如语法…

JDBC管理事务

一、事务概念&#xff1a;打包一起的多个步骤的业务操作&#xff0c;要么同事成功&#xff0c;要么同时失败&#xff0c;则需要用事务管理&#xff1b; 二、代码实现 转载于:https://www.cnblogs.com/wmqiang/p/11600776.html

C++标准库简介

C标准库的所有头文件都没有扩展名。C标准库的内容总共在50个标准头文件中定义&#xff0c;其中18个提供了C库的功能。 <cname>形式的标准头文件【 <complex>例外】其内容与ISO标准C包含的name.h头文件相同&#xff0c;但容纳了C扩展的功能。在 <cname>形式标…

Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (二) —— SQLite...

SQLite是一种转为嵌入式设备设计的轻型数据库&#xff0c;其只有五种数据类型&#xff0c;分别是&#xff1a; NULL&#xff1a; 空值 INTEGER&#xff1a; 整数 REAL&#xff1a; 浮点数 TEXT&#xff1a; 字符串 BLOB&#xff1a; 大数据 在SQLite中&#xff0c;并没有专门设…

netflix会员和非会员的区别_Netflix开放10部作品免费给非会员试看

DoNews 9月1日消息(记者 刘文轩)据TechCrunch消息&#xff0c;视频流媒体巨头Netflix向全球200多个国家的非付费用户免费开放10部影视作品&#xff0c;包括Netflix原创电影和电视节目。这些节目包括&#xff1a;《蒙上你的眼》(Bird Box)《宝贝老板&#xff1a;重围商界》(The …

根据企业信息化应用需求来分析工作流平台的选型

随着企业信息化建设的发展&#xff0c;选择一个能快速满足个性化需求并灵活稳健的系统架构是企业信息化建设成功的基础&#xff0c;这已经成为一个不争的事实。工作流平台软件作为一个中间件产品&#xff0c;在企业信息系统架构中对于业务流程管理、快速开发及高效维护起着相当…

excel 某个单元格不是等于空值_这些稀奇古怪的符号,却是Excel高手们常玩的!...

Excel高手的世界&#xff0c;刚接触excel的同学们&#xff0c;真还不懂。高手们在编写excel函数公式&#xff0c;经常会玩大括号({})、双减号(--)、百分号(%)、连接空值(&"")等等稀奇古怪的符号&#xff0c;看得我们是一愣愣的。当然这些进阶的思路也是excel帮助…

C语言漫谈

C语言是被使用的最广泛的一种高级语言&#xff0c;其历史相当久远。而其发展也相当神速&#xff0c; 从当初的标准C发展到后来的C。其性能也发生了很多很大的变化。C语言拥有众多的编译器&#xff0c;其中不乏优秀者众多。从当初的Turbo C引入集成化编译环境后&#xff0c;C语言…

使用git如何批量对文件进行rm操作

git add -A 它会把我们未通过 git rm 删除的文件全部stage 转自&#xff1a; http://segmentfault.com/q/1010000000095373

Cookie会话技术

java web动态资源有Servlet和JSP&#xff1b; HTTP协议是无状态的&#xff0c;即每次请求响应和其他的互补相关&#xff0c;所以要共享数据&#xff0c;需要会话技术&#xff1b; 一、概念 二、Cookie会话技术 代码写在服务器端&#xff0c;设置Cookie和发送Cookie以及接收Cook…