Có thể nhưng bạn phải kiểm soát cẩn thận việc chia sẻ tệp bạn chỉ định. Hầu hết các lớp .NET mặc định là FileShare.Read, từ chối một tiến trình khác từ việc ghi vào tập tin. Nhưng điều đó không thể hoạt động nếu tệp được Excel mở ra, nó đã giành được quyền ghi vào nó. Bạn không thể phủ nhận quyền đã được mua lại.
Để khắc phục vấn đề này, làm cho mã của bạn trông tương tự như sau:
using (var fs = new FileStream(@"c:\\temp\\test.csv", FileMode.Open,
FileAccess.Read, FileShare.ReadWrite))
using (var sr = new StreamReader(fs)) {
// Read it...
}
Lưu ý việc sử dụng FileShare.ReadWrite. Tôi đã xác minh mã này hoạt động trong khi Excel đã test.csv được mở.
Hãy coi chừng sự cố tiềm ẩn bạn sẽ mời với điều này, những điều kỳ quặc có thể xảy ra khi Excel ghi vào tệp ngay khi bạn đang đọc. Bạn có thể đọc rác, một phần dữ liệu cũ, một phần của dữ liệu mới, không có cách nào tốt để chẩn đoán điều này.
Nguồn
2010-10-02 17:30:44
xin vui lòng gửi một số mã để cho chúng ta thấy những gì bạn đã làm cho đến nay – Woot4Moo
Đây là mã: using (FileStream fs = new FileStream (csvOpenFileDialog.FileName, FileMode.Open, FileAccess.Read)) –
Bạn đang thiếu một đối số. Đọc câu trả lời của tôi. – Nayan