我使用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()发生此异常的任何想法?
答案 0 :(得分:2)
有点明显出现了什么问题。当然,这不是一个有效的路径,//
应该只显示为命名包含文件系统的机器的路径的主角。
你必须解除" Windows的工作方式,如Unix"使用Microsoft应用程序软件时的期望。进行直接操作系统调用时,路径中的正斜杠不是问题。 Windows支持它们,至少是因为Windows NT曾经支持开箱即用的Posix。其他应用程序也是如此,特别是那些源代码库已有25年历史的应用程序。但不仅限于旧代码VS has problems too。微软对待这类错误报告有点像杰夫阿特伍德对待pluralization bugs。
正确的路径分隔符没有任何意外是反斜杠。