from:
http://www.cnblogs.com/huobazi/archive/2004/04/27/7771.aspx
最近做的东西要求打开一个Excel文件模板后填充数据string strFileName = Environment.CurrentDirectory+@"\template\template.tpl";
string strSaveFileName = Environment.CurrentDirectory+@"\excel\"+System.DateTime.Now.ToString().Replace(":","").Replace("-","").Replace(" ","")+@".xls";
Excel.Application ThisApplication = new Excel.ApplicationClass();
Excel.Workbook ThisWorkBook;
object missing = System.Reflection.Missing.Value;
try
{
//加载Excel模板文件
ThisWorkBook = ThisApplication.Workbooks.Open(strFileName,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing);
Excel.Worksheet ThisSheet = (Excel.Worksheet)ThisWorkBook.Sheets;
ThisSheet.Cells[7,1] = dtEnd.ToShortDateString();
progressBar.Value = 30;
ThisApplication.Visible = false;
DataRow dr = dt.Rows[0];
for( int i=0; i<dt.Columns.Count;i++)
{
ThisSheet.Cells[7,i+2] = dr[i].ToString();
progressBar.Value +=1;
}
//更新数据后另存为新文件
ThisSheet.SaveAs(strSaveFileName,missing,missing,missing,missing,missing,missing,missing,missing);
}
catch{}
finally
{
ThisApplication.Quit();
ThisWorkBook = null;
ThisApplication = null;
//dt = null;
}
try
{ //打开刚才生成的Excel文件
Excel.Workbook NewWorkBook;
NewWorkBook = NewApplication.Workbooks.Open(strSaveFileName,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing);
Excel.Worksheet NewSheet = (Excel.Worksheet)NewWorkBook.Sheets;
NewApplication.Visible = true;
//也可以使用System.Diagnostics.Process.Start(strSaveFileName);来打开新文件
}
打开Excel后进程内会多出一个excel进程
需要手工清理
参考这片文章