[英]Multiple users writing concurrently to shared Excel file using OpenXML
我需要使用C#中的打開xml sdk讀寫共享的excel(xlsx)文件。 我已經使用了應答的共享模式設置更新, 這對堆棧溢出問題的設置是在創建Excel文件進行更新。 我已經編寫了一個小程序,可以基於this將數據插入到此生成的Excel文件中。
我已經測試了3個不同的用戶嘗試通過LAN同時寫入數據。 在下面的聲明中,我最初在打開過程中遇到了異常。
using (SpreadsheetDocument doc = SpreadsheetDocument.Open(excelStream, true))
此時,即使啟用了共享工作簿設置,也只有一個用戶可以寫入共享的excel文件。
后來我將上述聲明更改為如下使用Stream
using (FileStream excelStream = new FileStream(filePath,FileMode.OpenOrCreate,FileAccess.ReadWrite,FileShare.ReadWrite))
{
using (SpreadsheetDocument doc = SpreadsheetDocument.Open(excelStream, true))
更改之后,初始異常的頻率降低了,但有時還是會出現。 但是,成功后,多個用戶可以寫入excel文件。
當多個用戶寫入共享的excel文件時,我觀察到兩個重要的行為。
任何人都可以指導我找到正確的方法來消除打開期間的異常,並使用OpenXML Sdk並發寫入excel文件。
提前致謝。
如果您需要多用戶訪問權限並期望它能正常運行,則可能應該考慮使用數據庫。 甚至Access也會比Excel更好。 如果您需要將輸出保存在Excel中,則可以導出為Excel的報告。
如果打開文件時發生異常,也許嘗試處理該異常並添加重試邏輯? 您可以使用https://github.com/App-vNext/Polly之類的方法來簡化操作。
用戶排序可能只是它處理寫入的方式。 我不希望這是可以解決的問題,因為它是Excel,而不是數據庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.