在我的asp.Net MVC 4項目中,我使用了Excel導出功能,該功能使用Javascript從客戶端導出HTML表格到Excel文件。從JavaScript導出到Excel不工作在IE中?
導出功能在Chrome
和Firefox
中工作正常,但在IE
(任何瀏覽器)中都不工作。在IE瀏覽器中,它只是打開一個新窗口,併發生未知事件。
低於我的javascript代碼給出,
function Export(htmltable,filename) {
var excelFile = "<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'>";
excelFile += "<head>";
excelFile += "<!--[if gte mso 9]>";
excelFile += "<xml>";
excelFile += "<x:ExcelWorkbook>";
excelFile += "<x:ExcelWorksheets>";
excelFile += "<x:ExcelWorksheet>";
excelFile += "<x:Name>";
excelFile += "{worksheet}";
excelFile += "</x:Name>";
excelFile += "<x:WorksheetOptions>";
excelFile += "<x:DisplayGridlines/>";
excelFile += "</x:WorksheetOptions>";
excelFile += "</x:ExcelWorksheet>";
excelFile += "</x:ExcelWorksheets>";
excelFile += "</x:ExcelWorkbook>";
excelFile += "</xml>";
excelFile += "<![endif]-->";
excelFile += "</head>";
excelFile += "<body>";
excelFile += htmltable.replace(/"/g, '\'');
excelFile += "</body>";
excelFile += "</html>";
var base64data = "base64," + $.base64.encode(excelFile);
window.open('data:application/vnd.ms-excel;'+ base64data);
}
我也試着將文件命名,如:
window.open('data:application/vnd.ms-excel;filename=' + filename + ';' + base64data);
但還是它的命名,如 'download.xls'。
如何解決這些問題。
我還發現這些說法,
如果你的目標Internet Explorer作爲瀏覽器,你必須尋找一種不同的方法,因爲目前的一個將無法正常工作。從MSDN庫,數據協議的話題說:
Data URIs are supported only for the following elements and/or attributes.
object (images only)
img
input type=image
link
CSS declarations that accept a URL, such as background, backgroundImage,
and so on.
Data URIs can be nested.
For security reasons, data URIs are restricted to downloaded resources. Data URIs cannot be used for navigation, for scripting, or to populate frame or iframe elements.
任何方法來克服呢?
任何幫助表示讚賞。