您的位置:首页 > 编程语言 > ASP

关于asp.net导出excel的注意(2)

2008-07-31 17:19 555 查看
每次导出时都会报Application is busy的错误,但是调试时,有时又不会报错,并且每次都会在进程中产生一个新的excel进程

代码如下:

//Process[] myProcesses = Process.GetProcessesByName("EXCEL");

//foreach (Process myProcess in myProcesses)

//{

// myProcess.Kill();

//}//杀死所有excel的进程

Excel.ApplicationClass pApplication = null;

Excel._Workbook xBk = null; ;

Excel._Worksheet xSt = null; ;

Excel._QueryTable xQt = null; ;

try

{

string pstrSql = "select * from jobs";

string title = "title";

string ExcelConn = "ODBC;DRIVER=SQL Server;SERVER=localhost;UID=sa;PWD=123456;APP=Microsoft(R) Windows (R) 2000 Operating System;WSID=me;DATABASE=pubs";

pApplication = new Excel.ApplicationClass();

xBk = pApplication.Workbooks.Add(true);

xSt = (Excel._Worksheet)xBk.ActiveSheet;

pApplication.Cells[2, 2] = title;

xSt.get_Range(pApplication.Cells[2, 2], pApplication.Cells[2, 2]).Font.Bold = true;

xSt.get_Range(pApplication.Cells[2, 2], pApplication.Cells[2, 2]).Font.Name = "黑体";

xSt.get_Range(pApplication.Cells[2, 2], pApplication.Cells[2, 2]).Font.Size = 22;

xQt = xSt.QueryTables.Add(ExcelConn, xSt.get_Range(pApplication.Cells[4, 2], pApplication.Cells[4, 2]), pstrSql);

xQt.Name = "导出EXCEL";

xQt.FieldNames = true;

xQt.RowNumbers = false;

xQt.FillAdjacentFormulas = false;

xQt.PreserveFormatting = false;

xQt.BackgroundQuery = true;

xQt.RefreshStyle = Excel.XlCellInsertionMode.xlInsertDeleteCells;

xQt.AdjustColumnWidth = true;

xQt.RefreshPeriod = 0;

xQt.PreserveColumnInfo = true;

xQt.Refresh(xQt.BackgroundQuery);

Thread.Sleep(1000); //这一步最关键,只有在这里让线程休眠1秒钟,才会导出成功(具体多长时间没有研究过),否则都会报Application is busy的错误 。

pApplication.Visible = true;

pApplication.Quit();

}

catch (Exception Err)

{

Response.Write(Err.Message);

}

finally

{

System.Runtime.InteropServices.Marshal.ReleaseComObject(xSt);

System.Runtime.InteropServices.Marshal.ReleaseComObject(xBk);

System.Runtime.InteropServices.Marshal.ReleaseComObject(pApplication);

xSt = null;

xBk = null;

pApplication = null;

GC.Collect();//回收垃圾

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: