【发布时间】:2012-02-29 09:03:55
【问题描述】:
我正在开发一个可以从多种不同格式导入数据的应用程序。我想包括 CSV 和其他平面文件类型(简单)以及 XLS 和 XLSX。
看起来我最好的选择是使用 Interop.Excel,据我所知,只有安装了 Excel 才能使用它。
有没有办法检查 Interop.Excel 是否可用并告诉用户必须安装 Excel 才能从 XLS/XLSX 导入?
【问题讨论】:
我正在开发一个可以从多种不同格式导入数据的应用程序。我想包括 CSV 和其他平面文件类型(简单)以及 XLS 和 XLSX。
看起来我最好的选择是使用 Interop.Excel,据我所知,只有安装了 Excel 才能使用它。
有没有办法检查 Interop.Excel 是否可用并告诉用户必须安装 Excel 才能从 XLS/XLSX 导入?
【问题讨论】:
Microsoft.Office.Interop.Excel 是一个Office Primary Interop Assembly,无论客户端是否安装了 Office,您都可以随应用程序一起提供它。在您开始使用它之前,它不会造成任何伤害。所以在使用它之前你可以look at the registry查看是否安装了Office。
【讨论】:
如果您想支持本机 Microsoft Excel 文件并且不想依赖 Microsoft Excel,请查看 OpenXML。这仅适用于较新的 Excel XML 格式文件。如果您的需求很简单,并且只需要从旧格式的 Excel 文件或 CSV 文件中读取数据,您可以使用 Ace 提供程序和/或 Microsoft Jet OLE DB 4.0 提供程序
OpenXML 允许您读取/写入新的 XML 格式的 Excel 文件。 StackOverflow 上有几个线程,其中包含有关使用 OpenXML 的更多信息,值得一试。
【讨论】:
尝试创建一个 Excel 实例。如果它产生异常,则表示未安装 Excel,互操作将不起作用。如果没有例外,那么您可以使用互操作。
using Excel = Microsoft.Office.Interop.Excel;
...
private bool CheckForExcel()
{
bool exists = false;
try
{
var excel = new Excel.Application();
exists = true;
}
catch (Exception)
{
;
}
return exists;
}
【讨论】: