关于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();//回收垃圾
}
代码如下:
//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();//回收垃圾
}
相关文章推荐
- 关于asp.net导出excel的注意(5)
- 关于asp.net导出excel的注意(4)
- 关于asp.net导出excel的注意(3)
- 关于asp.net导出excel的注意(6)
- 关于asp.net导出Excel
- 关于asp.net与winform导出excel的代码
- 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致的解决办法
- 关于asp.net导出Excel
- 关于asp.net导出Excel
- 关于asp.net导出Excel [zz]
- 关于asp.net导出Excel时关联迅雷下载
- 关于ASP.NET 将数据导出成Excel 的总结[补充]
- 关于ASP.NET 将数据导出成Excel 的总结[补充]
- 关于ASP.NET 将数据导出成Excel 的总结[上]
- 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致的解决办法
- 关于ASP.NET 将数据导出成Excel 的总结[下]
- 关于asp.net导出Excel
- ASP.NET关于GridView导出Excel
- 关于asp.net导出Excel
- 关于ASP.NET 将数据导出成Excel 的总结[中]