【发布时间】:2014-08-10 23:16:00
【问题描述】:
我一直在制作从串口读取数据然后将其写入 excel(连续)的应用程序。
串口数据写入后打开当前excel文件没有问题,或者串口数据写入后打开当前文件。
问题是在收到串口数据后,程序正在将数据写入excel,同时我尝试打开当前文件或从程序外打开另一个excel应用程序(手动)。
错误消息:错误:文件扩展名错误(异常来自 HRESULT:0x800401E6(MK_E_INVALIDEEXTENSION) 行: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/
我的代码有什么问题吗?
谢谢
【问题讨论】: