Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#附加到打开的文件_C#_File - Fatal编程技术网

C#附加到打开的文件

C#附加到打开的文件,c#,file,C#,File,我正在编写一个C#应用程序,使用streamwriter登录到一个.CSV文件 我可以附加到文件中,但如果它被另一个程序(excel)打开,则不能附加到该文件中 有没有一种方法,我可以附加到文件,而它是由excel笔。因此,excel只会弹出一个msb框,表示文件已更新 希望你能帮忙,谢谢,并致以最良好的问候 Søren P.不行,因为文件已锁定。您可以终止阻塞过程,但在本例中,这不是您想要的 问题是excel和其他office产品在文件打开时锁定了文件。其他工具,如记事本++通常更漂亮,不会锁

我正在编写一个C#应用程序,使用streamwriter登录到一个.CSV文件

我可以附加到文件中,但如果它被另一个程序(excel)打开,则不能附加到该文件中

有没有一种方法,我可以附加到文件,而它是由excel笔。因此,excel只会弹出一个msb框,表示文件已更新

希望你能帮忙,谢谢,并致以最良好的问候
Søren P.

不行,因为文件已锁定。您可以终止阻塞过程,但在本例中,这不是您想要的

问题是excel和其他office产品在文件打开时锁定了文件。其他工具,如记事本++通常更漂亮,不会锁定文件


因此,遗憾的是,在解决锁之前,没有办法修改文件。您只能等待文件再次解锁(在excel中也称为关闭)然后写入,但当文件打开并因此锁定时,您无法写入该文件。

如果您知道该文件已被excel锁定,您可以尝试以下操作:

// Get the excel application instance.
Microsoft.Office.Interop.Excel.Application excel = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");

// Get the workbook you need to modify (where "WorkbookName" is the name of the Workbook).
Microsoft.Office.Interop.Excel.Workbook workbook = excel.Workbooks["WorkbookName"];

// Close the workbook without saving - you can now modify the file.
workbook.Close(false, false, false);

您可能需要根据您的具体需要修改此模式-即,您可能希望Excel在关闭之前保存对文件的任何更改。

否,该文件已被Excel锁定。您想做什么?只有当其他应用程序以共享写入方式打开文件时,才能写入该文件。这种情况很少见,因为如果应用程序不配合,很容易损坏文件。因为操作系统需要序列化可能并发的IO操作,所以它的成本也更高Excel不适合这样的工作:当新数据到达时加载数据。看看是否符合您的要求。也许您只是想将Excel用作日志查看器,在这种情况下,最好是找到Win32版本的*nix命令行
tail
app。(例如)@DavidG Powershell已经做到了这一点,甚至将数据格式化为表格或完整的UI网格。问题是,为什么要用Excel打开文件?修改日志代码以使用Excel互操作不是最好的主意,会导致严重的性能延迟。此外,这根本不能回答问题-如果用户使用Libre或任何其他程序来查看文件会发生什么情况?另外,很遗憾,互操作实用程序不是最稳定的,因此如果可能的话,应该避免使用它们(在过去,互操作实用程序的其他部分存在问题)