Spire.XLS for .NET 测评

     有一位朋友推荐了我 Spire.Office (官网: http://www.e-iceblue.com/ ) —— 基于.NET的办公软件库,说不错。到底如何呢?只有亲测一下才能知道了。

前言
     网络上流传的 Office 库很多,可谓“百家争鸣”,但有时候选择多了反而容易让人产生困惑,难以抉择。所以最能吸引程序员的 Office 库一般都具有下面的优点:
(1)功能完整
(2)接口易用
(3)文档齐全
(4)容易集成和维护

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

图 1  Spire.Office 提供的组件

     随安装包一起的帮助文档,也很完整,唯一不足就是缺少相应的文字说明,不过也不影响使用。因为官方的在线教程( http://www.e-iceblue.com/Tutorials.html)实在是详细的“令人发指”,下面是官方的关于 Spire.XLS 库的在线教程(部分),光看目录就已经很清楚其提供的丰富功能了,每个功能点都提供了详尽的文档说明和示例代码(C#/VB.NET),我下面写的demo程序也主要是参考了官方的在线教程。
     Spire.XLS for .NET 测评_第1张图片
图 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 的强大和易用。
Spire.XLS for .NET 测评_第2张图片
图 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. 添加实现代码,如下
    思路:点击“浏览”按钮时,弹出打开文件对话框选择源文件。默认转换的目标文件类型是PDF(由内部成员变量保存),切换不同目标文件类型时,更新内部标识目标文件类型的变量值。点击“转换”按钮时,弹出保存文件对话框,待输入保存路径并确认后,调用 Spire.XLS 库完成 Excel 文件格式的转换,同时保存到目标路径。下面是源代码,由于代码不多就直接贴出来吧。
using System;
using System.Windows.Forms;
using Spire.Xls;

namespace XSLTest
{
    public partial class Form1 : Form
    {
        /// 
        /// 转换的目标文件类型
        /// 
        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);

        }

        /// 
        /// 选择源文件
        /// 
        /// 
        /// 
        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;
            }
        }

        /// 
        /// 转换源文件
        /// 
        /// 
        /// 
        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);

            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 的程序发布很简单,只需要将相应的dll(可以在Spire.XLS的安装目录下找到)文件拷贝到和可执行程序相同目录。

图 10  程序的发布

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

总结
     上面的测试只是Spire.Office的“冰山一角”,更多强大易用的功能,可以参考官方在线教程,当然如果是你感兴趣的话。
     关于电子文档操作的类库现在很多,但像Spire.Office这样的功能齐全、接口易用、文档丰富的类库较少,Spire.Office后面有商业公司做支撑,相信然后还会更好。如果项目有类似需求,像快速低成本集成类似功能,可以考虑Spire.Office

你可能感兴趣的:(C#.NET)