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

C# Excel互操作-保存新创建的电子表格会引发异常,c#,excel,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.SaveCop

我正在使用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
}
这样运行良好,将工作表保存到保存路径中。但是,如果我将SaveCopyAs()更改为

然后应用程序得到一个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()会出现这种异常吗?

很明显这里出了什么问题。当然,这不是一个有效的路径,
/
应该只作为包含文件系统的机器名称路径的前导字符出现

在使用Microsoft应用程序软件时,您必须取消“Windows与Unix一样工作”的预期。在进行直接操作系统调用时,路径中的正向斜杠不是问题。Windows很好地支持它们,一点也不因为Windows NT曾经支持Posix开箱即用。对于其他应用程序来说,情况并非如此,尤其是那些源代码库已经有25年历史的应用程序。但不限于旧代码。微软对待此类错误报告有点像杰夫·阿特伍德对待


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

如果您包含
保存路径中的内容,这将非常有用C:\//temp/00-04.20.18-24-07-2014/“在我看来不像是一个真正的文件路径,C:\//temp/00-04.20.18-24-07-2014/”后面有一个反斜杠和两个斜杠:。是的,这也让我产生了怀疑,道格。但是根据调试器“C:/temp/00-04…”,路径是(SaveCopyAs()方法使用完全相同的路径将文件放在正确的位置)。谢谢。可笑的是,我做了一个“savePath.Replace('\\','/')”来解决这个问题(显然没有改变)。不过,它与SaveAsCopy()的配合方式很奇怪!
'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.