NPOI写入打开的EXCEL文件

我用NPOI往EXCEL记录数据时,正常可以实现。但是当我人为打开目标EXCEL时,在File.Open这里会报错,请教大佬有什么好的解决方式让我可以在打开EXCEL的时候执行写入。

        if (File.Exists(path))
        {
            using (FileStream fs = File.Open(path, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)) // 报错“xxx正由另一进程使用,因此该进程无法访问此文件。”
            {
                wb = new XSSFWorkbook(fs);
                fs.Close();
            }
         }

好像没有办法能做到打开Execl的同时用代码读取execl文件数据

解决办法,首先用代码判断这个文件是否处于打开的情况。如果打开,则关闭此进程。继续写入。
如果没有打开。就按照你写的代码就可以了。

打开Excel文件时,文件会被线程占用,此时你的程序就无法调用了,如果你是生成目标excel文件写入数据的话,每次生成前先创建一个新的excel文件用于写入,就不会出现被占用的情况了

文件被打开了之后,你再用代码调用,它就报错,所以,你只能先关闭了,
如果你没打开,有可能是其他进程占有了,可以去查一下,关闭即可

可以通过先生成"临时文件",然后将临时文件覆盖原文件的方式,避免源文件被打开时无法写入的问题