有一位朋友推荐了我 Spire.Office (官网: http://www.e-iceblue.com/
) —— 基于.NET的办公软件库,说不错。
基于 Spire.XLS 的格式转换程序
以下是我编写这个demo的过程。假设你感兴趣能够继续往下看。
6 程序的公布
基于 Spire.XLS 的程序公布非常easy,仅仅须要将对应的dll(能够在Spire.XLS的安装文件夹下找到)文件复制到和可运行程序同样文件夹。
最后附上源码和可运行的demo程序的下载地址: http://www.kuaipan.cn/file/id_123106879533606129.htm
究竟怎样呢?仅仅有亲測一下才干知道了。
前言
网络上流传的 Office 库非常多。可谓“百家争鸣”,但有时候选择多了反而easy让人产生困惑。难以抉择。所以最能吸引程序猿的 Office 库一般都具有以下的长处:
(1)功能完整
(2)接口易用
(3)文档齐全
(4)easy集成和维护
(2)接口易用
(3)文档齐全
(4)easy集成和维护
图 1 Spire.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 的强大和易用。
图 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
{
///
/// 转换的目标文件类型
///
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 的程序公布非常easy,仅仅须要将对应的dll(能够在Spire.XLS的安装文件夹下找到)文件复制到和可运行程序同样文件夹。
最后附上源码和可运行的demo程序的下载地址: http://www.kuaipan.cn/file/id_123106879533606129.htm
总结
以上測试仅仅是Spire.Office的“冰山一角”。很多其它强大易用的功能,能够參考官方在线教程,当然假设是你感兴趣的话。
关于电子文档操作的类库如今非常多,但像Spire.Office这种功能齐全、接口易用、文档丰富的类库较少,Spire.Office后面有商业公司做支撑。相信然后还会更好。
假设项目有类似需求,像高速低成本集成类似功能,能够考虑Spire.Office