2012-09-15 122 views
0

我想將數據從數據庫導出到Excel 2007文件。MVC3 C#導出到Excel

我只是想將html文件的標題改爲excel 2007文件。

我的數據以表格形式呈現,並更改標題到這一點:

Response.AddHeader("Content-Disposition", "attachment;filename= filename.xlsx"); 
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 

我不斷收到同樣的錯誤:

"Excel cannot open the file "filename.xlsx' because the file format of file extension is not valid. Verify that the file has not been corrupted and that the file extension matches the format of the file"

我也試過這個例子,我在網上找到的,我可以在Excel 2003中打開一條警告消息,但在2007年,我收到了上述錯誤消息。它需要使它與Excel工作

<html 
xmlns:o="urn:schemas-microsoft-com:office:office" 
xmlns:x="urn:schemas-microsoft-com:office:excel" 
xmlns="http://www.w3.org/TR/REC-html40"> 
<head> 
<meta http-equiv=Content-Type content="text/html; charset=windows-1252"> 
<meta name=ProgId content=Excel.Sheet> 
<meta name=Generator content="Microsoft Excel 11"> 
<!--[if gte mso 9]><xml> 
<x:ExcelWorkbook> 
    <x:ExcelWorksheets> 
    <x:ExcelWorksheet> 
    <x:Name>Sheet1</x:Name> 
    <x:WorksheetOptions> 
    <x:Selected/> 
    <x:ProtectContents>False</x:ProtectContents> 
    <x:ProtectObjects>False</x:ProtectObjects> 
    <x:ProtectScenarios>False</x:ProtectScenarios> 
    </x:WorksheetOptions> 
    </x:ExcelWorksheet> 
    </x:ExcelWorksheets> 
    <x:ProtectStructure>False</x:ProtectStructure> 
    <x:ProtectWindows>False</x:ProtectWindows> 
</x:ExcelWorkbook> 
</xml><![endif]--> 
<style> 
<!--table 
    {mso-displayed-decimal-separator:"\."; 
    mso-displayed-thousand-separator:" ";} 
.xl2 
    { 
    mso-number-format:M/D/YY; 
    border-left:.5pt solid; 
    border-top:.5pt solid; 
    border-right:.5pt solid; 
    border-bottom:.5pt solid; 
    } 
.xl3 
    { 
    border-left:.5pt solid; 
    border-top:.5pt solid; 
    border-right:.5pt solid; 
    border-bottom:.5pt solid; 
    } 
--> 
</style> 
</head> 
<body> 
<table> 
<tr> 
<td class=xl2>17.02.2010</td> 
<td class=xl3>4</td> 
<td class=xl3>0</td> 
</tr> 
<tr> 
</tr> 
</table> 
</body> 
</html> 
+0

我知道這是不是你正在尋找的解決方案,但最近我們支持的出口由簡單地創建一個製表符分隔的文本文件,並保存在數據庫中脫穎而出它位於服務器上的tmp目錄中,然後在HTTP響應中返回該文本文件。 Excel已經支持將製表符和逗號分隔的文本文件解析到excel工作表中 –

回答

2

我用這種形式:

using(System.IO.MemoryStream ms = /*Include Excel File*/) { 
    ControllerContext.HttpContext.Response.Clear(); 
    ControllerContext.HttpContext.Response.AddHeader("cache-control", "private"); 
    ControllerContext.HttpContext.Response.AddHeader("Content-disposition", "attachment; filename=" + filename + ";"); 
    ControllerContext.HttpContext.Response.AddHeader("Content-type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); 
    ms.WriteTo(ControllerContext.HttpContext.Response.OutputStream); 
} 
return null; 
0

如何生成一個.csv?爲什麼你需要一個完整的本機Excel文件?另一個簡單的選擇是隻生成HTML內容,然後將輸出內容類型設置爲excel。 Excel將打開它並對其進行格式化,這是一個快捷方式,但它很有用。

+0

客戶需要xlsx文件和關於html選項這是上面的示例,但它適用於xls而不是xlsx文件我在嘗試打開時收到上述錯誤excel文件 – Valter