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

时间:2014-06-20 08:37:41

标签: c# excel com interop

我一直在创建从串口读取数据的应用程序,然后将其写入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);

解决方案是什么?你能给我一些示例代码吗?

编辑:掌握@Vasi,我这样做并得到错误。

我记得在过去的时间里我确实喜欢这样,写完excel后,关闭工作簿和excel应用程序。但过去的错误只是在关闭工作簿时,excel进程停留在RAM中,进程不会在任务管理器中消失。

所以,现在我尝试不关闭excel应用程序和工作簿,我希望在将数据写入excel时程序的进程会更快。作为您的建议,我试图关闭excel应用程序,工作簿和工作表,就像在这个网站http://goo.gl/SzwhCF

但是,在窗体关闭后,任务管理器中的进程保持不会消失,并且错误消息是未将对象引用设置为对象的实例。这是我的示例代码http://postimg.org/image/w6614hbq3/

我的代码有问题吗?

谢谢

1 个答案:

答案 0 :(得分:1)

由于OpenXML Standard在Excel Application中打开文件后,无法从其他应用程序/编码中打开。

首选逗号(或分号)(我们可以轻松导入excel)文本文件或数据库。