Getting error on calling SaveAs method
我正在尝试在我的 C#/Winforms 应用程序中使用 MS Excel 互操作从 excel 文件创建 csv 文件。
我在下面的代码中的 SaveAs 方法上遇到了这个错误。
'The file could not be accessed. Try one of the following:
a€¢ Make sure the specified folder exists. a€¢ Make sure the folder that
contains the file is not read-only. a€¢ Make sure the file name does
not contain any of the following characters: < > ? [ ] : | or
* a€¢ Make sure the file/path name doesn't contain more than 218
characters.'z
我尝试在 Workbook 的 Open(...) 方法中将 readonly 设置为 false,如下所示:
插入数据后保存excel文件时出现问题,但仍然出现相同的错误。
在我的代码中,csv 文件路径是:C:\\\\\\\\
如果我将 csv 文件路径更改为 C:\\\\\\\\SomeFolder 或某些共享 UNC 路径,则不会出现此错误。
请指教。C盘是否存在权限问题?
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | xlApp = new Microsoft.Office.Interop.Excel.Application(); xlApp.DisplayAlerts = false; xlApp.Visible = false; wbkSrc = xlApp.Workbooks.Open(m_sSrcFil, Type.Missing, false, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); wstSrc = (Worksheet)wbkSrc.Worksheets[sSrcSht]; //wstSrc.Activate(); rngWork = wstSrc.Cells.get_Range("H:H", System.Reflection.Missing.Value); rngWork.NumberFormat ="General"; dteTmpDate = Convert.ToDateTime(m_sBusDate); sTmpFileName = m_sSrcFil.Substring(0, m_sSrcFil.IndexOf(".")) +"_" + m_sUserName +"_" + dteTmpDate.ToString("yyyy_MM_dd") +".Csv"; wstSrc.SaveAs(sTmpFileName, XlFileFormat.xlCSV, Type.Missing, Type.Missing, true, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); |
显然
顺便说一句,您的代码错误地使用
1 2 | C:\\My.Folder.Name\\TheFile.xls C:\\MyFolder\\TheFile.Name.xls |
你应该使用
Excel SaveAs 非常挑剔。 File.Exists 或打开工作簿时接受
如果超过 218 个字符,请检查您保存的 FilePath,然后您也会收到此错误。