安装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. jQuery Validation ,调用valid方法时,不验证remote

    1.问题描述 model代码如下: remote对应的action如下: view代码如下: 单击按钮时,执行如下动作 当点击按钮时,我们发现,虽然后台action验证失败,但 还是执行返回true, ...

  2. BASE64 Encode Decode

    package com.humi.encryption; import java.io.IOException; import java.io.UnsupportedEncodingException ...

  3. es 启动报错 内存太小

    max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] elastics ...

  4. Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.1428942566812653608

    这个问题也是某天做一个上传文件功能发生的.然后在网上查找的资料,整理了这几个解决方案. 1.在application.yml文件中设置multipart location ,并重启项目 spring: ...

  5. Delphi 方法的声明

  6. 封装Server类和Client类

    服务器端: EasyTcpServer.hpp #ifndef _EasyTcpServer_hpp_ #define _EasyTcpServer_hpp_ #ifdef _WIN32 #defin ...

  7. 启动Tomcat报错:A child container failed during start

    在之前的工作和学习当中,有碰到过很多未知的,在当时看来十分令人疑惑的问题.当时的解决手段简单粗暴,就是直接百度,搜到对应的解决方案,直接抄过来试试,不行再换,直到问题消失,程序可以正常跑了,立马就不管 ...

  8. Spark(一)wordcount

    Spark(一)wordcount 一.新建一个scala项目 在maven中导入 <!-- https://mvnrepository.com/artifact/org.apache.spar ...

  9. bug是前端还是后端

    分析bug是前端还是后端的   如何分析一个bug是前端还是后端的? 平常提bug的时候,前端开发和后端开发总是扯皮,不承认是对方的bug这种情况很容易判断,先抓包看请求报文,对着接口文档,看请求报文 ...

  10. Java&Selenium&TestNG&ZTestReport 自动化测试并生成HTML自动化测试报告

    一.摘要 本篇博文将介绍如何借助ZTestReport和HTML模版,生成HTML测试报告的ZTestReport 源码Clone地址为 https://github.com/zhangfei1984 ...