我用个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不能及时退出
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不能及时退出
就是只要我软件还在运行,一个我另存为其他地方的Excel,一旦我打开就会被强制切换成原Excel并且关闭。
感觉就是藕断丝连,不能单独的自己打开使用。