创buildCSV文件时出现偶然IOException“进程无法访问文件…”

我正在通过使用Office.Interop.Excell库创build一个CSV(与';'作为分隔符)文件。

下面的代码在我的计算机上工作正常,但我的客户之一有时得到了IO.Exception:“进程无法访问文件,因为它正在被另一个进程使用”。

奇怪的是,这个错误是不是总是popup,有时它的作品,有时它不…

什么可能是这偶然IO.Exception为我的客户端的原因。 这是我的代码:

public static void GenerateCsvFile(DataSet ds, string paramFileFullPath, Dictionary<string, string[]> tableHeaders) { object missing = System.Reflection.Missing.Value; var excel = new Application { DisplayAlerts = false }; Workbook workbook = null; try { workbook = excel.Application.Workbooks.Add(true); foreach (System.Data.DataTable dt in ds.Tables) AddTableSheet(ref workbook, ref excel, dt, true, tableHeaders[dt.TableName], false); workbook.SaveAs(paramFileFullPath, XlFileFormat.xlTextMSDOS, missing, missing, false, false, XlSaveAsAccessMode.xlNoChange, missing, missing, missing, missing, missing); } finally { CleanupExcel(excel, workbook); } File.WriteAllText(paramFileFullPath, File.ReadAllText(paramFileFullPath).Replace("\t", ";")); } 

我猜这个错误有时候来自这个行:

File.WriteAllText(paramFileFullPath, File.ReadAllText(paramFileFullPath).Replace("\t", ";"));

有没有可能是我清理/closuresExcel的方式有问题?

 private static void CleanupExcel(Application excel, Workbook workbook) { if (excel == null) return; excel.DisplayAlerts = false; excel.Quit(); if (workbook != null) Marshal.ReleaseComObject(workbook); Marshal.ReleaseComObject(excel); } 

而这个总是如何为我工作,但在我的客户的个人电脑上,它只能工作5次之一…

但是我的一个客户有时会得到IO.Exception:“进程无法访问该文件,因为它正被另一个进程使用”。

我应该打多less钱,底层的问题是,所说的客户端在运行你的代码的同时在Excel中保持打开的文件? ;)