在csdn上面找了许多关于excel的帖子,要么是直接打开一个已经存在的excel文件,然后往里面写数据。要么是创建一个弹出对话框的excel,然后提示你保存。
    
   Excel.Application xlApp;
xlApp=new Excel.ApplicationClass();
         xlApp.Application.Workbooks.Add(true);
         xlApp.cells[i][j]=value;         xlApp.ActiveWorkbook.SaveCopyAs(strPath); xlApp.Quit();
xlApp=null;
GC.Collect();
用这个办法是可以保存第一次,但是第2次再执行的时候会出现提示。有没有什么办法直接创建一个excel文件到本地硬盘上,不出现任何提示的程序?谢谢!

解决方案 »

  1.   

    那就指定xls文件,然后追加sheet表!
      

  2.   

    Excel.Application  oExcel;  
    Excel.Workbook  oBook;  
    Object  oMissing  =  System.Reflection.Missing.Value;  
    oExcel  =  new  Excel.Application();  
    oBook  =  oExcel.Workbooks.Add(oMissing);  
    for  (int  i=1;i<=4;i++)  
    {  
       oExcel.Cells[i,1]=i.ToString();  
       oExcel.Cells[i,2]="'bbb2";  
       oExcel.Cells[i,3]="'ccc3";  
       oExcel.Cells[i,4]="'aaa4";  
    }  
    oBook.Saved  =  true;  
    oExcel.UserControl  =  false;  
    string  mm=Server.MapPath(".")+"\\aa.xls";//服务器保存地址  
    oExcel.ActiveWorkbook.SaveCopyAs  (mm);  
    oExcel.Quit();  
    Response.Redirect  ("aa.xls");//注意上保存和调用时的路径。
      

  3.   

    楼主按照我的思路看看这个:public static void ExportToExcel(string filePath, DataSet ds)
      {
       object oMissing = System.Reflection.Missing.Value;
       Excel.ApplicationClass xlApp = new Excel.ApplicationClass();
       try
       {
        // 打开Excel文件。以下为Office 2000.
        Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(filePath, oMissing, oMissing, oMissing, oMissing, oMissing, 
         oMissing, oMissing, oMissing, oMissing, oMissing, oMissing,
         oMissing);
        Excel.Worksheet xlWorksheet;
        // 循环所有DataTable
        for( int i=0; i<ds.Tables.Count; i++ )
        {
         // 添加入一个新的Sheet页。
         xlWorksheet = (Excel.Worksheet)xlWorkbook.Worksheets.Add(oMissing,oMissing,1,oMissing);
         // 以TableName作为新加的Sheet页名。
         xlWorksheet.Name = ds.Tables[i].TableName;
         // 取出这个DataTable中的所有值,暂存于stringBuffer中。
         string stringBuffer = "";
         for( int j=0; j<ds.Tables[i].Rows.Count; j++ )
         {
          for( int k=0; k<ds.Tables[i].Columns.Count; k++ )
          {
           
           stringBuffer += ds.Tables[i].Rows[j][k].ToString();
           if( k < ds.Tables[i].Columns.Count - 1 )
            stringBuffer += "\t";
          }
          stringBuffer += "\n";
         }
         // 利用系统剪切板
         System.Windows.Forms.Clipboard.SetDataObject("");
         // 将stringBuffer放入剪切板。
         System.Windows.Forms.Clipboard.SetDataObject(stringBuffer);
         // 选中这个sheet页中的第一个单元格
         ((Excel.Range)xlWorksheet.Cells[1,1]).Select();
         // 粘贴!
         xlWorksheet.Paste(oMissing,oMissing);
         // 清空系统剪切板。
         System.Windows.Forms.Clipboard.SetDataObject("");
        }
        // 保存并关闭这个工作簿。
        xlWorkbook.Close( Excel.XlSaveAction.xlSaveChanges, oMissing, oMissing );
        System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkbook);
        xlWorkbook = null;
       }
       catch(Exception ex)
       {
        MessageBox.Show(ex.Message);
       }
       finally
       {
        // 释放...
        xlApp.Quit();
        System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
        xlApp = null;
        GC.Collect();
       }
      }
      

  4.   

    我是新人,哪位大大帮助一下我执行的是楼上ppdty()的代码,出现如下错误:
     
    异常详细信息: System.UnauthorizedAccessException: 拒绝访问。
    ASP.NET 未被授权访问所请求的资源。请考虑授予 ASP.NET 请求标识访问此资源的权限。ASP.NET 有一个在应用程序没有模拟时使用的基进程标识(通常,在 IIS 5 上为 {MACHINE}\ASPNET,在 IIS 6 上为网络服务)。如果应用程序正在通过 <identity impersonate="true"/> 模拟,则标识将为匿名用户(通常为 IUSR_MACHINENAME)或经过身份验证的请求用户。 若要授予 ASP.NET 对文件的写访问权,请在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”添加适当的用户或组。突出显示 ASP.NET 帐户,选中所需访问权限对应的框。
     
    源错误: 
    行 54:  oExcel  =  new  Excel.Application();  
    哪位大大给解释一下?