【发布时间】:2011-10-03 07:20:04
【问题描述】:
我正在尝试在我的 C#/Winforms 应用程序中使用 MS Excel 互操作从 excel 文件创建 csv 文件。
我在下面的代码中的 SaveAs 方法上收到此错误。
'无法访问该文件。请尝试以下方法之一:
• 确保指定的文件夹存在。 • 确保文件夹 包含文件不是只读的。 • 确保文件名 不包含以下任何字符: ? [ ] : |或者 * • 确保文件/路径名不超过 218 字符。'z
我尝试在 Workbook 的 Open(...) 方法中将 readonly 设置为 false,如下所示: Problem saving excel file after inserting data ,但仍然出现同样的错误。
在我的代码中,csv 文件路径是:C:\ 如果我将 csv 文件路径更改为 C:\SomeFolder 或某个共享 UNC 路径,则不会出现此错误。
请指教。C盘是否存在权限问题?
代码如下:
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);
【问题讨论】:
-
听起来像是文件夹权限问题
-
嗨大卫,感谢您的输入。文件名为:“22010_Sep11TestReport_rtsim36_2011_09_30.Csv”。此文件名相同,如果将 csv 文件路径更改为 C:\SomeFolder 等其他路径,则我不会收到此错误,并且 csv 文件会保存在机器上。所以,看起来问题不在于文件名本身尽管错误消息似乎暗示了这一点。