Jcrydgs 2019-05-13 15:14 采纳率: 0%
浏览 358

导出excel,如何在下方弹出是否打开或保存

/***导出勾选列内容生成excel***/
function exportToExcel(tableid,chkname) //读取表格中每个单元到EXCEL中
{

 var curTbl = document.getElementById(tableid);
 if(chkname==undefined) chkname="";
 var curChk = $("[name='"+chkname+"']");
 var oXL;

   try{
       oXL = new ActiveXObject("Excel.Application"); //创建AX对象excel 
   }catch(e){
       dalert("无法启动Excel!\n\n如果您确信您的电脑中已经安装了Excel,"+"那么请调整IE的安全级别。\n\n具体操作:\n\n"+"工具 → Internet选项 → 安全 → 自定义级别 → 对没有标记为安全的ActiveX进行初始化和脚本运行 → 启用");
       return false;
   }

 var oWB = oXL.Workbooks.Add();//获取workbook对象 
 var oSheet = oWB.ActiveSheet;//激活当前sheet 
 var hang = curTbl.rows.length;//取得表格行数
 var lie =curTbl.rows(0).cells.length;//取得数据源列数
 for(var i=0;i<hang;i++){//i为表单对应的行,j为表单对应的列
     for(var j=0,k=0;j<lie-1;j++,k++){//k为生成EXCEL对应的列

         if(curChk[j].checked){//当勾选上时记录相应的数据
         oSheet.Cells(i+1,k+1).NumberFormatLocal = "@";//设置单元格数字格式为文本
         oSheet.Cells(i+1,k+1).value=curTbl.rows(i).cells(j).innerText;
         }else{
            k--;//当未勾选时,EXCEL列回退
         }
     }
 }
 oXL.Visible = true;//设置excel可见属性
  try{
    var fname = oXL.Application.GetSaveAsFilename("用户导出结果.xls", "Excel Spreadsheets (*.xls), *.xls");
}catch(e){
    print("Nested catch caught " + e);
}finally{
    location.href='用户导出结果.xls';
       oWB.SaveAs(fname);

    oWB.Close(savechanges=false);
     //xls.visible = false;
    oXL.Quit();
    oXL=null;
     //结束excel进程,退出完成
     //window.setInterval("Cleanup();",1);
    idTmr = window.setInterval("Cleanup();",1); 
}   

}

IE浏览器
1.我想要的是这种展示:(这是用jsp中java代码写的输出流)
图片说明

2.目前js导出的,就直接把excel打开了,又弹出了另存为。是这样的:(现在只用js,不能像之前那样)

图片说明

想问下大神们,创建ActiveXObject的方式能不能实现第一种
(查了很久,貌似用a标签路径下载可以,但我是ajax查询返回的数据,在调用
exportToExcel方法,如何实现)

  • 写回答

1条回答 默认 最新

  • 小贾童鞋# 2023-07-18 17:06
    关注

    自己参考一下我写的这个吧

    <template>
      <div>
        <el-button @click="exportExcel">导出 Excel</el-button>
      </div>
    </template>
    
    
    <script>
    import * as FileSaver from "file-saver";
    import * as XLSX from "xlsx";
    
    export default {
      data() {
        return {
          tableData: [
            // 表格数据
          ],
        };
      },
      methods: {
        exportExcel() {
          const worksheet = XLSX.utils.json_to_sheet(this.tableData);
          const workbook = XLSX.utils.book_new();
          XLSX.utils.book_append_sheet(workbook, worksheet, "Sheet1");
          const excelBuffer = XLSX.write(workbook, {
            bookType: "xlsx",
            type: "array",
          });
          const excelBlob = new Blob([excelBuffer], { type: "application/octet-stream" });
          FileSaver.saveAs(excelBlob, "data.xlsx");
          this.$message({
            message: "Excel 文件已导出",
            type: "success",
            duration: 3000,
            showClose: true,
          });
        },
      },
    };
    </script>
    
    
    评论

报告相同问题?

悬赏问题

  • ¥15 python天天向上类似问题,但没有清零
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)