互操作Excel – 保存我新创build的电子表格会引发exception

我正在使用C#创build一个电子表格,这里是代码:

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()?

这里有点不对劲。 这当然不是一个有效的path, //应该只显示为包含文件系统的机器的path的主angular。

当您使用Microsoft应用程序软件时,您将不得不调整“Windows像Unix一样工作”的期望。 进行直接操作系统调用时,正向斜杠不会成为问题。 Windows支持它们,一点都不,因为Windows NT曾经支持Posix开箱即用。 其他应用程序也是如此,特别是其源代码基于25年的那种。 但不仅限于旧代码, VS也有问题 。 微软将这类错误报告看作是Jeff Atwood处理多元化错误的方式 。

没有任何意外的正确path分隔符是一个反斜杠。