【问题标题】:Waiting open excel when program is writing data to excel程序正在向excel写入数据时等待打开excel
【发布时间】: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/

我的代码有什么问题吗?

谢谢

【问题讨论】:

    标签: c# excel com interop


    【解决方案1】:

    由于 OpenXML 标准,一旦您在 Excel 应用程序中打开文件,就无法从其他应用程序/编码打开。

    首选逗号(或分号)分隔(我们可以很容易地在 excel 中导入)文本文件或数据库。

    【讨论】:

    • 大师是什么意思?我不明白,我的程序有什么解决方案吗?
    • 我们无法处理并发读写过程(你提到过,你没有关闭工作簿)。保存文档后使用 oWB.Close() 否则无法打开 excel 文件。
    猜你喜欢
    • 1970-01-01
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多