NPOI导出模板样式
/// <summary>
/// 导出多种车辆统计表格
/// </summary>
/// <returns></returns>
[ActionName("MoreAllImport")]
public void MoreAllImport()
{
List<CarMoreStatistics> list = TempData["MoreAllExcel"] as List<CarMoreStatistics>;
if (list == null)
{
return;
}
DataTable dt = TRSLMS.Common.Reflection.GetDisplayNameToDataTable(list);
string path = Server.MapPath("~/downloads/excel/车辆整合统计表(样表).xls");
string exName = "各种车辆统计表";
GetSheel(dt, path, exName, 4);
}
/// <summary>
/// 导出Excel数据
/// </summary>
/// <param name="dt">数据源</param>
/// <param name="path">模板路径</param>
/// <param name="exName">标题名称</param>
/// <param name="Line">第几行开始</param>
private static void GetSheel(DataTable dt, string path, string exName, int Line = 0)
{
using (FileStream fs = System.IO.File.OpenRead(path))
{
HSSFWorkbook wk = new HSSFWorkbook(fs);
fs.Close();
ISheet sheet = wk.GetSheetAt(0);
sheet.GetRow(0).GetCell(0).SetCellValue(Common.SessionManage.GROUP.NAME + exName);
IRow row = sheet.GetRow(1);
ICell cell = row.GetCell(0);
cell.SetCellType(CellType.String);
cell.SetCellValue("统计时间:" + DateTime.Now.ToString("yyyy年MM月dd日"));
NPOIHelp.FillHssfWorkbookByDataTable(dt, Line, 0, wk, 0);
NPOIHelp.ExportHSSFWorkbookByWeb(wk, exName + ".xls");
}
}
#endregion
/// <summary>
/// NPOI导出Excel
/// </summary>
public class NPOIHelp
{
/// <summary>
/// 根据数据源和偏移量填充工作表指定索引的工作薄
/// </summary>
/// <param name="dataSource">数据源</param>
/// <param name="rowOffset">行偏移量</param>
/// <param name="colOffset">列偏移量</param>
/// <param name="hssfworkbook">工作表</param>
/// <param name="sheetIndex">工作薄索引</param>
public static void FillHssfWorkbookByDataTable(DataTable dataSource, int rowOffset, int colOffset, HSSFWorkbook hssfworkbook, int sheetIndex)
{
ISheet sheet = hssfworkbook.GetSheetAt(sheetIndex);
ICellStyle cellStyle = hssfworkbook.CreateCellStyle();
//设置单元格上下左右边框线
cellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin;
cellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin;
cellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin;
cellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin;
cellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
for (int i = 0; i < dataSource.Rows.Count; i++)
{
for (int j = 0; j < dataSource.Columns.Count; j++)
{
IRow row = sheet.GetRow(i + rowOffset);
if (row == null)
row = sheet.CreateRow(i + rowOffset);
ICell newCell = row.GetCell(j + colOffset);
if (newCell == null)
{
newCell = row.CreateCell(j + colOffset);
newCell.CellStyle = cellStyle;
}
string drValue = dataSource.Rows[i][j].ToString();
string drType = dataSource.Columns[j].DataType.ToString();
switch (drType)
{
case "System.String"://字符串类型
newCell.SetCellValue(drValue);
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);
break;
case "System.Int16"://整型
case "System.Int32":
case "System.Int64":
case "System.Byte":
int intV = 0;
int.TryParse(drValue, out intV);
newCell.SetCellValue(intV);
break;
case "System.Decimal"://浮点型
case "System.Double":
double doubV = 0;
double.TryParse(drValue, out doubV);
newCell.SetCellValue(doubV);
break;
case "System.DBNull"://空值处理
newCell.SetCellValue("");
break;
default:
newCell.SetCellValue("");
break;
}
}
}
}
/// <summary>
/// 将指定的HSSFWorkbook输出到流
/// </summary>
/// <param name="workbook"></param>
/// <param name="strFileName">文件名</param>
public static void ExportHSSFWorkbookByWeb(HSSFWorkbook workbook, string strFileName)
{
using (MemoryStream ms = new MemoryStream())
{
workbook.Write(ms);
ms.Flush();
ms.Position = 0;
HttpContext curContext = HttpContext.Current;
// 设置编码和附件格式
curContext.Response.ContentType = "application/vnd.ms-excel";
curContext.Response.ContentEncoding = Encoding.Default;
curContext.Response.Charset = "";
curContext.Response.AppendHeader("Content-Disposition",
//"attachment;filename=" + HttpUtility.UrlEncode(strFileName, Encoding.Default));
"attachment;filename=" + strFileName);
curContext.Response.BinaryWrite(ms.GetBuffer());
curContext.Response.End();
}
}
}
NPOI导出模板样式的更多相关文章
- NPOI导出EXCEL样式
public void Export(DataRequest<ExportModel> request, DataResponse<dynamic> response) { t ...
- NPOI导出EXCEL部分样式不起作用
在使用NPOI导出excel的时候,设置cell样式,数据量多余6条之后,在后面几条数据没有样式(边框,对其,换行等). 原因是设置CellStyle的时候把CreateCellStyle放在循环列集 ...
- WeihanLi.Npoi 根据模板导出Excel
WeihanLi.Npoi 根据模板导出Excel Intro 原来的导出方式比较适用于比较简单的导出,每一条数据在一行,数据列虽然自定义程度比较高,如果要一条数据对应多行就做不到了,于是就想支持根据 ...
- .NET NPOI导出Excel详解
NPOI,顾名思义,就是POI的.NET版本.那POI又是什么呢?POI是一套用Java写成的库,能够帮助开发者在没有安装微软Office的情况下读写Office的文件. 支持的文件格式包括xls, ...
- 使用NPOI导出Excel文件
使用NPOI导出Excel文件,本实例使用了ASP.NET MVC. 1.使用NPOI导出Excel文件 实例:导出商品列表. 要求:1.通过NPOI导出导出商品列表信息: 2.使用Excel函数计算 ...
- NPOI导出Excel (C#) 踩坑 之--The maximum column width for an individual cell is 255 charaters
/******************************************************************* * 版权所有: * 类 名 称:ExcelHelper * 作 ...
- 基于NPOI导出和导入Excel
概述 NPOI,顾名思义,就是POI的.NET版本.NPOI就是用.NET语言编写的一套数据导出Excel的开源项目,支持XML.xls.xlsx.ppt等格式..NET不仅实现Excel导出还可以实 ...
- C# NPOI导出Excel和EPPlus导出Excel比较
系统中经常会使用导出Excel的功能. 之前使用的是NPOI,但是导出数据行数多就报内存溢出. 最近看到EPPlus可以用来导出Excel,就自己测了下两者导出上的差异. NPIO官网地址:http: ...
- NPOI导出Excel(含有超过65335的处理情况)
NPOI导出Excel的网上有很多,正好自己遇到就学习并总结了一下: 首先说明几点: 1.Excel2003及一下:后缀xls,单个sheet最大行数为65335 Excel2007 单个sheet ...
随机推荐
- 已Access为支持,书写一个C#写入的记录的方案
/// <summary> /// 读取Excel文档 /// </summary> /// <param name="Path">文件名称 ...
- Xcode 编译的哪些错误
1.error: macro names must be identifiers YourProject_prefix.pch 原因: 因为你弄脏了预处理器宏,在它处于<Multiple Val ...
- ES5特性之Object.freeze
Object.freeze方法比Object.seal方法更严格,不仅不能扩展新对象和不可重新配置属性的特性,还不能改变对象属性的值writable(不可写)
- Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.
Validation failed for one or more entities. See 'EntityValidationErrors' property for more details. ...
- 【转】【MySql】Waiting for table metadata lock原因分析
MySQL在进行alter table等DDL操作时,有时会出现Waiting for table metadata lock的等待场景.而且,一旦alter table TableA的操作停滞在Wa ...
- Tomcat6配置webdav协议
Tomcat6默认是支持webdav协议的,只是webapps目录中不带例子而已.要添加支持很简单,在webapps目录中建立webdav目录,在webdav目录中建立WEB-INF目录,加入web. ...
- 用opencv的traincascade训练检测器
#1,准备正负样本 正样本:可以一张图片上多个sample,也可以一张图片单独成一个sample,准备多个sample.生成描述文件如下所示: 负样本:只要不含正样本,任意图片都可以作为负样本,但是最 ...
- [PGM] I-map和D-separation
之前在概率图模型对概率图模型做了简要的介绍.此处介绍有向图模型中几个常常提到的概念,之前参考的多为英文资料,本文参考的是<概率图模型-原理与技术的>中译版本.很新的书,纸质很好,翻译没有很 ...
- 利用uploadify+asp.net 实现大文件批量上传。
前言 现在网上文件上传组件随便一搜都是一大堆,不过看大家一般都在用uploadify这个来上传文件.由于项目需要,我在来试了一下.因为第一次使用,也遇到了很多问题,特此记录! ------------ ...
- Windows Phone 8 开发资料
Design http://aka.ms/wp8devdesign Develop http://aka.ms/wp8devdoc Test http://aka.ms/wp8testing Publ ...