保存时无法访问 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 方法中发生变化

如何在 C# 中将文件导出到 excel 2007+

将带有 Worksheet.SaveAs 的 excel 文件保存到任何/选定的目录

SaveAs 不提示保存

Excel VBA Saveas 函数损坏文件