2011-11-28 59 views
2

我正在向文本文件寫入一些數據。我使用此代碼:在MS Excel中打開時無法寫入文件

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,因爲它正在被另一個進程使用。什麼會導致這種情況,我該如何解決這個問題?

+1

我想Excel可以把一個「獨家」權利寫在文件中,當它使用它。我不確定你可以繞過它。你可以有一些信息[這裏](http://stackoverflow.com/questions/1977611/is-it-possible-to-bypass-a-file-lock-in-c-sharp-when-another-thread-process -is-U) – Flanfl

回答

6

記事本打開文件,讀入整個內容,然後關閉文件。你甚至可以刪除記事本中打開的文件。

另一方面,Excel只要顯示文件就會保持打開文件。有一些特殊的共享工具可以在Excel中爲excel格式文件啓用。在這種情況下,我認爲它是非常開放的。否則,Excel將獨佔打開文件並保持打開狀態。

打開時指定共享選項並不重要,如果該文件已被其他人以獨佔模式打開。

1

Excel會在文件打開時鎖定文件,從而阻止與文件的交互。解決這個問題的一種方法是我編寫代碼來掃描本地計算機上的excel進程,並在訪問使用excel打開的文件之前殺死這些進程。您可以通過查看How to check for file lock?然後在異常處理程序中運行進程終止代碼來確定文件是否被鎖定。

-1

使用OleDB打開csv文件並使用INSERT和/或UPDATE語句。

相關問題