我正在开发一个应用程序来读取 excel 电子表格,验证数据,然后将其映射到 sql 表。该过程是通过流式读取器读取文件,验证数据,手动更正 Excel 电子表格,再次验证 - 重复此过程,直到所有数据验证。
如果打开了 excel 电子表格,那么当我尝试通过流式读取器读取数据时,我会收到错误消息,“该进程无法访问该文件......因为它正在被另一个进程使用。” 有没有办法取消锁定或以其他方式将数据读入流式阅读器,而不必每次都打开和关闭 excel?
我正在开发一个应用程序来读取 excel 电子表格,验证数据,然后将其映射到 sql 表。该过程是通过流式读取器读取文件,验证数据,手动更正 Excel 电子表格,再次验证 - 重复此过程,直到所有数据验证。
如果打开了 excel 电子表格,那么当我尝试通过流式读取器读取数据时,我会收到错误消息,“该进程无法访问该文件......因为它正在被另一个进程使用。” 有没有办法取消锁定或以其他方式将数据读入流式阅读器,而不必每次都打开和关闭 excel?
当您调用File.Open
获取流时,您是否使用允许您指定的重载FileAccess
?
http://msdn.microsoft.com/en-us/library/y973b725.aspx
注意参数:
public static FileStream Open(
string path,
FileMode mode,
FileAccess access,
FileShare share
)
您可以传递FileAccess.Read
给第三个参数以指示您只需要只读访问权限。您还应该设置FileShare.Read
允许其他人以只读方式打开文件,而不是自己锁定它。请注意,如果 MS Excel 使用 FileShare.None 打开文件,您可能无法访问它。