zoukankan      html  css  js  c++  java
  • 使用Aspose.Cells利用模板导出Excel(C#)

    前言

      随着互联网的流行,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
    欢迎转载,但任何转载必须保留完整文章,在显要地方显示署名以及原文链接。如您有任何疑问或者授权方面的协商,请给我留言
  • 相关阅读:
    d3.js--04(enter和exit)
    d3.js--03(增删改查)
    d3.js--02(data和datum原理)
    css文件和js文件后面带一个问号----2015-1103
    json_decode()和json_encode()区别----2015-0929
    随记--更新于20150925
    个人火狐插件汇总--20150924
    『jQuery』.html(),.text()和.val()的概述及使用--2015-08-11
    矩阵求导
    傅里叶变换
  • 原文地址:https://www.cnblogs.com/liuyoung/p/7736811.html
Copyright © 2011-2022 走看看