晚上好基於應用程序的編輯,的程序化和Excel文件
我有以下問題要解決:
我想添加到一個Excel文件了一堆的內容用戶生成.txt
文件。這些文件全天生成並通過FTP發送到一個文件夾,該文件夾會不斷受到該程序的監視,以查看是否有新的添加。 如果程序在其中找到新的.txt
文件,它將打開要編輯的Excel文件,添加信息並關閉Excel,保存更改。
與此同時,用戶必須打開這些Excel文件來檢查新的更新信息並相應地處理它。
程序的執行是有些這樣的:如果文件夾爲空或包含新.txt
文件
- 無限循環檢查。
- 如果該文件夾不是空的(因此有信息要添加),它會檢查Excel文件是否打開。
- 如果Excel文件已關閉:
- 以編程方式打開它並向其中添加信息。
- 保存Excel文件並退出。
- 將
.txt
備份到另一個文件夾中,以防出現某種錯誤。
- 如果Excel文件被打開:
- 繼續檢查,直到它被關閉。
要檢查文件夾爲空或不使用:System.IO.Directory.EnumerateFileSystemEntries(path).Any()
要檢查如果Excel文件是打開我使用: System.IO.FileInfo(path)
和FileStream
其中,一個try-catch子句中info.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None)
對於我用Microsoft.Office.Interop.Excel.Application
,[..].Workbook
和Excel文件的打開,編輯和保存/關閉:在下面的模式打開。
當用戶在添加過程中打開(通過正常的Office應用程序)Excel文件時,主要問題出現。我希望找到某種類型的文件鎖定,以便用戶不能中斷編輯過程。
關於如何組合這兩種類型的打開/編輯Excel文件的任何想法?
非常感謝你的進步。
TL; DR:如何防止用戶在程序編輯Excel時以編程方式打開Excel文件?或者至少,打開另一個實例,這樣過程不會中斷?
PS:如果應該需要任何進一步的代碼,我會很樂意將它張貼:)
我可能在這裏是錯的,但不會自動創建鎖定,當文件打開修改?像〜{DiscombobulatedFileNameHere} .xlsx,你可以暫時重新創建相同的文件,然後在你的進程結束時刪除它嗎? –
我會在你的情況下做的是:1.程序將給定的Excel文件複製到臨時位置(不需要檢查它是否正在使用); 2.執行所有編輯。 3.編輯完成後,程序將打算刪除文件的原始版本(由用戶訪問);它會盡可能長時間地嘗試,直到找到沒有用戶訪問它的時刻;在刪除文件後,在那裏複製新的修改過的文件。通過這種方式,您可以確保用戶不會中斷版本過程。 – varocarbas
您可以將文件設置爲「只讀」,但我期望(如果您使用Excel自動化添加數據)這應該已經由Excel處理。如果你不使用Excel來添加數據,你在用什麼?無論你使用什麼,也應該鎖定文件,因爲它需要打開它來寫入。 –