NPOI Excel模板填充数据后导出
2016-08-02 13:56
483 查看
引入Npoi包 添加引用dotnet2 或dotnet4
Excel模板 ( .xlsx)
public void NpoiExportExcel()
{
string sql = "exec ZonePlaza";
DataTable dt = DataFactory.Database().FindTableBySql(sql);
var fileName = "asdasda";
var exportTemplatePath = "~/FileTemplate/汇总表.xlsx";
DownloadExcel(fileName, dt, exportTemplatePath);
}
public void DownloadExcel(string reportName, DataTable dt, string exportTemplatePath)
{
Stream s = RenderDataTableToExcel(dt, exportTemplatePath);
if (s != null)
{
MemoryStream ms = s as MemoryStream;
HttpContext.Current.Response.AddHeader("Content-Disposition", string.Format("attachment;filename=" + HttpUtility.UrlEncode(reportName) + DateTime.Now.ToString("yyyyMMdd") + ".xlsx"));
HttpContext.Current.Response.AddHeader("Content-Length", ms.ToArray().Length.ToString());
HttpContext.Current.Response.BinaryWrite(ms.ToArray());
HttpContext.Current.Response.Flush();
ms.Close();
ms.Dispose();
}
else
HttpContext.Current.Response.Write("出错,无法下载!");
}
public Stream RenderDataTableToExcel(DataTable sourceTable, string exportTemplatePath)
{
XSSFWorkbook workbook = null;
MemoryStream ms = null;
ISheet sheet = null;
XSSFRow headerRow = null;
string templetFileName = HttpContext.Current.Server.MapPath(exportTemplatePath);
FileStream file = new FileStream(templetFileName, FileMode.Open, FileAccess.Read);
workbook = new XSSFWorkbook(file);
try
{
ms = new MemoryStream();
sheet = workbook.GetSheet("Sheet1");
int rowIndex = sheet.LastRowNum;
foreach (DataRow row in sourceTable.Rows)
{
XSSFRow dataRow = (XSSFRow)sheet.CreateRow(rowIndex);
foreach (DataColumn column in sourceTable.Columns)
dataRow.CreateCell(column.Ordinal).SetCellValue(row[column].ToString());
++rowIndex;
}
//列宽自适应,只对英文和数字有效
for (int i = 0; i <= sourceTable.Columns.Count; ++i)
sheet.AutoSizeColumn(i);
workbook.Write(ms);
ms.Flush();
}
catch (Exception ex)
{
throw;
return null;
}
finally
{
ms.Close();
sheet = null;
headerRow = null;
workbook = null;
}
return ms;
}
Excel模板 ( .xlsx)
public void NpoiExportExcel()
{
string sql = "exec ZonePlaza";
DataTable dt = DataFactory.Database().FindTableBySql(sql);
var fileName = "asdasda";
var exportTemplatePath = "~/FileTemplate/汇总表.xlsx";
DownloadExcel(fileName, dt, exportTemplatePath);
}
public void DownloadExcel(string reportName, DataTable dt, string exportTemplatePath)
{
Stream s = RenderDataTableToExcel(dt, exportTemplatePath);
if (s != null)
{
MemoryStream ms = s as MemoryStream;
HttpContext.Current.Response.AddHeader("Content-Disposition", string.Format("attachment;filename=" + HttpUtility.UrlEncode(reportName) + DateTime.Now.ToString("yyyyMMdd") + ".xlsx"));
HttpContext.Current.Response.AddHeader("Content-Length", ms.ToArray().Length.ToString());
HttpContext.Current.Response.BinaryWrite(ms.ToArray());
HttpContext.Current.Response.Flush();
ms.Close();
ms.Dispose();
}
else
HttpContext.Current.Response.Write("出错,无法下载!");
}
public Stream RenderDataTableToExcel(DataTable sourceTable, string exportTemplatePath)
{
XSSFWorkbook workbook = null;
MemoryStream ms = null;
ISheet sheet = null;
XSSFRow headerRow = null;
string templetFileName = HttpContext.Current.Server.MapPath(exportTemplatePath);
FileStream file = new FileStream(templetFileName, FileMode.Open, FileAccess.Read);
workbook = new XSSFWorkbook(file);
try
{
ms = new MemoryStream();
sheet = workbook.GetSheet("Sheet1");
int rowIndex = sheet.LastRowNum;
foreach (DataRow row in sourceTable.Rows)
{
XSSFRow dataRow = (XSSFRow)sheet.CreateRow(rowIndex);
foreach (DataColumn column in sourceTable.Columns)
dataRow.CreateCell(column.Ordinal).SetCellValue(row[column].ToString());
++rowIndex;
}
//列宽自适应,只对英文和数字有效
for (int i = 0; i <= sourceTable.Columns.Count; ++i)
sheet.AutoSizeColumn(i);
workbook.Write(ms);
ms.Flush();
}
catch (Exception ex)
{
throw;
return null;
}
finally
{
ms.Close();
sheet = null;
headerRow = null;
workbook = null;
}
return ms;
}
相关文章推荐
- NPOI 通过excel模板写入数据并导出
- 利用JXLS根据模板填充数据导出Excel实例
- NPOI 通过excel模板写入数据并导出
- C# 快速填充excel 数据表导出excel
- c# 导出table中的数据到模板excel中
- .NET使用NPOI组件将数据导出Excel(转)
- 【推荐】.NET使用NPOI组件将数据导出Excel
- 打开一个Excel模板文件填充数据另存为一个文件
- NET使用NPOI组件将数据导出Excel
- vb.net 向Excel模板中填充数据
- 使用NPOI导出数据到Excel
- asp.net 导出数据到Excel模板分页
- 程序化导入导出EXCEL数据,完全由模板输出
- 利用模板导出数据到Excel中
- NPOI读取Excel模板并向其中写入数据
- GridView中的数据导出到Excel方法(包含处理模板列)
- C# 实现Excel导出 加载模板 导入数据到模板
- 【推荐】.NET使用NPOI组件将数据导出Excel
- 程序化导入导出EXCEL数据,完全由模板输出
- C# 导出数据到Excel模板中