public static class XSSFWorkbook_Excel
{
/// <summary>
/// GetExcel
/// </summary>
/// <param name="list">结果结合</param>
/// <param name="parms_header">要输出的字段名</param>
/// <param name="filename">文件名</param>
/// <returns></returns>
public static bool GetExcel(IList list, IDictionary<string, string> parms_header, string filename)
{
HttpContext curContext = HttpContext.Current;
try
{
MemoryStream ms = new MemoryStream();
EntityListToExcel(list, parms_header, "Sheet1").Write(ms);
curContext.Response.Clear();
curContext.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(filename, Encoding.UTF8) + ".xlsx");
curContext.Response.AddHeader("Content-Length", ms.ToArray().Length.ToString());
curContext.Response.ContentEncoding = Encoding.UTF8;
curContext.Response.ContentType = "application/ms-excel";
curContext.Response.BinaryWrite(ms.ToArray());
ms.Close();
ms.Dispose();
curContext.Response.Flush();
curContext.Response.End();
}
catch (Exception ex)
{
curContext.Response.Flush();
curContext.Response.End();
}
finally
{
curContext.Response.Flush();
curContext.Response.End();
}
return true;
} /// <summary>
/// GetExcel
/// </summary>
/// <param name="list">结果结合</param>
/// <param name="parms_header">要输出的字段名</param>
/// <param name="filename">文件名</param>
/// <param name="path">下载地址</param>
/// <returns></returns>
public static bool GetExcel(IList list, IDictionary<string, string> parms_header, string filename, out string path)
{
path = "/Export/" + filename + ".xlsx";
try
{
using (FileStream stm = File.OpenWrite(AppDomain.CurrentDomain.BaseDirectory + path))
{
EntityListToExcel(list, parms_header, "Sheet1").Write(stm);
}
return true;
}
catch (Exception ex)
{
return false;
}
}
public static XSSFWorkbook EntityListToExcel(IList list, IDictionary<string, string> parms_header, string sheetName)
{
try
{
XSSFWorkbook workbook = new XSSFWorkbook();
//workbook.SetSheetHidden(,)
//HSSFWorkbook workbook = new HSSFWorkbook();
ISheet sheet = workbook.CreateSheet(sheetName);
IRow row = sheet.CreateRow();
List<string> keys = parms_header.Keys.ToList();
for (int i = ; i < keys.Count; i++)
{
row.CreateCell(i).SetCellValue(parms_header[keys[i]]);
}
int rowIndex = ;
foreach (var item in list)
{
IRow rowTmp = sheet.CreateRow(rowIndex);
for (int i = ; i < keys.Count; i++)
{
string cellValue = "";
object properotyValue = null;
System.Reflection.PropertyInfo properotyInfo = null; if (keys[i].IndexOf(".") >= )
{
string[] properotyArray = keys[i].Split(new string[] { "." }, StringSplitOptions.RemoveEmptyEntries);
string subClassName = properotyArray[];
string subClassProperotyName = properotyArray[];
System.Reflection.PropertyInfo subClassInfo = item.GetType().GetProperty(subClassName);
if (subClassInfo != null)
{
var subClassEn = item.GetType().GetProperty(subClassName).GetValue(item, null);
properotyInfo = subClassInfo.PropertyType.GetProperty(subClassProperotyName);
if (properotyInfo != null)
{
properotyValue = properotyInfo.GetValue(subClassEn, null);
}
}
}
else
{
properotyInfo = item.GetType().GetProperty(keys[i]);
if (properotyInfo != null)
{
properotyValue = properotyInfo.GetValue(item, null);
}
}
if (properotyValue != null)
{
cellValue = properotyValue.ToString();
if (cellValue.Trim() == "0001/1/1 0:00:00" || cellValue.Trim() == "0001/1/1 23:59:59")
{
cellValue = string.Empty;
}
}
rowTmp.CreateCell(i).SetCellValue(cellValue);
}
rowIndex++;
} for (int i = ; i <= parms_header.Count(); i++)
{
sheet.AutoSizeColumn(i);
} for (int columnNum = ; columnNum <= parms_header.Count(); columnNum++)
{
int columnWidth = sheet.GetColumnWidth(columnNum) / ;
for (int rowNum = ; rowNum <= sheet.LastRowNum; rowNum++)
{
IRow currentRow;
if (sheet.GetRow(rowNum) == null)
{
currentRow = sheet.CreateRow(rowNum);
}
else
{
currentRow = sheet.GetRow(rowNum);
} if (currentRow.GetCell(columnNum) != null)
{
ICell currentCell = currentRow.GetCell(columnNum);
int length = Encoding.Default.GetBytes(currentCell.ToString()).Length;
if (columnWidth < length)
{
columnWidth = length;
}
}
}
sheet.SetColumnWidth(columnNum, columnWidth * );
} return workbook;
}
catch (Exception ex)
{
throw ex;
}
}
}
jQuery.download = function (data) {
var inputs = '';
Object.keys(data).forEach(function (v) {
inputs = inputs + '<input type="hidden" name="' + v + '" value="' + data[v] + '" />';
})
jQuery('<form action="/xykj/system/" method="post">' + inputs + '</form>')
.appendTo('body').submit().remove();
};
function Export() {
var parm = {
export: 1,
}
$.each($("#search").serializeArray(), function () {
if (parm[this.name]) {
if (!parm[this.name].push) {
parm[this.name] = [parm[this.name]];
}
parm[this.name].push(this.value || '');
} else {
parm[this.name] = this.value || '';
}
})
$.download(parm);
}

使用Ajax提交会导致 Response.Flush();无效

c# NPOI aspx导出数据的更多相关文章

  1. 使用npoi.dll导出数据到excel

    .net数据导出excel数据有多种方法,最常用的就是使用office组件,但随之而来的问题也很棘手,又要调权限又要确定是否安装office很是麻烦,最近一个项目中也有数据导出功能,随使用excel模 ...

  2. asp.net使用MVC4框架基于NPOI做导出数据到Excel表

    NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目. 使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 ...

  3. NPOI 通用导出数据到Excel 分类: C# Helper 2014-11-04 16:06 246人阅读 评论(0) 收藏

    应用场景: 在项目中,经常遇到将数据库数据导出到Excel,针对这种情况做了个程序封装.工作原理:利用NPOI将SQL语句查询出的DataTable数据导出到Excel,所见即所得. 程序界面:   ...

  4. NPOI导出数据到Excel

    NPOI导出数据到Excel   前言 Asp.net操作Excel已经是老生长谈的事情了,可下面我说的这个NPOI操作Excel,应该是最好的方案了,没有之一,使用NPOI能够帮助开发者在没有安装微 ...

  5. 使用NPOI导入导出Excel(xls/xlsx)数据到DataTable中

    using System; using System.Collections.Generic; using System.Text; using System.IO; using NPOI.SS.Us ...

  6. 利用NPOI导出数据到Execl

    相信很多童鞋都开发过Execl的导入导出功能,最近产品中无论是后台数据分析的需要,还是前端满足用户管理的方便,都有Execl导入导出的维护需求产生. 以前做这个功能,如果是web,利用HttpCont ...

  7. NPOI读取excel文件导出数据, 而此时文件正在打开中抛异常怎么办

    项目中需要用到一些数值表格, 方便起见都是用excel来的. 而如果excel正打开中, 直接使用npoi制作的工具来导出数据的话, 在这一行将会异常: workbook = new XSSFWork ...

  8. winfrom 使用NPOI导入导出Excel(xls/xlsx)数据到DataTable中

    1.通过NUGET管理器下载nopi,在引入命令空间 using System; using System.Collections.Generic; using System.Text; using ...

  9. NET使用NPOI组件将数据导出Excel-通用方法 【推荐】

    一.Excel导入及导出问题产生:   从接触.net到现在一直在维护一个DataTable导出到Excel的类,时不时还会维护一个导入类.以下是时不时就会出现的问题:   导出问题:   如果是as ...

随机推荐

  1. 嵌入式02 STM32 实验05 蜂鸣器

    蜂鸣器:是一种一体化结构的电子讯响器.主要分为分压式蜂鸣器和电磁式蜂鸣器两种类型. 一.有源/无源蜂鸣器(不是指是否带电源,而是有没有自带震荡电路) 1.有源蜂鸣器:有源蜂鸣器自带震荡电路,一通电就会 ...

  2. Django框架之第四篇(视图层)--HttpRequest对象、HttpResponse对象、JsonResponse、CBV和FBV、文件上传

    视图层 一.视图函数 一个视图函数,简称视图,是一个简单的python函数,它接收web请求并且会返回web响应.响应可以是一张网页的html,一个重定向,或者是一张图片...任何东西都可以.无论是什 ...

  3. nodeJs编写的简单服务器

    一.简单的nodeJs写的 http 服务器 1.先Hello world,创建最简单的 Node 服务器(server.js) var http = require("http" ...

  4. SnowflakeIdWorker

    /** * Twitter_Snowflake<br> * SnowFlake的结构如下(每部分用-分开):<br> * 0 - 0000000000 0000000000 0 ...

  5. 视频推流模式HLS,HTTP,RTSP,RTMP协议的区别

    HTTP: 先通过服务器将FLV下载到本地缓存,然后再通过NetConnection的本地连接来播放这个FLV,这种方法是播放本地的视频,并不是播放服务器的视频.因此在本地缓存里可以找到这个FLV.其 ...

  6. java基础 构造方法

    /** * 继承关系中,父子类构造方法的访问特点 * * 1.子类构造方法中有一个默认隐含的"super()"调用,所以一定是先调用父类构造,后执行的子类构造 * 2.子类构造可以 ...

  7. Angular—入门环境,项目创建,导入项目

    1.安装 nodejs,npm nodejs 下载地址: https://nodejs.org/en/download/

  8. MVC学习笔记(三)—用EF向数据库中添加数据

    1.在EFDemo文件夹中添加Controllers文件夹(用的是上一篇MVC学习笔记(二)—用EF创建数据库中的项目) 2.在Controllers文件夹下添加一个空的控制器(StudentsCon ...

  9. python pip安装解决方法

    一招解决python pip install 安装库失败   PIP是python强大的安装利器,但是我们经常遇到安装库失败的问题,以下本人觉得最有效的解决方法: 1.打开 https://www.l ...

  10. DB2数据库中DB2字符串类型

    DB2字符串是DB2数据库中的基础知识,下面就为您分类介绍DB2字符串,供您参考,如果您对DB2字符串方面刚兴趣的话,不妨一看. DB2字符串是字节序列.DB2字符串包括 CHAR(n) 类型的定长字 ...