无法在C#中打开Excel文件
本文关键字:Excel 文件 | 更新日期: 2023-09-27 18:21:42
我的项目中有以下C#函数,它应该打开并返回现有的Excel工作簿对象:
Application _excelApp;
// ...
private Workbook OpenXL(string path, string filename)
{
try
{
if (_excelApp == null)
{
_excelApp = new Application();
}
Workbook workBook = _excelApp.Workbooks.Open(path + filename, // Name
0, // Do not update links
true); // Open read-only
return workBook;
}
catch (Exception e)
{
_excelApp = null;
throw new ArgumentException("Error opening " + path + filename, e);
}
}
但是当我用"C:''"answers"scratch.xlsx"运行它时,Open()调用会抛出以下错误:
Microsoft Excel cannot access the file 'C:'scratch.xlsx'. There are several possible reasons:
• The file name or path does not exist.
• The file is being used by another program.
• The workbook you are trying to save has the same name as a currently open workbook.
文件和路径确实存在:我已经从错误消息中复制了路径,并将其粘贴到命令窗口中,文件将加载到Excel中。文件没有被锁定:Excel可以很好地打开它,但我的程序不能,即使是在重新启动后。我不是想保存它,我是想打开它,所以最后一个选项无关紧要。
我不明白为什么这段简单的代码不起作用。任何建议都将不胜感激。
[编辑]我现在已经尝试从我的个人网络驱动器(M:)和U盘打开该文件。一切都无济于事。
该应用程序实际上是一个Windows服务,在本地系统帐户下运行并生成报告。它目前编写的CSV报告没有任何访问问题。我现在正试图让它打开一个excel文件作为模板报告,并填写各种字段。打开Excel文件时会失败。我认为每个人都建议的管理员帐户选项是转移注意力,因为它可以毫无问题地编写CSV文件。[/edit]
---阿利斯泰尔。
我发现了以下页面:
http://social.msdn.microsoft.com/Forums/en-US/b81a3c4e-62db-488b-af06-44421818ef91/excel-2007-automation-on-top-of-a-windows-server-2008-x64
上面写着。。。
不支持自动化办公产品UI less。Windows Server 2008和Excel 2007似乎强制执行了给定的语句。
提问者随后准确地描述了我使用Windows服务时所处的情况,该服务无法打开Excel文件,尽管命令行程序中的相同代码没有问题。
回复建议创建以下文件夹:
Windows 2008 Server x64:C:''Windows''SysWOW64''config''systemprofile''DDesktop
Windows 2008 Server x86:C:''Windows''System32''config''systemprofile''DDesktop
我试过这个,效果很好!有人能解释为什么需要它以及它的缺点吗?
谢谢,
---阿利斯泰尔。
以管理员身份运行程序,除非用户以管理员身份执行,否则程序无法访问C:/。您可以通过更改ApplicationManifest使程序提示用户必须以管理员身份运行:如何强制我的.NET应用程序以管理员身份进行运行?
我遇到了同样的问题我调查了有关"注册表黑客"的信息。
毕竟,我找到了另一个不更改注册表值的解决方案一切正常。
这个解决方案是。。。
・Windows 2008 Server x64
请制作此文件夹。
C:'Windows'SysWOW64'config'systemprofile'Desktop
・Windows 2008 Server x86
请制作此文件夹。
C:'Windows'System32'config'systemprofile'Desktop
而不是dcomcnfg.exe.
这次操作消除了我系统中的办公自动化问题。
系统配置文件文件夹中似乎需要一个Desktop文件夹才能通过Excel打开文件。
它从Windows2008、Windows2003中消失,我认为这是造成这个错误的原因。
我认为它比"注册表破解"更安全。
如果你尝试这个解决方案,请告诉我结果。
我今天遇到了这个问题。
令人惊讶的是,该错误似乎是在应用程序以管理员身份运行时发生的。
在我们转到Windows 10之后,有些东西(主要与IIS有关)只有在以管理员身份运行Visual Studio的情况下才能工作,所以很快就成为了以管理员身份启动VS的习惯。
解决方案是NOT以管理员身份运行应用程序。
这可能与我们的工作环境是如何设置的有关,但我认为,如果其他人遇到同样的问题,而其他解决方案对他们也不起作用,那就值得分享。