经手的一个架构比较老的基于IE7的erp要做excel导出功能,遍参考网上的例子,终于成功了:
function test(){
var c = [
{
name:'路人甲',
phone:'123456789',
email:'000@123456.com'
},
{
name:'炮灰乙',
phone:'123456789',
email:'000@1234567.com'
},
{
name:'土匪丙',
phone:'123456789',
email:'000@1234568.com'
},
{
name:'流氓丁',
phone:'123456789',
email:'000@1234569.com'
}
];
var tou = {name:"名称",phone:"电话",email:"邮箱"};//中文列头
AllAreaExcel222(c,"导出数据",true,tou);
}
function AllAreaExcel222(JSONData, filename, ShowLabel,tou) {
//debugger;
var arrData = typeof JSONData != 'object' ? JSON.parse(JSONData) : JSONData;
var CSV = '';
if (ShowLabel) {
var row = "";
for (var index in arrData[0]) {
var col_name = index;//列名初始值是json中的英文列名
for(var en_name in tou){
if(en_name==index){
col_name = tou[en_name];//如果tou中能找到英文列名对应的中文列名,则取中文列名
}
}
row += col_name + '\t';
}
CSV += row +'\n';
}
for (var i = 0; i < arrData.length; i++) {
var row = "";
for (var index in arrData[i]) {
row += arrData[i][index] + '\t';
}
CSV += row+'\n';
}
if (CSV == '') {
alert("数据有错误");
return;
}
//debugger;
try {
var oXL;
try{
oXL = new ActiveXObject("Excel.Application"); //创建AX对象excel
}catch(e){
alert("无法启动Excel!\n\n如果您确信您的电脑中已经安装了Excel,"+"那么请调整IE的安全级别。\n\n具体操作:\n\n"+"工具 → Internet选项 → 安全 → 自定义级别 → 对未标记为可安全执行脚本的ActiveX初始化并脚本运行 → 启用");
return false;
}
var oWB = oXL.Workbooks.Add(); //获取workbook对象
var oSheet = oWB.ActiveSheet;//激活当前sheet
clipboardData.setData("text",CSV);//复制到剪切板
oSheet.Paste();//粘贴到活动的EXCEL中
oXL.Visible = true; //设置excel可见属性
var fname = oXL.Application.GetSaveAsFilename(filename+".xls", "Excel Spreadsheets (*.xls), *.xls");
//var fname = oXL.Application.GetSaveAsFilename(filename+".csv", "Excel Spreadsheets (*.xls), *.xls");
oWB.SaveAs(fname);
oWB.Close();
oXL.Quit();
} catch (e) {
alert(e.description);
}
}