2011-05-25 39 views
4

我正在將一個gridview導出到一個excel文件,並且它打開得很好。唯一的一點是,此警告每一個Excel文件打開時總是彈出:Excel文件是由文件擴展名指定的另一種格式(從gridview導出的Excel)

The file you are trying to open < > is in a different format than specified by the file extension. Verify that the file is not corrupted and is from a trusted source before opening the file. Do you want to open the file now?

代碼我使用:

 HttpContext.Current.Response.Clear(); 
     HttpContext.Current.Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", "Single_Raw.xls")); 
     HttpContext.Current.Response.ContentType = "application/vnd.ms-excel"; 

    using (StringWriter sw = new StringWriter()) 
    { 
     using (HtmlTextWriter htw = new HtmlTextWriter(sw)) 
     { 
      // some code 

      HttpContext.Current.Response.Write(sw.ToString()); 
      HttpContext.Current.Response.End(); 
     } 
    } 
+0

還有像這樣的另一個問題... http://stackoverflow.com/questions/940045/how-to-suppress-the-file-corrupt-warning-at-excel-download – 2GDev 2011-05-25 14:26:25

+1

嗯,它是正確的。該文件格式不同。即使您將Excel工作表保存爲HTML並立即重新打開,也會發生這種情況。我不認爲這是你可以避免的。 :( – Chris 2011-05-25 14:39:19

回答

2

這是因爲Excel知道這是不是一個實際的Excel文件,儘管你已經用.xls擴展名來命名它。在過去,爲了避免這種警告,我使用了Microsoft.Office.Interop.Excel引用來構建我的輸出文件。然後,當你完成後,你將擁有一個合法的Excel文件。

Microsoft.Office.Interop.Excel

編輯:我周圍的一派,發現this suggestion從Microsoft,但它需要你破解客戶端計算機的註冊表(可能不是可行)。

+0

這當然是一種選擇,我相信它需要將辦公室安裝在你的服務器上,但這並不總是一種選擇/好主意。還有第三方工具可以讓你生成Excel文件,但它們可能不是沒有免費的(雖然辦公室通常不是免費安裝在服務器上) – Chris 2011-05-25 14:35:23

+0

@chris但是如果辦公室安裝在客戶端的筆記本電腦上會怎樣?這是否會奏效?因爲無論如何,整個excel上傳過程都發生在客戶端的筆記本電腦和服務器。 – 2011-05-26 02:40:47

相關問題