完整代码如下
using System;
using System.Collections.Generic;
using System.Data;
using System.Text;
using NPOI;
using NPOI.HPSF;
using NPOI.HSSF;
using NPOI.HSSF.UserModel;
using NPOI.HSSF.Util;
using NPOI.POIFS;
using NPOI.Util;
using System.IO;
using NPOI.XWPF.UserModel;
using NPOI.XSSF.UserModel;
using System.Web;
using NPOI.SS.UserModel; namespace Public
{
/// <summary>
/// 数据导出-NPOIHelp
/// </summary>
public class NPOIHelp
{ #region 数据按固定模板导出 /*
*
* 调用使用案例
* 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("测试");
//设置列属性
IRow row = sheet.GetRow(1);
ICell cell = row.GetCell(0);
cell.SetCellType(CellType.String);
cell.SetCellValue("统计单位:" + (System.Web.HttpContext.Current.Session["GG"] as GROUP).NAME + str + "统计时间:" + DateTime.Now.ToString("yyyy年MM月dd日"));
ExportWorkBook(xxx,xx,xxx);
}
*
*
* **/ /// <summary>
/// 根据数据源按固定模板数据填充
/// </summary>
/// <param name="dataSource">数据源</param>
/// <param name="hssfworkbook">工作簿</param>
/// <param name="strFileName">下载名称.xls</param>
/// <param name="rowOffset">偏移行数</param>
/// <param name="colOffset">偏移列数</param>
/// <param name="sheetIndex">工作薄索引</param>
public static void ExportWorkBook(DataTable dataSource, HSSFWorkbook hssfworkbook, string strFileName, int rowOffset = , int colOffset = , 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 = ; i < dataSource.Rows.Count; i++)
{
for (int j = ; j < dataSource.Columns.Count; j++)
{
IRow row = sheet.GetRow(i + rowOffset); if (row == null)
row = sheet.CreateRow(i + rowOffset);
NPOI.SS.UserModel.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();
#region 数据类型 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 = ;
int.TryParse(drValue, out intV);
newCell.SetCellValue(intV);
break;
case "System.Decimal"://浮点型
case "System.Double":
double doubV = ;
double.TryParse(drValue, out doubV);
newCell.SetCellValue(doubV);
break;
case "System.DBNull"://空值处理
newCell.SetCellValue("");
break;
default:
newCell.SetCellValue("");
break;
} #endregion
}
} //提供下载程序
ExportHSSFWorkbookByWeb(hssfworkbook, null, strFileName); } #endregion #region NPOI- 数据导出 xls /**
*
* 调用使用案例
* DataTable dt = new DataTable();
dt.Columns.Add("编号", typeof(string));
DataRow dr = dt.NewRow();
dr[0] = 1;
dt.Rows.Add(dr);
Public.NPOIHelp.ExportXls("/emplate/AdministrationList/Excel/Book1.xls", dt, "一般案件管理.xls");
*
*
* ***/ /// <summary>
/// 数据导出.xls -wps
/// </summary>
/// <param name="localFilePath">模板路径[虚拟路径]</param>
/// <param name="dtSource">数据源 data</param>
/// <param name="downLoadName">下载名称</param>
public static void ExportXls(string localFilePath, DataTable dtSource, string downLoadName, int rowIndex = )
{
localFilePath = HttpContext.Current.Server.MapPath("~" + localFilePath);
if (!File.Exists(localFilePath))
new AccessViolationException("模板不存在"); HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet(); HSSFCellStyle dateStyle = (HSSFCellStyle)workbook.CreateCellStyle();
HSSFDataFormat format = (HSSFDataFormat)workbook.CreateDataFormat();
dateStyle.DataFormat = format.GetFormat("yyyy-mm-dd"); //取得列宽
int[] arrColWidth = new int[dtSource.Columns.Count];
foreach (DataColumn item in dtSource.Columns)
{
arrColWidth[item.Ordinal] = Encoding.GetEncoding().GetBytes(item.ColumnName.ToString()).Length;
} for (int i = ; i < dtSource.Rows.Count; i++)
{
for (int j = ; j < dtSource.Columns.Count; j++)
{
int intTemp = Encoding.GetEncoding().GetBytes(dtSource.Rows[i][j].ToString()).Length;
if (intTemp > arrColWidth[j])
{
arrColWidth[j] = intTemp;
}
}
} foreach (DataRow row in dtSource.Rows)
{
#region 新建Sheet,填充列头,样式
if (rowIndex == || rowIndex == )
{
if (rowIndex != )
{
sheet = (HSSFSheet)workbook.CreateSheet();
} #region 列头及样式
{
HSSFRow headerRow = (HSSFRow)sheet.CreateRow();
HSSFCellStyle headStyle = (HSSFCellStyle)workbook.CreateCellStyle();
headStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
HSSFFont font = (HSSFFont)workbook.CreateFont();
font.FontHeightInPoints = ;
font.Boldweight = ;
headStyle.SetFont(font);
foreach (DataColumn column in dtSource.Columns)
{
headerRow.CreateCell(column.Ordinal).SetCellValue(column.ColumnName);
headerRow.GetCell(column.Ordinal).CellStyle = headStyle;
//设置列宽
sheet.SetColumnWidth(column.Ordinal, (arrColWidth[column.Ordinal] + ) * );
} }
#endregion
rowIndex = ;
}
#endregion #region 填充内容
HSSFRow dataRow = (HSSFRow)sheet.CreateRow(rowIndex);
foreach (DataColumn column in dtSource.Columns)
{
HSSFCell newCell = (HSSFCell)dataRow.CreateCell(column.Ordinal); string drValue = row[column].ToString(); switch (column.DataType.ToString())
{
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 = ;
int.TryParse(drValue, out intV);
newCell.SetCellValue(intV);
break;
case "System.Decimal"://浮点型
case "System.Double":
double doubV = ;
double.TryParse(drValue, out doubV);
newCell.SetCellValue(doubV);
break;
case "System.DBNull"://空值处理
newCell.SetCellValue("");
break;
default:
newCell.SetCellValue("");
break;
}
}
#endregion
rowIndex++;
} //模板文件
string path = HttpContext.Current.Server.MapPath(string.Format("~/Template/AdministrationList/Excel{0}.xls", Public.Property.getDateString));
using (FileStream filess = new FileStream(path, FileMode.Create))
{
workbook.Write(filess);
workbook.Close();
} ExportHSSFWorkbookByWeb(workbook, null, downLoadName); } #endregion #region NPOI- 数据导出 xlsx /**
*
* 调用使用案例
* DataTable dt = new DataTable();
dt.Columns.Add("编号", typeof(string));
DataRow dr = dt.NewRow();
dr[0] = 1;
dt.Rows.Add(dr);
Public.NPOIHelp.ExportXls("/emplate/AdministrationList/Excel/Book1.xls", dt, "一般案件管理.xls");
*
*
* ***/ /// <summary>
/// 导出Xlsx
/// </summary>
/// <param name="localFilePath">文件保存路径[虚拟路径]</param>
/// <param name="dtSource">数据源</param>
public static void ExportXlsx(string localFilePath, DataTable dtSource, string fileName)
{
localFilePath = HttpContext.Current.Server.MapPath("~" + localFilePath);
if (!File.Exists(localFilePath))
new AccessViolationException("模板不存在"); XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = (XSSFSheet)workbook.CreateSheet(); XSSFCellStyle dateStyle = (XSSFCellStyle)workbook.CreateCellStyle();
XSSFDataFormat format = (XSSFDataFormat)workbook.CreateDataFormat();
dateStyle.DataFormat = format.GetFormat("yyyy-mm-dd"); //取得列宽
int[] arrColWidth = new int[dtSource.Columns.Count];
foreach (DataColumn item in dtSource.Columns)
{
arrColWidth[item.Ordinal] = Encoding.GetEncoding().GetBytes(item.ColumnName.ToString()).Length;
}
for (int i = ; i < dtSource.Rows.Count; i++)
{
for (int j = ; j < dtSource.Columns.Count; j++)
{
int intTemp = Encoding.GetEncoding().GetBytes(dtSource.Rows[i][j].ToString()).Length;
if (intTemp > arrColWidth[j])
{
arrColWidth[j] = intTemp;
}
}
}
int rowIndex = ;
foreach (DataRow row in dtSource.Rows)
{
#region 新建表,填充列头,样式
if (rowIndex == || rowIndex == )
{
if (rowIndex != )
{
sheet = (XSSFSheet)workbook.CreateSheet();
} #region 列头及样式
{
XSSFRow headerRow = (XSSFRow)sheet.CreateRow();
XSSFCellStyle headStyle = (XSSFCellStyle)workbook.CreateCellStyle();
headStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center;
XSSFFont font = (XSSFFont)workbook.CreateFont();
font.FontHeightInPoints = ;
font.Boldweight = ;
headStyle.SetFont(font);
foreach (DataColumn column in dtSource.Columns)
{
headerRow.CreateCell(column.Ordinal).SetCellValue(column.ColumnName);
headerRow.GetCell(column.Ordinal).CellStyle = headStyle;
//设置列宽
sheet.SetColumnWidth(column.Ordinal, (arrColWidth[column.Ordinal] + ) * );
}
}
#endregion
rowIndex = ;
}
#endregion #region 填充内容
XSSFRow dataRow = (XSSFRow)sheet.CreateRow(rowIndex);
foreach (DataColumn column in dtSource.Columns)
{
XSSFCell newCell = (XSSFCell)dataRow.CreateCell(column.Ordinal); string drValue = row[column].ToString(); switch (column.DataType.ToString())
{
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 = ;
int.TryParse(drValue, out intV);
newCell.SetCellValue(intV);
break;
case "System.Decimal"://浮点型
case "System.Double":
double doubV = ;
double.TryParse(drValue, out doubV);
newCell.SetCellValue(doubV);
break;
case "System.DBNull"://空值处理
newCell.SetCellValue("");
break;
default:
newCell.SetCellValue("");
break;
} }
#endregion
rowIndex++;
}
//using (FileStream fs = new FileStream(localFilePath, FileMode.Create, FileAccess.Write))
//{
// workbook.Write(fs);
//} string path = HttpContext.Current.Server.MapPath(string.Format("~/{ 0}.xls", Public.Property.getDateString)); //模板文件
File.Create(path);
using (FileStream filess = File.OpenWrite(path))
{
workbook.Write(filess);
}
ExportHSSFWorkbookByWeb(null, workbook, fileName);
} #endregion #region NPOI-导出Doc /// <summary>
/// 导出Docx
/// </summary>
/// <param name="localFilePath">文件保存路径</param>
/// <param name="dtSource">数据源</param>
public static void ExportDocx(string localFilePath, DataTable dtSource)
{ XWPFDocument doc = new XWPFDocument(); XWPFTable table = doc.CreateTable(dtSource.Rows.Count + , dtSource.Columns.Count); for (int i = ; i < dtSource.Rows.Count + ; i++)
{
for (int j = ; j < dtSource.Columns.Count; j++)
{
if (i == )
{
table.GetRow(i).GetCell(j).SetText(dtSource.Columns[j].ColumnName);
}
else
{
table.GetRow(i).GetCell(j).SetText(dtSource.Rows[i - ][j].ToString());
}
}
} using (FileStream fs = new FileStream(localFilePath, FileMode.Create, FileAccess.Write))
{
doc.Write(fs);
}
} #endregion #region NPOI-下载数据
/// <summary>
/// 将指定的HSSFWorkbook输出到流
/// </summary>
/// <param name="workbook"></param>
/// <param name="strFileName">文件名</param>
public static void ExportHSSFWorkbookByWeb(HSSFWorkbook hssWorkbook = null, XSSFWorkbook xssWorkbook = null, string strFileName = null)
{
using (MemoryStream ms = new MemoryStream())
{
if (hssWorkbook == null)
xssWorkbook.Write(ms);
else
hssWorkbook.Write(ms);
ms.Flush();
ms.Position = ; 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=" + strFileName);
curContext.Response.BinaryWrite(ms.GetBuffer());
curContext.Response.End();
} } #endregion }
}

以下是 按模板调用数据使用案例

DataTable dt = new DataTable();
dt.Columns.Add("序号", typeof(string));

DataRow dr = dt.NewRow();
dr[0] = "测试";

using (FileStream fs = System.IO.File.OpenRead(Server.MapPath("~/Template/LawSix/Excel/涉案财物保管、处理情况登记表.xls")))
{
HSSFWorkbook wk = new HSSFWorkbook(fs);
fs.Close();
ISheet sheet = wk.GetSheetAt(0);
//设置行内容
sheet.GetRow(1).GetCell(0).SetCellValue(string.Format("时间:{0}", DateTime.Now.ToString("yyyy年MM月dd日")));
Public.NPOIHelp.ExportWorkBook(dt, wk, "涉案财物保管、处理情况登记表.xls", 6);

}

NPOIHelp 按固定模板导出和直接导出的更多相关文章

  1. Excel模板导出之动态导出

    说明 目前Magicodes.IE已支持Excel模板导出时使用JObject.Dictionary和ExpandoObject来进行动态导出,具体使用请看本篇教程. 本功能的想法.部分实现初步源于a ...

  2. 使用Apache POI导出Excel小结--导出XLS格式文档

    使用Apache POI导出Excel小结 关于使用Apache POI导出Excel我大概会分三篇文章去写 使用Apache POI导出Excel小结--导出XLS格式文档 使用Apache POI ...

  3. 导出----用Excel导出数据库表

    根据条件导出表格: 前端 <el-form-item label=""> <el-button type="warning" icon=&qu ...

  4. Oracle11g在使用exp导出时不导出空表问题的解决办法

    11G中有个新特性,当表无数据时,不分配segment,以节省空间 解决方法: 1.insert一行,再rollback就产生segment了. 该方法是在在空表中插入数据,再删除,则产生segmen ...

  5. Magento导出订单同时导出产品信息

    Magento导出订单同时导出产品信息,根据业务扩展,Magento自身的功能也越来越满足不了我们的需求了.今天Hicoogle根据需求改善批量导出订单的同时,也要带上该订单的产品信息.花了一点时间, ...

  6. Ireport 报表导出 Poi + ireport 导出pdf, word ,excel ,htm

    Ireport 报表导出 Poi + ireport 导出pdf, doc ,excel ,html 格式 下面是报表导出工具类reportExportUtils 需要导出以上格式的报表 只需要调用本 ...

  7. Lodop导出图片,导出单页内容的图片

    用如下语句设置图片的格式,设置导出的图片初识的默认名称,Lodop可以把打印内容导出成图片. LODOP.SET_SAVE_MODE("SAVEAS_IMGFILE_EXENAME" ...

  8. safari 收藏导出 手机safari 导出

    safari 收藏导出 手机safari 导出 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com E-mail: 313134555 @qq.co ...

  9. MySql数据库导出完整版(导出数据库,导出表,导出数据库结构)

    MySql数据库导出完整版(导出数据库,导出表,导出数据库结构) 用MySqlCE导出数据库脚本时,如数据库中包含中文内容,则导出异常. 现在可以通过mysqldump.exe直接导出数据库脚本步骤如 ...

随机推荐

  1. sbt编译spark程序提示value toDF is not a member of Seq()

    sbt编译spark程序提示value toDF is not a member of Seq() 前提 使用Scala编写的Spark程序,在sbt编译打包的时候提示value toDF is no ...

  2. 【Tensorflow】设置显存自适应,显存比例

    用惯了theano.再用tensoflow发现一运行显存就满载了,吓得我吃了一个苹果. 用天朝搜索引擎毛都搜不到,于是FQ找了下问题的解决方法,原来有两种 按比例 config = tf.Config ...

  3. JAVA-JSP内置对象之移除属性

    相关资料:<21天学通Java Web开发> 移除属性1.只需调用相应对象的removeAttribute()方法就可以移除指定属性 RemoveAttributeDemo.jsp < ...

  4. vue-router "path" is required in a route configuration

    启用了动态路由,一直提示这个错误,页面打开也是空白,后来发现原来是component参数错误. 正确的写法为: component: () => import ('@/views/own-spa ...

  5. 【Unity Shader】四、高光反射Specular Shader例子

    http://www.cnblogs.com/guxin/p/unity-diffuse-shader-demo.html 在上文中已经学习了漫反射Diffuse Shader和环境光,现在再在此基础 ...

  6. python计算机视觉项目实践

    这是一个贝叶斯模型的计算机视觉小项目.希望大家通过这个简单的项目知道一般的计算机视觉项目是怎样操作的. 我先讲题目放在这里希望有兴趣的童鞋花一周的时间思考并用python实现.一周以后我来发布我的详细 ...

  7. c# 16进制转int

    //十进制转二进制Convert.ToString(69, 2); //69为被转值//十进制转八进制Convert.ToString(69, 8); //69为被转值//十进制转十六进制Conver ...

  8. 【C】——信号量 互斥锁 条件变量的区别

    信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在semtake的时候,就阻塞在哪里).而互斥锁是用在多线程多任务互斥的,一个线程占用了某 ...

  9. SpringBoot2 @validated 类型效验

    详细参见:<Spring Boot 2精髓:从构建小系统到架构分布式大系统> 第三章 3.5节 验证框架 package com.archibladwitwicke.springboot2 ...

  10. ROS关于cv_brige的使用

    最近想使用OpenCV 和ROS实现点云的拼接,实现三维重建,那么在学习了kinect的基本的使用方法以后我们知道,直接使用ROS 的包即可得到点云,深度图,rgb图等信息, roslaunch op ...