gpt4 book ai didi

javascript - 如何将数据表导出到在 IE 中也适用的 Excel

转载 作者:行者123 更新时间:2023-12-01 05:45:37 27 4
gpt4 key购买 nike

我正在使用

  var tableToExcel = (function() {
var uri = 'data:application/vnd.ms-excel;base64,'
, template = '<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><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--><meta http-equiv="content-type" content="text/plain; charset=UTF-8"/></head><body><table>{table}</table></body></html>'
, base64 = function(s) {
return window.btoa(unescape(encodeURIComponent(s)))
}
, format = function(s, c) {
return s.replace(/{(\w+)}/g, function(m, p) {
return c[p];
})
};
return function(table, fileName) {
if (!table.nodeType) table = document.getElementById(table)
var ctx = {
worksheet: fileName || 'Worksheet',
table: table.innerHTML
}
$("<a id='dlink' style='display:none;'></a>").appendTo("body");
document.getElementById("dlink").href = uri + base64(format(template, ctx))
document.getElementById("dlink").download = fileName;
document.getElementById("dlink").click();
}
})();

用于将数据表导出到 Excel,它在 Chrome 和 Firefox 中都可以正常工作。然而它给出了

The data area passed to a system call is too small.

所有 IE 版本均出现错误。请给我一些解决方法来解决这个问题,或者建议任何适用于所有浏览器的新方法。我从昨天开始就在谷歌上搜索同样的内容,但一切都是徒劳的......任何帮助将不胜感激..谢谢

:编辑我尝试过 downloadify.js、filesaver,但对我不起作用。

最佳答案

我使用 jspdf 获得了所需的结果。我实现了以下几点:-

1) This works in all versions of IE.
2) You can give the freeze column and freeze row options also in Excel

.

我使用的库

1)downloadify.js 
2)swfobject.js
3)downloadify.swf

我使用的函数

1)getHtmlForExport(); // gives the html of the table to be exported.
2)tableToExcel();// converts html code to Microsoft Excel specific XML code
3)handleExcelExport();// downloads excel specific XML to excel file.


var tableToExcel = function (table, horizontalFreezeRowNo, VerticalFreezeRowNo) {
var worksheetString = '';
//worksheet freeze pane options
worksheetString += '<x:WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"><x:Selected/><x:FreezePanes/><x:FrozenNoSplit/><x:ActivePane>2</x:ActivePane>';
if (horizontalFreezeRowNo !== undefined)
worksheetString += '<x:SplitHorizontal>' + horizontalFreezeRowNo + '</x:SplitHorizontal><x:TopRowBottomPane>' + horizontalFreezeRowNo + '</x:TopRowBottomPane>';
if (VerticalFreezeRowNo !== undefined)
worksheetString += '<x:SplitVertical>' + VerticalFreezeRowNo + '</x:SplitVertical><x:LeftColumnRightPane>' + VerticalFreezeRowNo + '</x:LeftColumnRightPane>';

worksheetString += '</x:WorksheetOptions>';

var template = '<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><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions>' + worksheetString + '</x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--><meta http-equiv="content-type" content="text/plain; charset=UTF-8"/></head><body><table>{table}</table></body></html>'

, format = function (s, c) {
return s.replace(/{(\w+)}/g, function (m, p) {
return c[p];
})
};
if (!table.nodeType)
table = document.getElementById(table)
var ctx = {
table: table.innerHTML
}
$("#exportTable").remove();
return format(template, ctx)
}

function handleExcelExport(gridConfig) {
$("." + gridConfig.objectID + "Export").downloadify({
filename: function () {
var elementClicked = this.el;
var headerText = $(elementClicked).parents('.portlet').find('.portlet-title h8').text();
var fileName;
if (elementClicked == undefined || headerText == undefined) {
fileName = "excel"
} else {
fileName = headerText.toString().trim()
}
return fileName + ".xls";
},
data: function () {
var elementClicked = this.el;

getHtmlForExport(elementClicked, gridConfig);
return (tableToExcel('exportTable', 1, 1));// table id, horizontal freeze,vertical freeze
},
onComplete: function () {

},
onCancel: function () {

},
onError: function () {

},
swf: 'resources/js/downloadify/downloadify.swf',
downloadImage: 'resources/css/images/excelDownload.png',
width: 65,
height: 20,
transparent: true,
append: false
});
}

对于 getHtmlForExport,您必须编写逻辑来获取要导出的表的 html。

关于javascript - 如何将数据表导出到在 IE 中也适用的 Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27039474/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com