有一位朋友推荐了我 Spire.Office (官网:http://www.e-iceblue.com/) —— 基于.NET的办公软件库,说不错。

究竟怎样呢?仅仅有亲測一下才干知道了。

前言
     网络上流传的 Office 库非常多。可谓“百家争鸣”,但有时候选择多了反而easy让人产生困惑。难以抉择。所以最能吸引程序猿的 Office 库一般都具有以下的长处:
(1)功能完整

(2)接口易用

(3)文档齐全

(4)easy集成和维护


     以下是 Spire.Office 官方提供的组件。其覆盖了一般的办公软件的开发需求,像 Word、Excel、ppt、Pdf等常见的电子文档的操作类库都能够在这里找到。

图 1  Spire.Office 提供的组件

     随安装包一起的帮助文档,也非常完整,唯一不足就是缺少对应的文字说明,只是也不影响使用。由于官方的在线教程(http://www.e-iceblue.com/Tutorials.html)实在是具体的“令人发指”,以下是官方的关于 Spire.XLS 库的在线教程(部分)。光看文件夹就已经非常清楚其提供的丰富功能了,每一个功能点都提供了详尽的文档说明和演示样例代码(C#/VB.NET),我以下写的demo程序也主要是參考了官方的在线教程。
   

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb2h1aV9odWJlaQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" height="336" width="448">

图 2  官方的在线教程


Spire.XLS 介绍
     Spire.Office 提供的组件非常丰富,但个人精力有限。仅仅能挑当中一个组建的部分功能进行測试。Excel在很多环境下都经常使用。这里就以Spire.XLS组件来測试下。
先看看 Spire.XLS 为我们提供了哪些功能:
(1)仅仅须要 Spire.XLS 组件就可以独立地完毕 Excel 文件的相关操作,不须要额外安装 Micosoft Office 软件。

(2)提供强大且高质量的 Excel 文件转换,包含常见的 PDF、HTML、XML、CSV、Image等
(3)创建Excel报表
(4)可自由编辑Excel工作表
(5)可在执行时方便的操作Excel单元和计算引擎
(6)还提供了图表、数据等方面的操作


基于 Spire.XLS 的格式转换程序

     以下是我编写的一个demo程序,能够完毕 Excel 文档的转换功能,编写这个程序的实际代码不足20行,10分钟就编写好了,这足以验证 Spire.XLS 的强大和易用。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb2h1aV9odWJlaQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" height="120" width="509">

图 3  Spire.XLS库转换功能測试程序


图 4  Spire.XLS 转换Test.xls后生成的文件

以下是我编写这个demo的过程。假设你感兴趣能够继续往下看。



1、下载 Spire.XLS 库,并安装(下载地址:http://www.e-iceblue.com/Introduce/free-xls-component.html)。

2. 在 VS2010 中新建一个 Windows Form Application 项目。


图 5  新建 C# Windows Form 程序

3. 在项目中加入对 Spire.XLS 库的引用。


图 6  加入对 Spire.XLS 库的引用(1)


                                图 7  加入对 Spire.XLS 库的引用(2)


图 8  新加入的引用

4. 设计窗口界面,例如以下(使用默认的改控件名)

图 9  測试程序界面

5. 加入实现代码,例如以下
    思路:点击“浏览”button时。弹出打开文件对话框选择源文件。默认转换的目标文件类型是PDF(由内部成员变量保存),切换不同目标文件类型时,更新内部标识目标文件类型的变量值。

点击“转换”button时,弹出保存文件对话框,待输入保存路径并确认后,调用 Spire.XLS 库完毕 Excel 文件格式的转换,同一时候保存到目标路径。以下是源码。因为代码不多就直接贴出来吧。

using System;
using System.Windows.Forms;
using Spire.Xls; namespace XSLTest
{
public partial class Form1 : Form
{
/// <summary>
/// 转换的目标文件类型
/// </summary>
private Spire.Xls.FileFormat fileFormat = FileFormat.PDF; public Form1()
{
InitializeComponent();
radioButton1.CheckedChanged += new EventHandler(radioButton_CheckedChanged);
radioButton2.CheckedChanged += new EventHandler(radioButton_CheckedChanged);
radioButton3.CheckedChanged += new EventHandler(radioButton_CheckedChanged);
radioButton4.CheckedChanged += new EventHandler(radioButton_CheckedChanged);
radioButton5.CheckedChanged += new EventHandler(radioButton_CheckedChanged);
radioButton6.CheckedChanged += new EventHandler(radioButton_CheckedChanged); } /// <summary>
/// 选择源文件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog fileDialog = new OpenFileDialog();
fileDialog.Filter = "Micosoft Excel 97/2000/XP/2003 文件(*.xls)|*.xls"
+ "|" + "Micosoft Excel 2007/2010 文件(*.xlsx)|*.xlsx";
if (fileDialog.ShowDialog() == DialogResult.OK)
{
textBox1.Text = fileDialog.FileName;
}
} /// <summary>
/// 转换源文件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
// 源文件路径
string sourceFilePath = textBox1.Text; SaveFileDialog saveFileDialog = new SaveFileDialog();
switch (fileFormat)
{
case FileFormat.Bitmap:
saveFileDialog.Filter = "Bitmap(*.bmp)|*.bmp";
break;
case FileFormat.PDF:
saveFileDialog.Filter = "PDF Document(*.pdf)|*.pdf";
break;
case FileFormat.ODS:
saveFileDialog.Filter = "OpenOffice Document Spreadsheet(*.ods)|*.ods";
break;
case FileFormat.CSV:
saveFileDialog.Filter = "CSV(*.csv)|*.csv";
break;
case FileFormat.XML:
saveFileDialog.Filter = "XML(*.xml)|*.xml";
break;
case FileFormat.XPS:
saveFileDialog.Filter = "XPS(*.xps)|*.xps";
break;
default:
break;
}
saveFileDialog.FilterIndex = 0;
if (saveFileDialog.ShowDialog() != DialogResult.OK)
return;
// 转换后的目标文件路径
string destFilePath = saveFileDialog.FileName; // 转换
Workbook workbook = new Workbook();
workbook.LoadFromFile(sourceFilePath);
workbook.SaveToFile(destFilePath, fileFormat);</span> MessageBox.Show("转换完毕", "消息", MessageBoxButtons.OK, MessageBoxIcon.Information);
} private void radioButton_CheckedChanged(object sender, EventArgs e)
{
System.Windows.Forms.RadioButton radioButton = sender as System.Windows.Forms.RadioButton;
if (radioButton == null)
return;
switch (radioButton.Text.ToUpper())
{
case "BITMAP":
fileFormat = FileFormat.Bitmap;
break;
case "PDF":
fileFormat = FileFormat.PDF;
break;
case "ODS":
fileFormat = FileFormat.ODS;
break;
case "XPS":
fileFormat = FileFormat.XPS;
break;
case "XML":
fileFormat = FileFormat.XML;
break;
case "CSV":
fileFormat = FileFormat.CSV;
break;
default:
break;
}
}
}
}


6 程序的公布

      基于 Spire.XLS 的程序公布非常easy,仅仅须要将对应的dll(能够在Spire.XLS的安装文件夹下找到)文件复制到和可运行程序同样文件夹。



图 10  程序的公布

最后附上源码和可运行的demo程序的下载地址:http://www.kuaipan.cn/file/id_123106879533606129.htm


总结
     以上測试仅仅是Spire.Office的“冰山一角”。很多其它强大易用的功能,能够參考官方在线教程,当然假设是你感兴趣的话。
     关于电子文档操作的类库如今非常多,但像Spire.Office这种功能齐全、接口易用、文档丰富的类库较少,Spire.Office后面有商业公司做支撑。相信然后还会更好。

假设项目有类似需求,像高速低成本集成类似功能,能够考虑Spire.Office

Spire.XLS for .NET 測评的更多相关文章

  1. C#组件系列——又一款Excel处理神器Spire.XLS,你值得拥有(二)

    前言:上篇 C#组件系列——又一款Excel处理神器Spire.XLS,你值得拥有 介绍了下组件的两个功能,说不上特色,但确实能解决我们项目中的一些实际问题,这两天继续研究了下这个组件,觉得有些功能用 ...

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

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

  3. 使用Free Spire.XLS插入图表

    使用Free Spire.XLS插入图表 前言 最近在研究Office中间件,上网搜索了下,比较出名的有两个:Aspose和Spire,两者功能齐全,对Office的支持趋近完善,但售价不菲.仔细搜索 ...

  4. 利用免费的Spire.XLS控件制作Excel报表

    我们小组上个季度接手了一个项目其中需要实现创建excel文档的功能,寻找实现这个功能的控件的任务分配给了我,通过百度搜索我找到了一个免费的控件,它是由E-iceblue公司推出的spire.xls控件 ...

  5. 使用SPIRE.XLS来创建Excel 工作簿

               使用SPIRE.XLS来创建Excel 工作簿     概要 最近在研究 .NET 控件,使用这些控件在程序中可以快速低成本实现功能. 在这一篇中我们使用的控件是Spire.XL ...

  6. Office组件之Spire.XLS的DotNet操作

    Overview 在项目中,我们经常需要将程序中获得的大量数据导出到Excel表格中,打印报表:进一步,还可能生成其折线图,对数据的变化趋势进行分析,从而更好地开展项目工作. 最近,我发现了一个对于D ...

  7. 【原创】.NET读写Excel工具Spire.Xls使用(1)入门介绍

    在.NET平台,操作Excel文件是一个非常常用的需求,目前比较常规的方法有以下几种: 1.Office Com组件的方式:这个方式非常累人,微软的东西总是这么的复杂,使用起来可能非常不便,需要安装E ...

  8. 【原创】.NET读写Excel工具Spire.Xls使用(2)Excel文件的控制

                  本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html .NET读写Excel工具Spire.Xls使用文章 ...

  9. 【原创】.NET读写Excel工具Spire.Xls使用(3)单元格控制

                  本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html .NET读写Excel工具Spire.Xls使用文章 ...

随机推荐

  1. android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 3

           今天在写一个小项目的数据库部分的功能时,出现了一个这样的问题:java.lang.RuntimeException: Failure delivering result ResultIn ...

  2. MPMoviePlayerController导致statusBar消失,导致内存泄露leak

    1.MPMoviePlayerController使statusBar消失 同事写项目时,运行程序总导致statusBar状态条消失,然后就是界面会上移20个像素,导致最下面空白界面,找原因一直不知道 ...

  3. POJ 2286 The Rotation Game 迭代搜索深度 + A* == IDA*

    感觉这样的算法还是比較局限的吧,反复搜索是一个不好的地方,并且须要高效的估值函数来进行强剪枝,这点比較困难. 迭代搜索深度是一个比較炫酷的搜索方式,只是有点拿时间换空间的感觉. 首先迭代深度比較搓的写 ...

  4. c语言,gdb

    Get gdb call stack http://blog.csdn.net/zoufeiyy/article/details/1490241 Debugging with GDB - Examin ...

  5. javascript面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)

    面向对象可以把程序中的关键模块都视为对象,而模块拥有属性及方法.这样我们如果把一些属性及方法封装起来,日后使用将非常方便,也可以避免繁琐重复的工作.接下来将为大家讲解在JS中面向对象的实现.   工厂 ...

  6. Android程序检测网络是否可用

    在做Android应用程序中,连接网络的时候,常常要用到检测网络状态是否可用,在这里分享一个比较好用的方法. 本人参考:http://blog.csdn.net/sunboy_2050/article ...

  7. ubuntu 安装maven提示出错 The program &#39;mvn&#39; can be found in the following packages

    问题: I am trying to install apache maven 3 in Ubuntu 12.04 lts. What I did was open the terminal then ...

  8. ASP.NET - JQuery的.getJSON给Dropdownlist绑定Item

    http://www.cnblogs.com/Mac_Hui/archive/2010/07/27/1785864.html 1.首先建立以个.ashx文件(Generic Handler),在此文件 ...

  9. ASP.NET - 跳转页面

    1. Response.Redirect("../Manager/AddBookInfoImages.aspx?id=" + Server.UrlEncode(ReturnValu ...

  10. TCP/IP笔记 二.网络层(2)——ICMP,RIP,OSPF,BGP

    1. ICMP ICMP (Internet Control Message Protocol) 作用:提高 IP 数据报交付成功的机会. 1.1 特点 ICMP 允许主机或路由器报告差错情况和提供有 ...