.net 数据导出

简介: .net 数据导出

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


public static XSSFWorkbook BuildWorkbook(DataTable dt)
        {
            var book = new XSSFWorkbook();
            ISheet sheet = book.CreateSheet("Sheet1");
            IRow first_drow = sheet.CreateRow(0);
            string import_title = ConfigurationManager.AppSettings["import_title"];
            if (!import_title.IsEmpty())
            {
                string[] temps = import_title.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                for (int i = 0; i < temps.Length; i++)
                {
                    ICell cell = first_drow.CreateCell(i, CellType.String);
                    cell.SetCellValue(temps[i]);
                }
            }
            //Data Rows
            int index = 0;
            for (int i = 1; i <= dt.Rows.Count; i++)
            {
                IRow drow = sheet.CreateRow(i);
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    ICell cell = drow.CreateCell(j, CellType.String);
                    cell.SetCellValue(dt.Rows[index][j].ToString());
                }
                index++;
            }
            //自动列宽
            for (int i = 0; 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示例。

PS:楼主邮箱 tccwpl@163.com

目录
相关文章
|
6月前
mvc.net分页查询案例——DLL数据访问层(HouseDLL.cs)
mvc.net分页查询案例——DLL数据访问层(HouseDLL.cs)
|
27天前
|
SQL XML 关系型数据库
入门指南:利用NHibernate简化.NET应用程序的数据访问
【10月更文挑战第13天】NHibernate是一个面向.NET的开源对象关系映射(ORM)工具,它提供了从数据库表到应用程序中的对象之间的映射。通过使用NHibernate,开发者可以专注于业务逻辑和领域模型的设计,而无需直接编写复杂的SQL语句来处理数据持久化问题。NHibernate支持多种数据库,并且具有高度的灵活性和可扩展性。
39 2
|
3月前
|
开发框架 .NET 数据库连接
闲话 Asp.Net Core 数据校验(三)EF Core 集成 FluentValidation 校验数据例子
闲话 Asp.Net Core 数据校验(三)EF Core 集成 FluentValidation 校验数据例子
|
4月前
|
开发框架 JSON 前端开发
利用查询条件对象,在Asp.net Web API中实现对业务数据的分页查询处理
利用查询条件对象,在Asp.net Web API中实现对业务数据的分页查询处理
|
3月前
|
开发框架 前端开发 算法
分享 .NET EF6 查询并返回树形结构数据的 2 个思路和具体实现方法
分享 .NET EF6 查询并返回树形结构数据的 2 个思路和具体实现方法
|
6月前
|
存储 测试技术 计算机视觉
高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数据
高维数据惩罚回归方法:主成分回归PCR、岭回归、lasso、弹性网络elastic net分析基因数据
|
6月前
|
SQL 数据库
使用ADO.NET查询和操作数据
使用ADO.NET查询和操作数据
|
6月前
|
SQL 开发框架 .NET
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
118 0
|
6月前
|
Oracle 关系型数据库 数据管理
.NET医院检验系统LIS源码,使用了oracle数据库,保证数据的隔离和安全性
LIS系统实现了实验室人力资源管理、标本管理、日常事务管理、网络管理、检验数据管理(采集、传输、处理、输出、发布)、报表管理过程的自动化,使实验室的操作人员和管理者从繁杂的手工劳作中解放出来,提高了检验人员的工作效率和效益,降低了劳动成本和差错发生率。
.NET NPOI导出时间、公式等格式化
.NET NPOI导出时间、公式等格式化
100 0
.NET NPOI导出时间、公式等格式化

热门文章

最新文章