C#中创建不存在的Excel文件时出现找不到文件错误
Excel Interop 找不到指定文件错误
代码示例
string path = "F:\\abc\\LoadData.xlsx"; Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel._Workbook workbook = null; // 检查文件是否存在 if (!System.IO.File.Exists(path)) workbook = app.Workbooks.Add(path); else workbook = app.Workbooks.Open(path, ReadOnly: false); Microsoft.Office.Interop.Excel._Worksheet? worksheet = null; app.Visible = false; worksheet = workbook.Sheets["Sheet1"]; worksheet = workbook.ActiveSheet;
错误信息
抱歉,我们找不到F:\abc\LoadData.xlsx。它是否已被移动、重命名或删除?
错误截图:
问题原因
Workbooks.Add(path)用法错误:该方法的参数是模板文件路径,而非要创建的新文件路径。当指定的模板文件不存在时,Excel会抛出找不到文件的异常。
解决方法
修改文件不存在时的逻辑,先创建空白工作簿再保存到目标路径,同时确保目标目录存在:
string path = "F:\\abc\\LoadData.xlsx"; Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel._Workbook workbook = null; app.Visible = false; // 确保目标目录存在 string directory = System.IO.Path.GetDirectoryName(path); if (!System.IO.Directory.Exists(directory)) { System.IO.Directory.CreateDirectory(directory); } if (!System.IO.File.Exists(path)) { // 创建空白工作簿 workbook = app.Workbooks.Add(); // 保存到指定路径 workbook.SaveAs(path); } else { workbook = app.Workbooks.Open(path, ReadOnly: false); } // 获取或创建Sheet1 Microsoft.Office.Interop.Excel._Worksheet? worksheet = workbook.Sheets["Sheet1"]; if (worksheet == null) { worksheet = workbook.Sheets.Add(); worksheet.Name = "Sheet1"; } // 后续业务逻辑... // 释放资源(避免Excel进程残留) workbook.Close(); app.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet); System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook); System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
内容的提问来源于stack exchange,提问作者Shruti P
相关产品推荐
相关产品推荐

