有一位朋友推荐了我 Spire.Office (官网: http://www.e-iceblue.com/
) —— 基于.NET的办公软件库,说不错。到底如何呢?只有亲测一下才能知道了。
前言 网络上流传的 Office 库很多,可谓“百家争鸣”,但有时候选择多了反而容易让人产生困惑,难以抉择。所以最能吸引程序员的 Office 库一般都具有下面的优点: (1)功能完整
(2)接口易用
(3)文档齐全
(4)容易集成和维护
下面是 Spire.Office 官方提供的组件,其覆盖了一般的办公软件的开发需求,像 Word、Excel、ppt、Pdf等常见的电子文档的操作类库都可以在这里找到。
文章图片
图 1Spire.Office 提供的组件
随安装包一起的帮助文档,也很完整,唯一不足就是缺少相应的文字说明,不过也不影响使用。因为官方的在线教程( http://www.e-iceblue.com/Tutorials.html)实在是详细的“令人发指”,下面是官方的关于 Spire.XLS 库的在线教程(部分),光看目录就已经很清楚其提供的丰富功能了,每个功能点都提供了详尽的文档说明和示例代码(C#/VB.NET),我下面写的demo程序也主要是参考了官方的在线教程。
文章图片
文章图片
图 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 的强大和易用。
文章图片
图 3Spire.XLS库转换功能测试程序
文章图片
图 4Spire.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;
}
}///
/// 转换源文件
///
///
/// 【Spire.XLS for .NET 测评】
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