保存时无法访问 C# excel SaveAs 文件
Posted
技术标签:
【中文标题】保存时无法访问 C# excel SaveAs 文件【英文标题】:C# excel SaveAs file could not be accessed when saving 【发布时间】:2015-07-16 14:15:16 【问题描述】:尝试以编程方式将 Excel 工作表保存为循环中的唯一文件名。
private static DateTime csvtime = DateTime.Now;
private static string time = csvtime.ToString("HH:mm:ss");
private static string Path = @"C:\users\User\desktop\MonetaryEntry_"+time+".csv";
mySheet = (Excel.Worksheet)myBook.Worksheets[1];
mySheet.SaveAs(Path, Microsoft.Office.Interop.Excel.XlFileFormat.xlCSV);
这会失败并出现以下错误
MonetaryEntryFormatting.exe 中出现“System.Runtime.InteropServices.COMException”类型的未处理异常
附加信息:无法访问该文件。尝试以下方法之一:
• 确保指定的文件夹存在。
• 确保包含该文件的文件夹不是只读的。
• 确保文件名不包含以下任何字符: ? []:|或 *
• 确保文件/路径名包含的字符不超过 218 个。
但是当我将路径字符串更改为
private static string path = "@C:\users\user\desktop\MonetaryEntry_.csv";
解决了。
目标是遍历循环,每次保存为唯一的 *.csv 文件。每次都会生成不确定数量的 .csv 文件。
一些笔记;
将我目前正在使用的用户帐户写入桌面。如果相关,我会在桌面上复制一个文件并粘贴为不同的名称,然后从那里开始工作。
我觉得我可能遗漏了一些相当简单的事情,因为这类问题通常是......
【问题讨论】:
文件名中不能包含:
,请在格式字符串中使用其他字符。
它不太可能,如果你循环,每个时间值在每个周期都是唯一的。
【参考方案1】:
private static DateTime csvtime = DateTime.Now;
private static string time = csvtime.ToString("HH_mm_ss");
private static string Path = @"C:\users\User\desktop\MonetaryEntry_"+time+".csv";
mySheet = (Excel.Worksheet)myBook.Worksheets[1];
mySheet.SaveAs(Path, Microsoft.Office.Interop.Excel.XlFileFormat.xlCSV);
这将改变tostring。 :
不是路径中允许的字符。 (看错误的第三条建议)
【讨论】:
哇,我感觉很糟。谢谢!以上是关于保存时无法访问 C# excel SaveAs 文件的主要内容,如果未能解决你的问题,请参考以下文章
Excel 2007 VBA ActiveWorkbook SaveAs 未保存...运行时错误 1004
excel的当前格式在 Closedxml SaveAs 方法中发生变化