Excel互操作保存我新创建的电子表格抛出一个异常
本文关键字:异常 一个 电子表格 新创建 互操作 Excel 创建 保存 | 更新日期: 2023-09-27 18:14:33
我正在使用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。知道为什么savea()会出现这个异常吗?
很明显这里出了什么问题。当然,这不是一个有效的路径,//
应该只出现在包含文件系统的机器的路径的开头字符。
当你使用微软的应用软件时,你将不得不取消"Windows像Unix一样工作"的期望。当您进行直接操作系统调用时,路径中的正斜杠不会造成问题。Windows很好地支持它们,至少是因为Windows NT曾经开箱即用地支持Posix。对于其他应用程序,尤其是那些源代码已经有25年历史的应用程序,情况就不一样了。但不仅限于旧代码,VS也有问题。微软对待这类错误报告的方式有点像Jeff Atwood对待复数错误。
正确的路径分隔符应该是反斜杠。