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
    欢迎转载,但任何转载必须保留完整文章,在显要地方显示署名以及原文链接。如您有任何疑问或者授权方面的协商,请给我留言
  • 相关阅读:
    vmware里面的名词 vSphere、vCenter Server、ESXI、vSphere Client
    SQL Server2014 SP2新增的数据库克隆功能
    看完SQL Server 2014 Q/A答疑集锦:想不升级都难!
    Windows Server 2012 NIC Teaming 网卡绑定介绍及注意事项
    最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目
    基于本地存储的kvm虚拟机在线迁移
    SQL Server 数据加密功能解析
    android开发之GestureDetector手势识别(调节音量、亮度、快进和后退)
    Datazen介绍
    jquery智能弹出层,自己主动推断位置
  • 原文地址:https://www.cnblogs.com/liuyoung/p/7736811.html
Copyright © 2011-2022 走看看