• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#组件系列 你值得拥有的一款Excel处理神器Spire.XLS

C#组件系列 你值得拥有的一款Excel处理神器Spire.XLS

作者:懒得安分 字体:[增加 减小] 来源:互联网 时间:2017-05-28

懒得安分 通过本文主要向大家介绍了spire.xls,spire.xls破解版,spire.xls.dll,spire.xls下载,free spire.xls等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

前言:最近项目里面有一些对Excel操作的需求,博主想都没想,NPOI呗,简单、开源、免费,大家都喜欢!确实,对于一些简单的Excel导入、导出、合并单元格等,它都没啥太大的问题,但是这次的需求有两点是NPOI搞不定的:

1、导入Excel后,需要切割Excel的Sheet页,然后每个Sheet页单独生成一个PDF文件。

2、导出Excel的时候,项目里面需要将一些数据表格以图表的形式在Excel里面展示。

找了一圈资料,对于Excel生成pdf,网上的答案千篇一律:使用COM组件的方式,通过调用服务器上面的Office组件里面的东西去转。这种方式需要在服务器上面安装Office,这倒是其次,最重要的是,权限的问题很头疼。博主已经按照这种方式实现了,调试的时候没问题,部署到IIS上面之后又出了各种权限的问题,好不容易在一台服务器上面部署成功了,放到另一台服务器上面按照同样的方式部署,却还是提示“拒绝访问”。博主也是醉了。而对于Excel生成图表,NPOI暂时没找到实现方式,COM组件的方式可以,但是实现起来略显复杂,并且这东西庞大、不太稳定,尤其是咱们大部分人个人电脑上面装的Office都不是正版,使用起来也很麻烦。

基于此,经过一番努力,找到了这么一个第三方组件Spire.XLS。这两天体验了一把,使用起来还比较顺手,在此来简单介绍下这个组件的使用吧。

一、组件介绍

Spire.XLS是E-iceblue开发的一套基于企业级的专业Office文档处理的组件之一,全称Spire.Office for .NET。旗下有Spire.Doc,Spire XLS,Spire.PDF,Spire.BarCode等多款专业组件,为各种Office文档在程序处理上提供了很大的方便,官方为各种功能提供了大量的在线api,简化了使用组件的难度。组件使用时不需要本地Office组件的支持。Spire.Office是一款企业级组件,它提供了收费版本和免费版本两种级别,一般来说,对于个人的应用,免费版本已足够用。比如对于上文博主遇到的问题,Spire.XLS组件就提供了很好的实现机制,如果你也遇到了NPOI解决不了的问题,不妨试试这个。

“XLS”是Excel文件的后缀之一,顾名思义,Spire.XLS当然就是针对Excel表格处理的组件喽,本篇,博主将结合上文遇到的问题来看看Spire.XLS组件的强大功能。

二、组件安装使用

对于组件的安装,在此还是提供两种方式:

1、官方下载安装

下载地址。官方下载的安装包是msi结尾的,安装时需要选择支持的VS版本等信息,软件的安装就不做过多说明,有兴趣的可以下载试试。

2、Nuget安装

大家最喜欢的应该还是Nuget方式吧,简单,方便,并且易于管理。博主也是不太喜欢为了一个组件而去单独下载一个安装包。

Spire.XLS也提供了Nuget的方式,只需要搜索Spire,选择免费版的组件即可:

安装完成后自动引用了需要的dll

三、组件功能介绍

关于Excel的一些常用操作,比如取值、赋值、设置单元格样式等,这里就不做过多介绍,无论是Com组件、NPOI还是Aspose,这些都是最基础的功能。下面就针对上文提出的几个问题着重说明下。

1、Excel转PDF

(1)COM组件实现思路回顾

关于Excel转PDF的实现,网上找到的解决方案基本一样,大致代码如此:

/// <summary>
   /// 把Excel文件转换成PDF格式文件 
   /// </summary>
   /// <param name="sourcePath">源文件路径</param>
   /// <param name="targetPath">目标文件路径</param>
   /// <returns>true=转换成功</returns>
  public bool XLSConvertToPDF(string sourcePath, string targetPath)
  {
   Logger.Info("开始转pdf");
   bool result = false;
   XlFixedFormatType targetType = XlFixedFormatType.xlTypePDF;
   object missing = Type.Missing;
   Microsoft.Office.Interop.Excel.Application application = null;
   Microsoft.Office.Interop.Excel.Workbook workBook = null;
   try
   {
    application = new Application();
    application.Interactive = false;
    object target = targetPath;
    object type = targetType;
    workBook = application.Workbooks.Open(sourcePath, missing, missing, missing, missing, missing,
     missing, missing, missing, missing, missing, missing, missing, missing, missing);
    application.Interactive = true;
    workBook.ExportAsFixedFormat(targetType, target, XlFixedFormatQuality.xlQualityStandard, true, false, missing, missing, missing, missing);
    result = true;
   }
   catch(Exception ex)
   {
    Logger.Error("excel转pdf异常,异常信息:" + ex.Message + "。堆栈信息:" + ex.StackTrace); 
    result = false;
   }
   finally
   {
    if (workBook != null)
    {
     workBook.Close(true, missing, missing);
     workBook = null;
    }
    if (application != null)
    {
     application.Quit();
     application = null;
    }
    GC.Collect();
    GC.WaitForPendingFinalizers();
    GC.Collect();
    GC.WaitForPendingFinalizers();
   }
   return result;
  }

</div>

这个方法需要依赖于本机上面的office Com组件,如果你安装Office的时候,没有安装com组件相关的dll,这个方法也是用不了的,并且还有一个最大的问题就是执行application.Workbooks.Open(sourcePath, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);这一个方法的时候需要当前用户有操作Excel Application这个组件的权限,尤其是部署到IIS上面之后,需要配置一系列的权限,很是麻烦。

(2)Spire.XLS实现转换

通过上文,我们知道,Spire.Office提供了Spire.XLS和Spire.PDF两个组件,那么他们之间的转换就简单了。我们还是模拟一个文件上传的功能。

前端有一个上传控件:

后台有一个接收上传文件的方法如下:

[HttpPost]
  public JsonResult UploadFile()
  {
   var strRes = string.Empty;
   var oFile = Request.Files["txt_file"];
   Workbook book = new Workbook();
   book.LoadFromStream(oFile.InputStream);
   var strFullName = @"D:\Data\Upload\" + "First" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".pdf";
   book.SaveToPdf(strFullName);
   return Json(new object { }, JsonRequestBehavior.AllowGet);
  }

</div>

就这么简单的几句话即可实现将上传的Excel转成PDF文件。根据源文件生成Workbook对象,Spire.XLS提供了多种方式,我们最常用的两种方式如下:

// 根据文件路径生成workbook.
public void LoadFromFile(string fileName);
// 根据文件流生成workbook.
public void LoadFromStream(Stream stream);

</div>

2.1、最原始的转换

原始Excel文件:

转换成PDF之后

2.2、不好看?加一个边框即可。

转换之后

2.3、自定义转换的PDF

有些情况下,我们Excel里面有很多列,导致默认生成的pdf换行问题,这样将会导致PDF的可读性很差,这种情况,Spire.XLS为我们提供了自定义转换PDF的方式,比如可以指定PDF的页宽,页高,大小等等属性。

比如有如下Excel文档需要转换成PDF文件:

如果按照常规的转换,生成的PDF的宽度不足以显示Excel的所有列,于是转换出来的效果这样:

为了解决这种问题,组件为我们提供了如下方法:




 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#组件系列 你值得拥有的一款Excel处理神器Spire.XLS

相关文章

  • 2017-05-28C#实现为类和函数代码自动添加版权注释信息的方法
  • 2017-05-28C#实现关机重启及注销实例代码
  • 2017-05-28C# Winform使用扩展方法实现自定义富文本框(RichTextBox)字体颜色
  • 2017-05-28C#二维数组基本用法实例
  • 2017-05-28字符串和十六进制之间的转换方法实例
  • 2017-05-28c#实现隐藏与显示任务栏的方法详解
  • 2017-05-28C#实现两个richtextbox控件滚动条同步滚动的简单方法
  • 2017-05-28C#中String StringBuilder StringBuffer类的用法
  • 2017-05-28C#访问SQL Server数据库的实现方法
  • 2017-05-28C#动态生成PictureBox并指定图片的方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#、ASP.NET通用扩展工具类之TypeParse
    • C# 清除cookies的代码
    • C#实现的Socket服务器端、客户端代码分享
    • C# 中DateTime 的使用技巧汇总
    • 比较2个datatable内容是否相同的方法
    • C#中Invoke 和 BeginInvoke 的真正涵义
    • 用C#将图片保存至Oracle BLOB字段中的方法
    • WinForm实现为ComboBox绑定数据源并提供下拉提示功能
    • C#使用Jquery zTree实现树状结构显示 异步数据加载
    • c#委托把方法当成参数(实例讲解)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有