无法访问未使用的 excel 文件

本文关键字:excel 文件 未使用 访问 | 更新日期: 2023-09-27 18:30:27

我收到此错误消息

System.Runtime.InteropServices.COMException (0x800A03EC): Microsoft Excel cannot access the file '''<NetworkPath>'<excelName>.xls'. 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.
   at Microsoft.Office.Interop.Excel.Workbooks.Open(String Filename, Object UpdateLinks, Object ReadOnly, Object Format, Object Password, Object WriteResPassword, Object IgnoreReadOnlyRecommended, Object Origin, Object Delimiter, Object Editable, Object Notify, Object Converter, Object AddToMru, Object Local, Object CorruptLoad)

使用互操作的需要是我有与 excel 兼容的网页(.XLHTML)我需要将该文件转换为.XLSX,因为我想阅读该文件并使用其中的信息。

所以我找到了一种方法并编写了一个过程

static string ConvertExcelToXlsx(string excelFilePath, string tempDir)
{
    // get new extension
    string xlsxFilePath = tempDir + Path.GetFileNameWithoutExtension(excelFilePath) + ".xlsx";
    /* delete temporary excel if exists */
    File.Delete(xlsxFilePath);
    // save original .XLHTML to new .XLSX format
    Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
    excelApp.Visible = false;
    Microsoft.Office.Interop.Excel.Workbook eWorkbook = excelApp.Workbooks.Open(excelFilePath, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
    eWorkbook.SaveAs(xlsxFilePath, Microsoft.Office.Interop.Excel.XlFileFormat.xlOpenXMLWorkbook, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
    eWorkbook.Close(false, Type.Missing, Type.Missing);
    // return file path to new .XLSX file
    return xlsxFilePath;
}

在我的测试中,在我的本地 PC 和服务器上它工作正常,但现在它没有,我收到上面的错误消息。

我尝试从系统内部运行程序以查找该文件是否被另一个进程使用 http://technet.microsoft.com/en-us/sysinternals/bb896655.aspx

句柄.exe原始Excel.xls(扩展名是.xls,但实际上是它的.xlhtml)

但它说它没有被另一个进程使用,并且 filePath 是正确的。因此,错误消息中的最后一个项目符号The workbook you are trying to save has the same name as a currently open workbook.'"但是在桌面上没有打开的 excel 文件,在任务管理器中我也看不到 excel 进程。那么可能是什么问题,我该如何解决这个问题?

谢谢

PS:所有系统都是安装了Excel的Windows 7。

无法访问未使用的 excel 文件

我认为该文件可能被您自己的进程锁定。
以下行中也存在问题或泄漏Microsoft.Office.Interop.Excel.Workbook eWorkbook = excelApp工作簿打开(excelFilePath,

这。。(两个点问题)将导致泄漏。您可能会看到一个 excel .exe针对 Excel 应用创建的每个实例运行。