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

2019-12-30 13:54:39王振洲

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

C#,组件,Excel,Spire.XLS

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

C#,组件,Excel,Spire.XLS

三、组件功能介绍

关于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;
  }

这个方法需要依赖于本机上面的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上面之后,需要配置一系列的权限,很是麻烦。