无法使用c#

时间:2018-02-14 12:27:40

标签: c#

我在c#中使用SaveAs方法保存一个excel文件。但它显示如下错误:

其他信息:无法访问该文件。请尝试以下方法之一:

•确保指定的文件夹存在。

•确保包含该文件的文件夹不是只读文件。

•确保文件名不包含以下任何字符:< > ? []:|或者*

•确保文件/路径名称不超过218个字符。

我的代码是:

string savepath = AppDomain.CurrentDomain.BaseDirectory + @"\Salary Slips\a.xlsx";
xlwbOP.SaveAs(savepath, Excel.XlFileFormat.xlExcel12);

savepath变量具有值 savepath =“D:\ Application \ WindowsFormsApplication1 \ WindowsFormsApplication1 \ bin \ Debug \ Salary Slips \ a.xlsx”

目录:“D:\ Application \ WindowsFormsApplication1 \ WindowsFormsApplication1 \ bin \ Debug \ Salary Slips \”是exsits

2 个答案:

答案 0 :(得分:0)

如果我记得正确(已经过了一段时间),您应该在尝试保存之前检查以确保该文件存在。您可能还希望将其包装在try-catch块中,以处理由权限或路径不存在的问题引起的异常。

string savepath = AppDomain.CurrentDomain.BaseDirectory + @"\Salary Slips\a.xlsx";
try
{
    if(!File.Exists(savepath))
         xlwbOP.SaveAs(savepath, Excel.XlFileFormat.xlExcel12);
    else
         xlwbOP.Save();
}
catch
{  /*input your exception handling here*/ }

在尝试使用它进行保存之前,我还建议使用verifying that your path doesn't contain invalid characters

您可能还希望使用SaveCopyAs(string)将副本保存为新文件。

答案 1 :(得分:0)

正如Exporting to .xlsx using Microsoft.Office.Interop.Excel SaveAs Error中所述,保存为.xlsx的正确枚举不是Excel.XlFileFormat.xlExcel12,而是Excel.XlFileFormat.xlOpenXMLWorkbook

正确的方法,这里也包含Missing.Value

var missing = System.Reflection.Missing.Value;
var savepath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Salary Slips", "a.xlsx");
xlwbOP.SaveAs(savepath, Excel.XlFileFormat.xlOpenXMLWorkbook, missing,
    missing, false, false, missing, missing, true, missing, missing, missing);

向SO用户MoonKnight致信。