我用个timer去定时的保存Excel内容,当内容足够时,我使用了
MyExcel.ActiveWorkbook.SaveCopyAs("\\E:\\work2.xls");
我可以在E盘看到work2在条件下生成了,当我打开Excel查看内容时,内容也是如期所想,问题就出现在:
此时我的程序还在跑,Timer还在动作,这时候当我那边开始继续往原来的Excel写入的时候,我打开的这个
work2.xls被跳成我还在写入的Excel,然后执行了close。
也就是说,我打开work2就被关闭了执行关闭的是我还在跑的程序。
为什么我work2还要受到原程序的控制???这不相关了呀
 Excel.Workbook workbook = MyExcel.Workbooks.Open(Application.StartupPath + "/test.xls", 0, false,
                            5, System.Reflection.Missing.Value, System.Reflection.Missing.Value, false, System.Reflection.Missing.Value,
                            System.Reflection.Missing.Value, true, false, System.Reflection.Missing.Value, false, false, false);
                        //选到Sheet2
                        Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[2];              
                        string temp = "111";
                        worksheet.Cells[31 + save_cnt, 3] = temp;
                    //    MyExcel.Visible = true;
                        MyExcel.DisplayAlerts = false;         //保存Excel为当前选中的Sheet,不再询问
                        MyExcel.AlertBeforeOverwriting = false;//保存Excel为当前选中的Sheet,不再询问
                        MyExcel.ActiveWorkbook.Save();
                        save_cnt++;
                        if (save_cnt == 10)
                        {
                            MyExcel.ActiveWorkbook.SaveCopyAs("\\E:\\work2.xls");
                        }
                        //     Thread.Sleep(300);
                        MyExcel.ActiveWorkbook.Close(false, false, false);
                        MyExcel.Quit();
                        timerSave.Enabled = true;
                        GC.Collect();//强制垃圾回收。否则Excel.exe不能及时退出