NPOI2.0导出excel之添加样式、边框和表头
//优化后导出excel
public System.IO.Stream ExcelStream(string search) //
{
var orderBusiniss = Containers.ObjectContainer.CreateObject<IOrderBusiness>();
var list = orderBusiniss.GetExcel(search); NPOI.HSSF.UserModel.HSSFWorkbook hssfworkbook = new NPOI.HSSF.UserModel.HSSFWorkbook(); NPOI.SS.UserModel.ISheet sheet1 = hssfworkbook.CreateSheet("生产计划"); //添加标题头
sheet1.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 0, 13));
NPOI.SS.UserModel.IRow rowTitle = sheet1.CreateRow(0);
rowTitle.Height = 30 * 20;//设置行高
var cellTitel = rowTitle.CreateCell(0); //给标题头添加格式
NPOI.SS.UserModel.ICellStyle styleTitle = hssfworkbook.CreateCellStyle();
styleTitle.Alignment = HorizontalAlignment.Center;//单元格水平居中
IFont fontTitle = hssfworkbook.CreateFont();//新建一个字体样式对象
fontTitle.Boldweight = short.MaxValue;//设置字体加粗样式
fontTitle.FontHeightInPoints = 16;//设置字体大小
styleTitle.SetFont(fontTitle);//使用SetFont方法将字体样式添加到单元格样式中
cellTitel.CellStyle = styleTitle; cellTitel.SetCellValue(ApplicationContext.Current.CompanyName + "公司生产计划单"); //通过反射得到需要导出的属性
Type orderExcel = typeof(OrderToExcel);
PropertyInfo[] ps = orderExcel.GetProperties();
string[] title = new string[] {
"序号",
"生产时间" ,
"订单号",
"业务员",
"工程名称",
"建筑单位",
"施工部位",
"产品信息",
"特殊要求",
"方量(M3)",
"下单时间",
"联系人",
"联系电话",
"备注",
};
//添加行头
NPOI.SS.UserModel.IRow rowHeader = sheet1.CreateRow(1); //公共样式:加边框
NPOI.SS.UserModel.ICellStyle style = hssfworkbook.CreateCellStyle();
style.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
style.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
style.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
style.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
style.Alignment = HorizontalAlignment.Center; NPOI.SS.UserModel.ICellStyle styleHeader = hssfworkbook.CreateCellStyle();
styleHeader.CloneStyleFrom(style);//克隆公共的样式
styleHeader.Alignment = HorizontalAlignment.Center;//单元格水平居中
IFont fontHeader = hssfworkbook.CreateFont();//新建一个字体样式对象
fontHeader.Boldweight = short.MaxValue;//设置字体加粗样式
styleHeader.SetFont(fontHeader);//使用SetFont方法将字体样式添加到单元格样式中 for (int i = 0; i < ps.Length + 1; i++)
{
var cellHeard = rowHeader.CreateCell(i);
cellHeard.CellStyle = styleHeader;
cellHeard.SetCellValue(title[i]);
} if (list != null)
{
//通过序列号,得到需要导出的字段
List<OrderToExcel> listExcel = list.ToObjectList<Order, OrderToExcel>();
//保存列集合的属性信息数组
PropertyInfo[] oProps = null;
for (int i = 0; i < listExcel.Count; i++)
{
NPOI.SS.UserModel.IRow rowtemp = sheet1.CreateRow(i + 2); var cellNum = rowtemp.CreateCell(0, CellType.Numeric);
cellNum.CellStyle = style;
cellNum.SetCellValue(i + 1);
oProps = ((Type)listExcel[i].GetType()).GetProperties();
for (int j = 0; j < oProps.Length; j++)
{
Type colType = oProps[j].PropertyType;//得到属性的类型
var value = oProps[j].GetValue(listExcel[i]);//得到属性的值
var cell = rowtemp.CreateCell(j + 1);
cell.CellStyle = style;
cell.SetCellValue(value == null ? "" : value.ToString());
}
} } //自动调节行宽度
for (int i = 0; i < 15; i++)
sheet1.AutoSizeColumn(i); System.IO.MemoryStream file = new System.IO.MemoryStream();
hssfworkbook.Write(file);
file.Seek(0, System.IO.SeekOrigin.Begin); return file;
} public class OrderToExcel
{
public Nullable<System.DateTime> ProductionTime { get; set; }
public string Code { get; set; }
public string BSalesman { get; set; }
public string ProjectName { get; set; }
public string ConstructionUnit { get; set; }
public string ConstructionSite { get; set; }
public string ProductName { get; set; }
public string WP { get; set; }
public Nullable<decimal> Number { get; set; }
public Nullable<System.DateTime> CreationTime { get; set; }
public string ContactPerson { get; set; }
public string ContactPhone { get; set; }
public string Remarks { get; set; }
}
之前做了导出excel功能,没有样式比较难看。最近优化了下,NPOI版本为最新版本2.0.4.1版本
优化添加:
1.添加了标题。
2.通过对象的属性来导出excel,表头添加也比较容易点。
NPOI2.0导出excel之添加样式、边框和表头的更多相关文章
- C#+Aspose.Cells 导出Excel及设置样式 (Webform/Winform)
在项目中用到,特此记录下来,Aspose.Cells 不依赖机器装没有装EXCEL都可以导出,很方便.具体可以参考其他 http://www.aspose.com/docs/display/cells ...
- C# 使用Epplus导出Excel [5]:样式
C# 使用Epplus导出Excel [1]:导出固定列数据 C# 使用Epplus导出Excel [2]:导出动态列数据 C# 使用Epplus导出Excel [3]:合并列连续相同数据 C# 使用 ...
- wpf 导出Excel Wpf Button 样式 wpf简单进度条 List泛型集合对象排序 C#集合
wpf 导出Excel 1 private void Button_Click_1(object sender, RoutedEventArgs e) 2 { 3 4 ExportDataGrid ...
- POI通用导出Excel数据(包括样式设计)
前言 前一段时间我写过通用的导入Excel,前几天也写了导出pdf格式的,还有我之前搞得导出Word,我在之前的博客也都介绍了导出和导入是一个道理,无非是一个获取一个是赋值.昨天有一位同仁看了我的Ex ...
- vue2.0 导出Excel表格数据
1.安装三个依赖包 npm install -S file-saver npm install -S xlsx npm install -D script-loader 2.在项目中创建一个文件夹(比 ...
- NPOI导出Excel,添加图片和设置格式,添加条形码
先上代码 using grproLib; using System; using System.Collections.Generic; using System.Data; using System ...
- C# 导出Excel Table td 样式
<td style="vnd.ms-excel.numberformat:@;"><s:property value="accountCode" ...
- HTML导出Excel数据类型转换样式参考
mso-number-format:"0" NO Decimals mso-number-format:"0/.000" 3 Decimals mso-numb ...
- 使用aspose.cell导出excel需要注意什么?
1.如果导出的数据源是汇总出来的,最好方法是将数据源放到缓存里面,当基本数据源变化的时候,在改变数据2.使用模板导出EXCEL,这样很多样式可以在模板文件里面直接设置,例如:默认打开页签,让列头固定3 ...
随机推荐
- 第5章 选举模式和ZooKeeper的集群安装 5-1 集群的一些基本概念
xx就是我们的master,也就是我们的主节点.心跳机制,当有一个节点挂掉之后,整个集群还是可以工作的.选举模式,我们现在的master是正常运行的,但是在某些情况下它宕机了死机了,那么这个时候它这个 ...
- html标签的显示模式(块级标签,行内标签,行内块标签)(转)
html标签的显示模式(块级标签,行内标签,行内块标签) 今天讲课的时候,讲到了html中的标签的显示模式,大致分为块级标签和行内标签.那么初学者在刚使用标签的时候会发现有些属性在一些标签上不起作 ...
- 2018多校第九场1004(HDU 6415) DP
本以为是个找规律的题一直没找出来... 题目:给你一个n*m的矩阵和1-n*m个数,问有多少种情况满足纳什均衡的点只有一个.纳什均衡点是指这个元素在所在行和所在列都是最大的. 思路:吉老师直播的思路: ...
- C++面向对象类的实例题目八
题目描述: 编写一个程序输入3个学生的英语和计算机成绩,并按照总分从高到低排序.要求设计一个学生类Student,其定义如下: 程序代码: #include<iostream> using ...
- Win10_禁用自动更新(官方版)
1> win键>输入服务>打开>找到windowsUpdate-->启动类型为-禁用 -->> 恢复失三个选项改为-->>无操作 2>win ...
- OpenNi安装示例
1.下载OpenNi https://structure.io/openni 解压,点击运行 选择安装目录,默认即可 安装过程中有弹框,选择 安装 点击 完成 在相应的安装目录下即可找到
- Struts 第一天
请简述下Struts2 的执行流程. 首先是,启动tomcat服务器,这时候会加载web.xml,当读到filter标签时,会创建过滤器对象.struts2的核心过滤器(StrutsPrepareAn ...
- 51NOD 1371填数字
传送门 分析 此题关键在于想出dp[i][j][k]代表考虑到第i行,还能放1的的共有j列,还能放2的共有k行.之后就枚举每一行是没有还是1个1还是2个1还是1个2,然后转移即可. 代码 #inclu ...
- Java 表达式解析(非原创)
因项目需要,在网上找来一套表达式解析方法,由于原来的方法太过于零散,不利于移植,现在整理在同一文件内: 文件中包含5个内部类,源码如下: import java.util.ArrayList; imp ...
- 市场上主流的BI产品的“答案之书”
本文来自网易云社区. 从20世纪80年代开始,商业智能的定义出现在人们面前,早期商业智能十分基础和杂乱,不仅仅会把数据处理放进去.还包含有一些可视化方面内容等.这个时期的BI主要的功能是支持多维分析和 ...