我在我的項目,該項目應該打開並返回一個現有的Excel工作簿對象下面的C#功能:無法打開Excel文件在C#
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:\」和「scratch.xlsx」,開放()調用引發以下錯誤:
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 :)和USB棒打開該文件。一切都無濟於事。
該應用程序實際上是一個Windows服務,在本地系統帳戶下運行並生成報告。它目前編寫的CSV報告沒有任何訪問問題。我現在試圖讓它打開一個excel文件作爲模板報告並填寫各個字段。它是在打開Excel文件時失敗的。我在想,每個人都建議的管理員帳戶選項是一個紅色的鯡魚,因爲它可以寫入CSV文件沒有問題。 [/編輯]
--- Alistair。
請嘗試以管理員身份運行?用戶帳戶是否具有對文件的讀取權限? –
你或c#轉義'\'? – Kami
不要像'path + filename'一樣加入路徑;使用'Path.Combine(路徑,文件名)'而不是! – Marco