类型“Microsoft.Office.Interop.Excel.ApplicationClass”未定义构造函数

前两天写了一个导出excel的方法:

  1. protected void AddExcel(DataSet ds,string strName)   
  2.         {   
  3.             DataTable dt = ds.Tables[0];   
  4.   
  5.             string fileName = strName + ".xls";   
  6.   
  7.             Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.ApplicationClass();   
  8.   
  9.             int rowIndex = 1;   
  10.             int colIndex = 0;   
  11.   
  12.             excel.Application.Workbooks.Add(true);   
  13.   
  14.             foreach (DataColumn col in dt.Columns)   
  15.             {   
  16.                 colIndex++;   
  17.                 excel.Cells[1, colIndex] = col.ColumnName;   
  18.             }   
  19.   
  20.             foreach (DataRow row in dt.Rows)   
  21.             {   
  22.                 rowIndex++;   
  23.                 colIndex = 0;   
  24.                 for (colIndex = 0; colIndex < dt.Columns.Count; colIndex++)   
  25.                 {   
  26.                     excel.Cells[rowIndex, colIndex + 1] = row[colIndex].ToString();   
  27.                 }   
  28.             }   
  29.   
  30.             excel.Visible = false;   
  31.             excel.ActiveWorkbook.SaveAs(fileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlExcel9795, null, null, false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, null, null, null, null, null);   
  32.             //excel.Save(fileName);    
  33.   
  34.             excel.Quit();   
  35.             excel = null;   
  36.   
  37.             GC.Collect();//垃圾回收    
  38.         }  

protected void AddExcel(DataSet ds,string strName)       

 {           

 DataTable dt = ds.Tables[0];            string fileName = strName + ".xls";            Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.ApplicationClass();            int rowIndex = 1;            int colIndex = 0;            excel.Application.Workbooks.Add(true);            foreach (DataColumn col in dt.Columns)            {                colIndex++;                excel.Cells[1, colIndex] = col.ColumnName;            }            foreach (DataRow row in dt.Rows)            {                rowIndex++;                colIndex = 0;                for (colIndex = 0; colIndex < dt.Columns.Count; colIndex++)                {                    excel.Cells[rowIndex, colIndex + 1] = row[colIndex].ToString();                }            }            excel.Visible = false;            excel.ActiveWorkbook.SaveAs(fileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlExcel9795, null, null, false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, null, null, null, null, null);            //excel.Save(fileName);             excel.Quit();            excel = null;            GC.Collect();//垃圾回收         } 

,之前没用过这种方式,结果出现以下错误:
类型“Microsoft.Office.Interop.Excel.ApplicationClass”未定义构造函数    
无法嵌入互操作类型“Microsoft.Office.Interop.Excel.ApplicationClass”。请改用适用的接口。



解决方法:将引用的DLL:Microsoft.Office.Interop.Excel;的嵌入互操作类型改为false,就可以了。

posted @ 2011-07-18 09:17  修罗王  阅读(3908)  评论(1编辑  收藏  举报