前言

随着互联网的流行,web项目逐渐占据主流。我相信大部分人开发项目的过程中都写过上传以及导出Excel和Word的功能,本文仅讨论导出Excel。

传统的使用Microsoft.Office.Interop 或者 Microsoft.ACE.OLEDB 都具有一些使用限制:

  • 需要在服务器端装Excel或者Microsoft.ACE.OLEDB,且及时更新它,以防漏洞,还需要设定权限允许.NET访问COM+,如果在导出过程中出问题可能导致服务器宕机。
  • Excel会把只包含数字的列进行类型转换,本来是文本型的,Excel会将其转成数值型的,比如编号000123会变成123。
  • Excel会根据Excel文件前8行分析数据类型,如果正好你前8行某一列只是数字,那它会认为该列为数值型,自动将该列转变成类似1.42702E+17格式,日期列变成包含日期和数字的。
  • 导出时,如果字段内容以“-”或“=”开头,Excel会把它当成公式进行,会报错。

C#中有很多第三方组件支持导出Excel,比如:NPOI、Aspose.Cells以及Spire.xls等等。它们能克服Microsoft.Office.Interop 或者 Microsoft.ACE.OLEDB的这些缺点。这里我们使用Aspose.Cells,同时使用已经写好的模板。

一、准备数据库

我创建了一个非常简单的表格,添加了一些数据。结构如图所示:

二、创建Excel模板

新建一个excel文件,第一行为标题,第二行添加内容。第二行格式为:&=[数据源表格名称].列名称。其中“数据源表格名称”为后台返回DataTable的名称,“列名称”为对应的标题列在数据库中的名称。具体如下:

三、后台写导出Excel的方法

具体代码如下:

然后在控制器中写个方法,调用ExportExcel。这个方法供前台js调用。

四、视图中调用

使用js调用控制器中的方法,要注意不能使用ajax。只能使用window.location.href。

五、实现效果

点击页面上的“导出”按钮,会弹出文件保存对话框。效果如下:

打开Excel,看看里面的内容:

数据库表中的数据,都填充在了Excel中。实现了我们想要的效果。

六、结语

本次分享到此结束。如果这篇文章对你有帮助的话,评论或推荐下吧!

项目源码:https://github.com/liuyang-1990/ExportDemo

作者:NaYoung
出处:http://www.cnblogs.com/liuyoung/p/7736811.html
欢迎转载,但任何转载必须保留完整文章,在显要地方显示署名以及原文链接。如您有任何疑问或者授权方面的协商,请给我留言

使用Aspose.Cells利用模板导出Excel(C#)的更多相关文章

  1. aspose.cells根据模板导出excel

    又隔十多天没写博客了,最近都在忙项目的事情,公司人事变动也比较大,手头上就又多了一个项目.最近做用aspose.cells根据模板导出excel报价单的功能,顺便把相关的核心记下来,先上模板和导出的效 ...

  2. 【转】 (C#)利用Aspose.Cells组件导入导出excel文件

    Aspose.Cells组件可以不依赖excel来导入导出excel文件: 导入: public static System.Data.DataTable ReadExcel(String strFi ...

  3. (C#)利用Aspose.Cells组件导入导出excel文件

    Aspose.Cells组件可以不依赖excel来导入导出excel文件: 导入: public static System.Data.DataTable ReadExcel(String strFi ...

  4. 使用Aspose.Cells 根据模板生成excel里面的 line chart

    目的: 1.根据模板里面的excel数据信息,动态创建line chart 2.linechart 的样式改为灰色 3.以流的形式写到客户端,不管客户端是否装excel,都可以导出到到客户端 4.使用 ...

  5. 基于C#语言MVC框架Aspose.Cells控件导出Excel表数据

    控件bin文件下载地址:https://download.csdn.net/download/u012949335/10610726 @{ ViewBag.Title = "xx" ...

  6. Aspose.Cells Smart markers 基于模板导出Excel

    Aspose.Cells可以预先定义Excel模板,然后填充数据(官方文档:http://www.aspose.com/docs/display/cellsjava/Smart+Markers). 设 ...

  7. .Net NPOI 根据excel模板导出excel、直接生成excel

    一.根据Excel模板导出excel 1.导入NPOI.dll  2.DAL中添加类ExportExcel.cs using NPOI.SS.UserModel; using System; usin ...

  8. POI实现导出Excel和模板导出Excel

    一.导出过程 1.用户请求导出 2.先访问数据库,查询需要导出的结果集 3.创建导出的Excel工作簿 4.遍历结果集,写入工作簿 5.将Excel已文件下载的形式回复给请求客户端 二.具体实现(截取 ...

  9. ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 try.dot.net 的正确使用姿势 .Net NPOI 根据excel模板导出excel、直接生成excel .Net NPOI 上传excel文件、提交后台获取excel里的数据

    ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案   ASP.NET Core 从2.2版本开始,采用了一个新的名为Endpoint的路由方案,与原来的方案在使用上差别不 ...

随机推荐

  1. 201521123031 《Java程序设计》第12周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 1.将Student对象(属性:int id, String name,int age,dou ...

  2. table相关的选择器 & children()与find()的区别 & 选择器eq(n)与nth-child(n)的差异

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  3. 【转】SWT/JFace的对话框

    一.MessageDialog       ,MessageDialog的用法很简单 MessageDialog.openInfomation(shell,title,message);       ...

  4. JVM菜鸟进阶高手之路十(基础知识开场白)

    转载请注明原创出处,谢谢! 最近没有什么实战,准备把JVM知识梳理一遍,先以开发人员的交流来谈谈jvm这块的知识以及重要性,依稀记得2.3年前用solr的时候老是经常oom,提到oom大家应该都不陌生 ...

  5. SQLServer 自动循环归档分区数据脚本

    标签:SQL SERVER/MSSQL SERVER/数据库/DBA/表分区 概述 在很多业务场景下我们需要对一些记录量比较大的表进行分区,同时为了保证性能需要将一些旧的数据进行归档.在分区表很多的情 ...

  6. 关于MySQL 事务,视图,索引,数据库备份,恢复

      /*创建数据库*/ CREATE DATABASE `mybank`;/*创建表*/USE mybank;CREATE TABLE `bank`(    `customerName` CHAR(1 ...

  7. POJ-2417-Discrete Logging(BSGS)

    Given a prime P, 2 <= P < 2 31, an integer B, 2 <= B < P, and an integer N, 1 <= N &l ...

  8. hadoop(一)之初识大数据与Hadoop

    前言 从今天起,我将一步一步的分享大数据相关的知识,其实很多程序员感觉大数据很难学,其实并不是你想象的这样,只要自己想学,还有什么难得呢? 学习Hadoop有一个8020原则,80%都是在不断的配置配 ...

  9. ESLint可共享配置发布,团队自定义ESLint规则新鲜出炉

    ESLint于2013年6月份推出,至今4个年头,最新版本v4.8.0.它是目前主流的用于Javascript和JSX代码规范检查的利器,很多大公司比如Airbnb和Google均有一套自己的Java ...

  10. Maven打包Jar

    现状 该项目使用了Maven,并且引入了Spring,包含代码.配置文件.Jar包,使用的是IDEA来作为开发工具,项目的产出物是要打包成一个可运行的Jar包.通过IDEA的打包工具也可以打包成功,只 ...