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 ...
随机推荐
- 【oracle】首次启动SQL Developer配置java.exe出错(Could not find jvm.cfg! )
1.环境 win7/8/8.1 x64,Oracle 11g r2,jdk7 x64 2.问题 第一次启动Oracle SQL Developer的时候会让我们填写Java.exe的路径,我在jdk ...
- powerdesigner自动将name填充到注释的脚本
我在建模的时候,希望在生成脚本的时候有注释,所以才会看到Comment列,实际上,只要你的表中的Name列不为空,运行下面的VBScript,PD会帮你自动填充注释的Comment列值. '把pd中那 ...
- 624. Maximum Distance in Arrays二重数组中的最大差值距离
[抄题]: Given m arrays, and each array is sorted in ascending order. Now you can pick up two integers ...
- VSTO的简单用法
一直听说vsto这个名词,还真不知道什么意思,今天了解了一下,原来他的全程是Visual Studio Tools For Office,说他是VBA的替身(VBA俺也不是很懂),刚才上网查询做了个例 ...
- C和C++中文件读写的区别
C中采用的主要是文件指针的办法,C++中对文件的操作主要运用了“文件流”(即非标准的输入输出)的思想 eg1": #include<stdio.h> //... FILE* fp ...
- AR# 30522:LogiCORE RapidIO - How do system_reset and link_reset work?
Description How do system_reset and link_rest work? Solution lnk_linkreset_n (input): In Xilinx SRIO ...
- appium自动化安装(二)
第二节 安装Android开发环境 如果你的环境是MAC那么可以直接跳过这一节.就像我们在用Selenium进行web自动化测试的时候一样,我们需要一个浏览器来执行测试脚本.那么移动端自动化测试,我 ...
- static的功能
static : 翻译成中文是静态的意思. 使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名,因为同名也没有关系. 在C语言中,static的 ...
- 【Arcgis android】 离线编辑实现及一些代码段
Arcgis android 离线编辑实现及一些代码段 底图添加 private String path="file:///mnt/sdcard/data/chinasimple.tpk&q ...
- c语言 参数传值和传地址
static void TestCharP(char **p) { char *q = "ssssss"; *p=q; } static void TestCharP1(char ...