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
    欢迎转载,但任何转载必须保留完整文章,在显要地方显示署名以及原文链接。如您有任何疑问或者授权方面的协商,请给我留言
  • 相关阅读:
    MessageDigest类提供MD5或SHA等加密算法
    23种设计模式之策略设计模式
    n & (n-1)
    ubuntu 常用软件配置
    minicom 没有tx 信号
    usb 驱动
    全局变量的危害
    编写安全代码:小心volatile的原子性误解
    ADB Server Didn’t ACK ,failed to Start Daemon 解决方法
    字长
  • 原文地址:https://www.cnblogs.com/liuyoung/p/7736811.html
Copyright © 2011-2022 走看看