Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.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# 程序将数据写入excel时等待打开excel_C#_Excel_Com_Interop - Fatal编程技术网

C# 程序将数据写入excel时等待打开excel

C# 程序将数据写入excel时等待打开excel,c#,excel,com,interop,C#,Excel,Com,Interop,我一直在做一个应用程序,从串口读取数据,然后将其写入excel(连续) 如果在写入串行数据后打开当前excel文件,或者在写入串行数据后打开当前文件,则没有问题 问题是在收到串行数据后,程序正在将数据写入excel,同时我尝试打开当前文件或从程序外(手动)打开另一个excel应用程序 错误消息:错误:文件扩展名不正确(来自 HRESULT:0x800401E6(MK_E_INVALIDEXTENSION)行:mscorlib 收到串行数据>>打开excel文件>>将数据写入excel>>另存为>

我一直在做一个应用程序,从串口读取数据,然后将其写入excel(连续)

如果在写入串行数据后打开当前excel文件,或者在写入串行数据后打开当前文件,则没有问题

问题是在收到串行数据后,程序正在将数据写入excel,同时我尝试打开当前文件或从程序外(手动)打开另一个excel应用程序

错误消息:错误:文件扩展名不正确(来自 HRESULT:0x800401E6(MK_E_INVALIDEXTENSION)行:mscorlib

收到串行数据>>打开excel文件>>将数据写入excel>>另存为>>>收到串行数据>>打开excel文件>>将数据写入excel>>另存为>>> 将数据写入excel后,我没有关闭工作簿,只是使其不可见

这是我的示例代码

Excel.Application oXL;
Excel._Workbook oWB;
Excel._Worksheet oSheet;
.....
oXL = new Excel.Application();
oWB = oXL.Workbooks.Open("C:\\Folder\\SerialData" + filenumber + ".xlsx", 0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
oSheet = (Excel._Worksheet)oWB.Worksheets["Sheet" + sheetnumber];
.....
oWB.SaveAs("C:\\Folder\\SerialData" + filenumber + ".xlsx",Excel.XlFileFormat.xlWorkbookDefault, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
解决方案是什么?你能给我一些示例代码吗

编辑:master@Vasi,我这么做了,结果出错了

我记得以前我是这样做的,在写入excel后,关闭工作簿和excel应用程序。但过去的错误是,当关闭工作簿时,excel进程卡在RAM中,进程不会在任务管理器中消失

所以,现在我尝试不关闭excel应用程序和工作簿,我希望在将数据写入excel时,程序的过程会更快。根据您的建议,我尝试关闭本网站中类似的excel应用程序、工作簿和工作表

但在windows窗体关闭后,任务管理器keep中的进程并没有消失,错误消息是对象引用未设置为对象的实例。这是我的示例代码

我的代码有问题吗


谢谢

由于OpenXML标准,一旦在Excel应用程序中打开文件,就不可能从其他应用程序/编码中打开


喜欢逗号(或分号)分隔的(我们可以轻松导入excel)文本文件或数据库。

这是什么意思master?我不明白,我的程序有什么解决方案吗?我们无法处理并发读写过程(您提到过,您没有关闭工作簿)。保存文档后,请使用oWB.Close()另外,您无法打开excel文件。