2012-12-06 72 views
0

我嘗試了幾個解決方案,如Using System.Microsoft.Office.ExcelExcel = System.Microsoft.Office.Excel,但它的功能工作.... 在這裏,我試圖讓數據在一個表並以.xls格式下載到服務器中指定位置的文件中,然後爲用戶提供下載文件的鏈接。 這是出口`從asp.net中的gridview導出爲ex​​cel格式錯誤

protected void btnExcelExport_Click(object sender, EventArgs e) 
{ 
    System.Text.StringBuilder sb = new System.Text.StringBuilder(); 
    using (StringWriter sw = new StringWriter(sb)) 
    { 
     using(HtmlTextWriter htw = new HtmlTextWriter(sw)) 
     { 
      // Create a form to contain the grid 
      Table table = new Table(); 
      // get gridlines from gridview 
      table.GridLines = GridView2.GridLines; 
      if (GridView2.HeaderRow != null) 
      {      
       table.Rows.Add(GridView2.HeaderRow); 
      } 
      foreach (GridViewRow row in GridView2.Rows) 
      { 
       table.Rows.Add(row); 
      } 
      if (GridView2.FooterRow != null) 
      { 
       table.Rows.Add(GridView2.FooterRow); 
      }  
      // render the table into the htmlwriter 
      table.RenderControl(htw);  
     } 
     var myRootPath = Server.MapPath("~"); 
     var docPath = Path.GetFullPath(Path.Combine(myRootPath, "/Compare/c.xls")); 
     File.WriteAllText(docPath, sw.ToString()); 
    } 
    dwndlink.Visible = true; 

} 

的代碼,當這對LinkBut​​ton的代碼:

protected void dwnlink(object sender, EventArgs e) 
{ 
    var webRootPath = Server.MapPath("~"); 
    var docPath = Path.GetFullPath(Path.Combine(webRootPath, "/Compare/c.xls")); 

    string name = Path.GetFileName(docPath); 
    Response.AppendHeader("content-disposition", "attachment; filename=" + name); 
    Response.ContentType = "Application/vnd.ms-excel"; 
    Response.TransmitFile(docPath); 
    Response.End(); 
} 

所以當用戶打開下載的文件,給出了相同的擴展名的警告,它不是。 這是爲什麼發生.. ??

我試圖在各種網站提供的解決方案的工作,但都無濟於事......

感謝

回答

0

嘗試使用

Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" 
+0

試過了,但同樣的提示彈出... :( – Kulkarni

0

嘗試改變Response.ContentType = "application/vnd.xls";Response.ContentType = "application/vnd.ms-excel"

而且

Microsoft d ocument says:

「當前的設計不允許您在Excel中的網站上打開HTML內容...因此,ASP頁面返回HTML並將MIME類型設置爲XLS之類的內容,以嘗試強制HTML在Excel中而不是在瀏覽器中打開(如預期的那樣)將始終獲得安全警報......如果使用HTML MIME類型,則Web瀏覽器將打開內容而不是Excel。因此,對於這種情況,沒有很好的解決方法,因爲缺少特定於Excel的HTML/MHTML的特殊MIME類型。如果您控制需要訪問它的Web服務器和客戶端桌面,則可以添加自己的MIME類型,但最好的選擇是使用不同的文件格式,或者警告用戶警告並告訴用戶選擇「是」對話框「

訪問這個網站太:http://devblog.grinn.net/2008/06/file-you-are-trying-to-open-is-in.html

+0

試圖VID越南盾-MS-Excel文檔...但問題....: ( 編輯:是否有沒有合理的解決這個問題,我的意思是我用盡了MSDN中給出的所有MIME類型....但是,這個問題並沒有準備好消失...謝謝 – Kulkarni