Excel互操作 - 保存我新创建的电子表格会引发异常

时间:2014-07-24 15:22:50

标签: c# excel

我使用C#创建电子表格,这是代码:

try
{
    _excel = new Excel.Application();
    _excel.Visible = false;
    _workbook = _excel.Workbooks.Add( Type.Missing );
    _worksheet = (Excel.Worksheet)_workbook.Sheets[1];
    createColumnHeaders();
    _workbook.SaveCopyAs( savePath );
}
catch (Exception ex)
{
       Logger.Error( "Error creating spreadsheet: {0}", ex.Message );
}
finally
{
    // Cleanup
}

运行良好,将工作表保存到savePath中。但是,如果我将SaveCopyAs()更改为

SaveAs( savePath, 
        Excel.XlFileFormat.xlWorkbookNormal, 
        Type.Missing,
        Type.Missing, 
        false, 
        false, 
        XlSaveAsAccessMode.xlNoChange,
        Type.Missing, 
        Type.Missing, 
        Type.Missing, 
        Type.Missing, 
        Type.Missing );

然后应用程序获得一个COMException说

'C:\//temp/00-04.20.18-24-07-2014/' cannot be accessed. The file may be corrupted,        
located on a server that is not responding, or read-only.

这是一个痛苦,因为我真的需要以.xls格式保存,而不是.xlsx。为SaveAs()发生此异常的任何想法?

1 个答案:

答案 0 :(得分:2)

有点明显出现了什么问题。当然,这不是一个有效的路径,//应该只显示为命名包含文件系统的机器的路径的主角。

你必须解除" Windows的工作方式,如Unix"使用Microsoft应用程序软件时的期望。进行直接操作系统调用时,路径中的正斜杠不是问题。 Windows支持它们,至少是因为Windows NT曾经支持开箱即用的Posix。其他应用程序也是如此,特别是那些源代码库已有25年历史的应用程序。但不仅限于旧代码VS has problems too。微软对待这类错误报告有点像杰夫阿特伍德对待pluralization bugs

正确的路径分隔符没有任何意外是反斜杠。