C# Excel实时存储求助
VS2017新手,如题,需要创建Excel文件,用作数据存储文档来存储IO口接收的信息。
关键在于需要每1秒存储一次信息,Excel文档中每次增加500-600字节数据,数据不断增加,最后数据量会很大,所以不便最后一次性存储。现在我的思路是先通过按钮创建文档,然后再1秒定时器中做数据添加,但是要在定时器中每次开关Excel进程,导致程序运行时卡的厉害,影响其他功能。但是又想不到如何简化,请大侠指点,不胜感谢。
先采用按钮创建路径为ExcelSave的Excel文档,没问题
而后这是定时器部分代码:不知有什么方法能简化一下
private void timer1_Tick(object sender, EventArgs e) //Timer1 events (1000ms)
{
label3.Text = DateTime.Now.ToString(); //Display time
SerialFlag = 1;
if(DataSaveFlag == 1)//若Excel文档已建立完毕则开始记录
{//Excel数据库信息每秒递增
Microsoft.Office.Interop.Excel.Application myExcel = null;//引用Excel Application类別
Workbook myBook = null;//引用活页簿类別
Worksheet mySheet = null;//引用工作表类別
myExcel = new Microsoft.Office.Interop.Excel.Application();//实例化Excel Application
myBook = myExcel.Workbooks.Open(ExcelSave);
myExcel.DisplayAlerts = false;//停用警告
myExcel.Visible = false; //Excel 不可见
mySheet = myBook.Worksheets[1];//Excel文件打开工作簿的第一个文件
mySheet.Cells[excelrow, excelcolumn]=100;
excelrow++;
///////////////////////
myBook.SaveAs(ExcelSave);
myBook.Close(false, Type.Missing, Type.Missing);//关闭
myExcel.Quit();//关闭Excel
///////////////////////杀死进程////
IntPtr t = new IntPtr(myExcel.Hwnd);
int k = 0;
GetWindowThreadProcessId(t, out k);
System.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(k);
p.Kill();
}
}