在MS Excel中打开文件时无法写入文件

时间:2011-11-28 19:23:02

标签: c# .net io filestream

我正在给文本文件写一些数据。我正在使用此代码:

  using (FileStream fs = new FileStream(path, FileMode.Append, FileAccess.Write, FileShare.ReadWrite))
  {
      using (TextWriter tw = new StreamWriter(fs))
      {
      tw.WriteLine("sample_data");
      }
   }

当记事本打开文件时,我的应用程序可以写入。当MS Excel打开此文件时,我收到以下错误:该进程无法访问文件myfile.csv,因为它正被另一个进程使用。什么可能导致这种情况,我该如何解决这个问题?

3 个答案:

答案 0 :(得分:8)

记事本打开文件,读入整个内容,然后关闭文件。您甚至可以删除在记事本中打开的文件。

另一方面,只要显示文件,Excel就会保持文件打开状态。可以在Excel中为excel格式文件启用一些特殊的共享工具。在那种情况下,我认为它是非普通的打开。否则,Excel将独占打开文件并保持打开状态。

如果在独占模式下其他人已经打开了该文件,那么在打开时指定共享选项并不重要。

答案 1 :(得分:1)

Excel将在文件打开时锁定该文件,这会阻止与文件的交互。我解决这个问题的一种方法是编写代码来扫描本地计算机上的excel进程,并在访问使用excel打开的文件之前终止这些进程。您可以通过查看How to check for file lock?然后在异常处理程序中运行进程终止代码来确定文件是否已锁定。

答案 2 :(得分:-1)

使用OleDB打开csv文件并使用INSERT和/或UPDATE语句。

相关问题