安装npoi,下面是具体的C#代码:

  

public static XSSFWorkbook BuildWorkbook(DataTable dt)
{
var book = new XSSFWorkbook();
ISheet sheet = book.CreateSheet("Sheet1");
IRow first_drow = sheet.CreateRow(); string import_title = ConfigurationManager.AppSettings["import_title"];
if (!import_title.IsEmpty())
{
string[] temps = import_title.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = ; i < temps.Length; i++)
{
ICell cell = first_drow.CreateCell(i, CellType.String);
cell.SetCellValue(temps[i]);
}
}
//Data Rows
int index = ;
for (int i = ; i <= dt.Rows.Count; i++)
{
IRow drow = sheet.CreateRow(i);
for (int j = ; j < dt.Columns.Count; j++)
{
ICell cell = drow.CreateCell(j, CellType.String);
cell.SetCellValue(dt.Rows[index][j].ToString());
}
index++;
}
//自动列宽
for (int i = ; i <= dt.Columns.Count; i++)
sheet.AutoSizeColumn(i, true); return book;
} public static void ExportExcel(string idcard_no, string name, string fileName = "ExamInfoExcel")
{
//生成Excel
IWorkbook book = BuildWorkbook(ExcelData(idcard_no, name)); //web 下载
if (fileName == "")
fileName = string.Format("{0:yyyyMMddHHmmssffff}", DateTime.Now);
fileName = fileName.Trim();
string ext = Path.GetExtension(fileName); if (ext.ToLower() == ".xls" || ext.ToLower() == ".xlsx")
fileName = fileName.Replace(ext, string.Empty); HttpResponse httpResponse = HttpContext.Current.Response;
httpResponse.Clear();
httpResponse.Buffer = true;
httpResponse.Charset = Encoding.UTF8.BodyName;
//Remarks:xls是03版excel所用格式,xlsx是07版所用格式,这里默认导出07版的,如果电脑上是03版打不开这个文件,把后缀名xlsx改成xls即可。
httpResponse.AppendHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");
httpResponse.ContentEncoding = Encoding.UTF8;
httpResponse.ContentType = "application/vnd.ms-excel; charset=UTF-8";
book.Write(httpResponse.OutputStream);
httpResponse.End();
}
public static DataTable ExcelData(string idcard_no, string name)
{
string where = " 1=1 ";
if (!string.IsNullOrEmpty(idcard_no))
{
idcard_no = idcard_no.TrimStart().TrimEnd();
where += " and idcard_no like '%" + idcard_no + "%'";
}
if (!string.IsNullOrEmpty(name))
{
idcard_no = idcard_no.TrimStart().TrimEnd();
name = name.TrimStart().TrimEnd();
where += " and name like '%" + name + "%'";
}
string import_files = ConfigurationManager.AppSettings["import_files"];
string sql = string.Format(@"SELECT {0} FROM ExamInfo where {1} ORDER BY id", import_files, where);
using (var connection = ConnectionFactory.CreateSqlConnection())
{
DataTable dt = new DataTable();
dt.Load(connection.ExecuteReader(sql));
return dt;
}
}

  控制器层调用如下:

  

        public void ExcelImport(string idcard_no, string name)
{
Application.ExportExcel(idcard_no, name, "ExamInfoExcel");
}

  JQ页面调用如下:

  

       $("#import").click(function () {
var href = "/Home/ExcelImport";
var idcard_no = $("#IDNumber").val();
var name = $("#username").val();
href += "?idcard_no=" + idcard_no + "&name=" + name;
$("#import_a").attr("href", href);
$("#download").click();
});

  html:

<button class="layui-btn" id="import">导出数据</button>
<a href="/Home/ExcelImport" id="import_a" style="display:none;" ><span id="download">隐藏的导出下载地址</span></a>

  页面之所以在按钮的基础上加了一个隐藏的a标签,原因在于通过window.open打开的地址容易被浏览器拦截,而通过模拟触发a标签进行点击的则不会。

  关于配置,需要导出的列以及excel的表头我控制在了webconfig里:

    !--导出配置-->
    <add key="import_title" value="序号,姓名"/>
    <add key="import_files" value="id,name"/>

  以上,是一个较为完整的导出数据到excel示例。

.net 数据导出的更多相关文章

  1. [django]数据导出excel升级强化版(很强大!)

    不多说了,原理采用xlwt导出excel文件,所谓的强化版指的是实现在网页上选择一定条件导出对应的数据 之前我的博文出过这类文章,但只是实现导出数据,这次左思右想,再加上网上的搜索,终于找出方法实现条 ...

  2. 【基于WinForm+Access局域网共享数据库的项目总结】之篇二:WinForm开发扇形图统计和Excel数据导出

    篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...

  3. mssqlserver数据导出到另外一个数据库

    mssqlserver数据导出到另外一个数据库 准备源数据库,找到想要导出的数据库,右键选择"任务"再选择"导出数据" 设置源数据库信息 3.设置目标数据库,导 ...

  4. 在SQL Server中将数据导出为XML和Json

        有时候需要一次性将SQL Server中的数据导出给其他部门的也许进行关联或分析,这种需求对于SSIS来说当然是非常简单,但很多时候仅仅需要一次性导出这些数据而建立一个SSIS包就显得小题大做 ...

  5. Oracle如何实现创建数据库、备份数据库及数据导出导入的一条龙操作

    Oracle中对数据对象和数据的管理,无疑都是使用PL/SQL Developer来进行管理,该工具也提供给我们很多方便.快捷的操作,使得我们不再为Oracle本身丑陋.难用的UI而抱怨.由于我们一般 ...

  6. pb将datawindow数据导出EXCEL

    PB有dw有自带功能可以将数据导出成excel,但是head却是字段名称,这样不直观. 所见即所得的方式是,将dw保存成html然后将后缀名改成xls,但这样的方式还有些问题就是会错列,解决的方法是将 ...

  7. 百度地图里面搜索到的公司商家电话导出表格?怎样将把百度地图里面搜索到的公司 电话 地址 等数据导出excel里?

    好多人在问:如何将百度地图里面搜索到的公司商家电话导出表格?怎样将把百度地图里面搜索到的公司 电话 地址 等数据导出excel里? 现在,很多人都在网络上找商家,联系业务. 百度地图里有很多的商家联系 ...

  8. 数据导出Excel中文乱码

    数据导出到EXCEL提供用户下载,当记录数大于5行时不会出现乱码.但只要不退出Excel,再删除除记录,当记录数小于5行时,导出也不会出现乱码.当然一旦退出Excel再导出就会出现乱码了. 可以试试 ...

  9. sqlserver 2008 数据库表结构脚本及数据导出

    sqlserver2008  在xp上尝试安装了 sqlserver2008 express版本,但是和公司的sqlserver2008 r2 版本不兼容.升级的时候,出了问题.所以换了中思路,将数据 ...

  10. Hive几种数据导出方式

    Hive几种数据导出方式 今天我们再谈谈Hive中的几种不同的数据导出方式.可以根据导出的地方不一样,将这些方式分为三种: (1).导出到本地文件系统: (2).导出到HDFS中: (3).导出到Hi ...

随机推荐

  1. mysql replace substring 字符串截取处理

    SELECT a1,a2,replace(a2, "豫ICP备16006180号-", "") a22,a3,a4,a5 FROM `aaab` order b ...

  2. arcgis js 之 渔网工具(调用地图服务)

    arcgis js 之 渔网工具(调用地图服务) 原理: 简历不同级别的网渔网图层,设置显示比例尺.然后发布服务,使用MapImageLayer接收. 过程: 1.在arcmap中用创建渔网工具将不同 ...

  3. 安卓开发之生成XML文件

    package com.lidaochen.phonecall; import android.net.Uri; import android.os.Environment; import andro ...

  4. 安卓开发之获取SD卡空间数据

    package com.lidaochen.getsdcardspace; import android.os.Environment; import android.support.v7.app.A ...

  5. swagger 的使用

    最近在用 .Net Core 做项目 了解到swagger 是一个不错的工具 简单介绍一下 在使用asp.net core 进行api开发完成后,书写api说明文档对于程序员来说想必是件很痛苦的事情吧 ...

  6. asp.net mvc5 DataBase First下model校验问题(MetadataType使用)

    最近学习asp.net mvc5,使用   asp.net mvc5+EF6+AutoFac做个小Demo,其中是先设计的数据库表,就直接选择了EF的DataBase First(三种开发模式分别是c ...

  7. windows 10 mysql-8.0.17-winx64的安装

    1.官网下载,并解压 https://dev.mysql.com/downloads/mysql/ 下载下来之后是一个zip的压缩包文件:mysql-5.7.26-winx64.zip,然后对这个文件 ...

  8. 阿里云MySQL用Navicat连接问题

    阿里云上装好MySQL用Navicat连接出现密码正确,Navicat连接测试失败.解决方案:网上众多方案,比如:放行3306端口啥子的,加入安全组啥子的.确认这些都没问题,还是出现密码正确,测试连接 ...

  9. Scala快速入门(四)——继承、接口

    Scala快速入门(四)--继承.接口 一.继承 1.继承的概念:省略 2.模板: class Person(n:String,a:Int) { var name:String=n var age:I ...

  10. selenium八种定位元素方法

    1.driver.find_element_by_id('su') 定位到元素的id一般id是唯一的,可以精确定位到元素 2.driver.find_element_by_name() 通过元素的na ...