我在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
答案 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致信。