Asp.net 打开streamreader时出错,因为另一个进程正在使用该文件
我正在开发一个应用程序来读取excel电子表格,验证数据,然后将其映射到sql表。该过程是通过streamreader读取文件,验证数据,手动更正excel电子表格,再次验证——重复此过程,直到所有数据验证Asp.net 打开streamreader时出错,因为另一个进程正在使用该文件,asp.net,locking,streamreader,Asp.net,Locking,Streamreader,我正在开发一个应用程序来读取excel电子表格,验证数据,然后将其映射到sql表。该过程是通过streamreader读取文件,验证数据,手动更正excel电子表格,再次验证——重复此过程,直到所有数据验证 如果excel电子表格处于打开状态,那么当我试图通过streamreader读取数据时,我会遇到一个错误,“该进程无法访问该文件……因为它正被另一个进程使用。”是否有办法解除锁定或以其他方式将数据读入streamreader,而无需每次打开和关闭excel 当您调用File.Open获取流时
如果excel电子表格处于打开状态,那么当我试图通过streamreader读取数据时,我会遇到一个错误,“该进程无法访问该文件……因为它正被另一个进程使用。”是否有办法解除锁定或以其他方式将数据读入streamreader,而无需每次打开和关闭excel 当您调用
File.Open
获取流时,是否使用允许您指定FileAccess
的重载
请注意以下参数:
public static FileStream Open(
string path,
FileMode mode,
FileAccess access,
FileShare share
)
您可以将
FileAccess.Read
传递给第三个参数,以指示您只需要只读访问。您还应该设置FileShare.Read
以允许其他人以只读方式打开文件,而不是自己锁定。请注意,如果MS Excel使用FileShare.None打开文件,您可能无法访问它。如果在资源管理器中将Excel电子表格标记为只读,会发生什么情况?我认为Excel本身会在文件上打开一个独占锁,但可能通过使文件只读,其他进程可以同时读取它。不过,我没有excel,所以我无法测试它。好主意,只是用户需要能够编辑和保存数据更改。非常感谢您,这非常有效。我可以将FileShare设置为FileShare.ReadWrite,这样我就可以手动编辑电子表格(在excel中打开的csv文件),保存编辑,并且仍然允许映射程序读取数据。