代码之家  ›  专栏  ›  技术社区  ›  Geri Langlois

打开streamreader时出错,因为其他进程正在使用文件

  •  1
  • Geri Langlois  · 技术社区  · 14 年前

    我正在开发一个应用程序来读取excel电子表格,验证数据,然后将其映射到sql表。这个过程是通过streamreader读取文件,验证数据,手动更正excel电子表格,再次验证——重复这个过程直到所有数据都验证。

    如果excel电子表格是打开的,那么当我试图通过streamreader读取数据时,我会得到一个错误,“进程无法访问文件……因为它正被另一个进程使用,“有没有一种方法可以在不必每次打开和关闭excel的情况下移除锁或将数据读入streamreader?”

    1 回复  |  直到 11 年前
        1
  •  2
  •   Soner Gönül    11 年前

    当你打电话 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打开文件,则可能无法访问它。