无法使用.Net4.0中的Process.Start()打开excel文件

时间:2012-03-20 03:01:49

标签: c# .net excel process.start

最近,.Net 1.1的一个旧项目正在迁移到.Net4.0。该项目使用以下方法打开excel文件:

Process process = new Process();

try
{
  process.StartInfo.FileName = marco_file;
  process.Start();
}
catch(Exception)
{
}
finally
{
  process.Close();
}

marco_file是带有宏的excel文件的路径,如“C:\ project \ test.xls” 当excel文件打开时,它中的宏将立即运行。

在.Net1.1中,代码和宏都运行良好。在.Net4中,代码无异常运行。但是这个宏没有用。

为什么excel文件中的宏没有运行?

我的环境是Win7 64bit。 Office 2010 64bit。 IIS 7.5

由于

当我更改为以下代码并运行调试模式时

process.StartInfo.FileName = marco_file;
if (process.Start())
{
    Debug.WriteLine("-->start ");
}
else
{
    Debug.WriteLine("-->failed ");
}

结果是它进入了else块,这意味着进程无法启动。

任何人都知道为什么?

1 个答案:

答案 0 :(得分:0)

检查Excel中的安全性。默认情况下,Excel 2010将在您打开包含它们的工作簿时禁用宏,并且您必须明确启用它们。

要启用宏,您需要转到:

File tab on the ribbon => Options
                       => Trust Center
                       => Trust Center Settings...
                       => Macro Settings

此处允许宏自动运行的唯一选项是:

Enable all macros (not recommended; potentially dangerous code can run)

请注意警告。