写入Excel文件时文件名或路径不存在或被其他程序使用[重复]
Posted
技术标签:
【中文标题】写入Excel文件时文件名或路径不存在或被其他程序使用[重复]【英文标题】:The file name or path doesn't exist or used by other program while writing Excel file [duplicate] 【发布时间】:2013-07-09 07:50:26 【问题描述】:我正在尝试创建一个 Excel 文件并向其中写入一些数据。 这是我正在使用的代码。
using excel = Microsoft.Office.Interop.Excel;
excel.Application xlapp;
excel.Workbook xlworkbook;
excel.Worksheet xlworksheet;
object misvalue = System.Reflection.Missing.Value;
xlapp = new excel.ApplicationClass();
xlworkbook = xlapp.Workbooks.Add(misvalue);
xlworksheet = (excel.Worksheet)xlworkbook.Worksheets.get_Item(1);
xlworksheet.Cells[1, 1] = "Muneeb Hassan Soomro";
xlworkbook.SaveAs("csharp-excelwrite.xls",excel.XlFileFormat.xlWorkbookNormal,misvalue,misvalue,misvalue,misvalue,excel.XlSaveAsAccessMode.xlExclusive,misvalue,misvalue,misvalue,misvalue,misvalue);
//xlworkbook.SaveAs("csharp-Excel.xls", excel.XlFileFormat.xlWorkbookNormal);
xlworkbook.Close(true, misvalue, misvalue);
xlapp.Quit();
我在xlworkbook.saveas()
调用中遇到异常。说:
文件名或路径不存在或被其他程序使用
我在这里做错了什么?
【问题讨论】:
那么,你有什么异常吗? 你不只是制作一个 csv 有什么原因吗? 你忘了问问题。 是的,我在 saveas 的功能上遇到了异常。我实际上是在学习如何在 excel 中编写文件! @Meiyoki 我已经将数据导出到 csv 文件。但是想学习使用互操作库编写excel文件。 【参考方案1】:所以我建议你使用excellibrary 来编写 Excel 文件
您可以在Create Excel (.XLS and .XLSX) file from C#找到详细信息
【讨论】:
我必须将此项目添加到我的项目中才能使用其功能? 你只需要在你的项目中添加这个dll的引用即可。【参考方案2】:尝试改变这一行
xlworkbook = xlapp.Workbooks.Add(misvalue);
到这一行:
xlworkbook = xlapp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
和另存为:
workBook.SaveAs("csharp-excelwrite.xls", XlFileFormat.xlWorkbookNormal, Missing.Value, Missing.Value, Missing.Value, Missing.Value, XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
【讨论】:
仍然出现异常文件名或路径不存在或被其他程序使用 也许您的文件已被 Excel 打开,在进程选项卡的任务面板中关闭所有打开的任务并更改此行:xlworkbook.Close(true, misvalue, misvalue);对此:workBook.Close(true, "csharp-excelwrite.xls", null); 这个解决方案正在工作 - 刚刚测试过【参考方案3】:试试这个
object format = excel.XlFileFormat.xlWorkbookNormal;
object sv = excel.XlSaveAsAccessMode.xlExclusive;
object filename = "csharp-excelwrite.xls";
xlworkbook.SaveAs(ref filename,ref format,
ref misvalue,ref misvalue,ref misvalue,
ref misvalue,ref sv,ref misvalue,ref misvalue,
ref misvalue,ref misvalue,ref misvalue);
它适用于我,例如 Word 应用程序
object readOnly = isReadonly;
object isVisible = true;
object missing = WordConst.Missing;
wordDoc = wordApp.Documents.Open(ref fileName, ref missing,
ref readOnly, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref isVisible, ref missing, ref missing,
ref missing, ref missing);
【讨论】:
给出错误。参数不应与 ref 关键字一起传递。 好吧,它可以在我的应用程序中与 MS Word 一起使用【参考方案4】:因此,从您的一个 cmet 中的另一个答案中,我终于得到了异常文本(此信息应该已包含在问题中!)
文件名或路径不存在或被其他程序使用
解决方案应该很简单:在SaveAs
调用中指定完整路径,而不仅仅是文件名。 Excel 应该如何知道它应该将文件保存在哪个文件夹中?
【讨论】:
你是对的@cremon @cremor 你是对的,我给出了路径,现在它正在制作一个 excel 文件! 您应该将其标记为答案,以便其他有相同问题的人可以发现它有帮助@Muneeb Hassan 我正要标记它但走了!虽然谢谢提醒!以上是关于写入Excel文件时文件名或路径不存在或被其他程序使用[重复]的主要内容,如果未能解决你的问题,请参考以下文章
java 如果我有一个路径比如 E:/123 在这个路径表示的文件不存在时 如何判断是不是是文件或
将 Excel 2007 中的文本写入 Sharepoint 站点上的 .txt 文件会导致运行时错误“76”找不到路径