前端导入导出

在很多后台管理系统里可能会有导出表格,下载表格,下载压缩包等这样的需求。下面说几种简单的下载的方法:

1.最简单的,有文件的地址,直接使用a标签实现下载(通用模板前端本地下载):
<a href="/user/test/xxxx.xls" download="文件名.xls">点击下载</a>

但是有个情况,比如txt,png,jpg等这些浏览器支持直接打开的文件是不会执行下载任务的,而是会直接打开文件,这个时候就需要给a标签添加一个属性“download”;
如果再vue项目中需要下载文件需要放在public文件夹下 需要下载的路径是相对于index.html文件路径 否则会提示下载文件未找到

2.window.open()方法,后端提供下载接口:

html:

<button type="button" id="btn1">window.open()方法下载</button>

js:

(最简单:window.location.href="xxxxx后端给的下载地址")
var $eleBtn1 = $("#btn1");

//已知一个下载文件的后端接口:

https://codeload.github.com/douban/douban-client/legacy.zip/master

//方法一:window.open()

$eleBtn1.click(function(){
 var url = "https://codeload.github.com/douban/douban-	client/legacy.zip/master";
	window.open(url);
});
3.通过form表单提交的方式:

html:

<button type="button" id="btn2">form方法下载</button>

js:

var $eleBtn2 = $("#btn2");

//已知一个下载文件的后端接口:

https://codeload.github.com/douban/douban-client/legacy.zip/master
$eleBtn2.click(function(){
	var $eleForm = $("<form method='get'></form>");

	$eleForm.attr("action","https://codeload.github.com/douban/douban-client/legacy.zip/master");

	$(document.body).append($eleForm);

	//提交表单,实现下载
	$eleForm.submit();
});
4. 数据流转成excel表格下载
  1. utils 写一个js方法导出
// 数据格式
var data = {
   "title": [
           {"value":"A1标题"}, 
           {"value":"B1标题"}
    ],
   "data":[
           [ {"value":"好好"},  {"value":"2015-08-24"} ],
           [ {"value":"123"}, {"value":"hahah"} ]
    ]
 }; 
/* eslint-disable no-redeclare */
// 参数一:内容  参数二:表格名称  参数三:表头
export function JSONToExcelConvertor(JSONData, FileName, ShowLabel) { 
  //先转化json 
  var arrData = typeof JSONData != 'object' ? JSON.parse(JSONData) : JSONData; 
    
  var excel = '<table>';   
    
  //设置表头 
  var row = "<tr>"; 
  for (var i = 0, l = ShowLabel.length; i < l; i++) { 
    row += "<td>" + ShowLabel[i].value + '</td>'; 
  } 
    
    
  //换行 
  excel += row + "</tr>"; 
    
  //设置数据 
  for (var i = 0; i < arrData.length; i++) { 
    var row = "<tr>"; 
      
    for (var index in arrData[i]) { 
      var value = arrData[i][index].value === "." ? "" : arrData[i][index].value; 
      //row += '<td>' + value + '</td>'; 
      // 解决科学记数法
      // eslint-disable-next-line no-useless-escape
      row += '<td style='+ 'mso-number-format:"\@"'+ '>' + value + '</td>';
    } 
      
    excel += row + "</tr>"; 
  } 

  excel += "</table>"; 

  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 += '<meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8">'; 
  excelFile += '<meta http-equiv="content-type" content="application/vnd.ms-excel'; 
  excelFile += '; charset=UTF-8">'; 
  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 += excel; 
  excelFile += "</body>"; 
  excelFile += "</html>"; 

    
  var uri = 'data:application/vnd.ms-excel;charset=utf-8,' + encodeURIComponent(excelFile); 
    
  var link = document.createElement("a");   
  link.href = uri; 
    
  link.style = "visibility:hidden"; 
  link.download = FileName + ".xls"; 
    
  document.body.appendChild(link); 
  link.click(); 
  document.body.removeChild(link); 
} 
  1. 引入,传参
import {JSONToExcelConvertor} from '@/utils/export.js'
// 导出
async onExport() {
   try {
     let param = new URLSearchParams()
     param.append('curpage', this.pageNumber)
     param.append('start_time', this.startTime)
     param.append('end_time', this.endTime)
     ...
     const res = await exportList(param) // 点击按钮调接口
     console.log('导出', res);
     if (res && res.code == 200) {
       JSONToExcelConvertor(res.datas.data, "交易流水", res.datas.title )
     }
   } catch (error) {
     console.log(error);
   }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前端中,你可以使用以下方法来实现导入导出 Excel 文件: 1. 导出 Excel 文件: - 使用 Excel.js、xlsx-populate、xlsx-writer 等库来生成 Excel 文件。 - 将数据转换为 Excel 格式并下载到客户端。在浏览器中,你可以创建一个 Blob 对象,然后使用 URL.createObjectURL(blob) 方法来生成下载链接,最后使用 a 标签的 download 属性来触发下载。 2. 导入 Excel 文件: - 使用第三方库如 exceljs、xlsx、xlsx-populate 等来读取和解析 Excel 文件。 - 通过文件输入(input file)元素让用户选择要上传的 Excel 文件,并使用 FileReader 对象读取文件内容。 - 使用解析库将读取到的数据进行处理,如解析为 JSON 或者直接处理为 JavaScript 对象。 以下是一个使用 SheetJS/xlsx 库导入导出 Excel 文件的示例: ```html <!-- 导入 Excel 文件 --> <input type="file" id="file-input" accept=".xlsx,.xls" /> <!-- 导出 Excel 按钮 --> <button id="export-btn">导出 Excel</button> <script src="https://unpkg.com/xlsx/dist/xlsx.full.min.js"></script> <script> // 导入 Excel 文件 document.getElementById('file-input').addEventListener('change', function(event) { var file = event.target.files[0]; var reader = new FileReader(); reader.onload = function(e) { var data = new Uint8Array(e.target.result); var workbook = XLSX.read(data, { type: 'array' }); // 处理 Excel 数据 var sheetName = workbook.SheetNames[0]; var worksheet = workbook.Sheets[sheetName]; var jsonData = XLSX.utils.sheet_to_json(worksheet, { header: 1 }); console.log(jsonData); }; reader.readAsArrayBuffer(file); }); // 导出 Excel 文件 document.getElementById('export-btn').addEventListener('click', function() { var worksheet = XLSX.utils.json_to_sheet([ { Name: 'John Doe', Age: 30 }, { Name: 'Jane Smith', Age: 25 } ]); var workbook = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1'); var excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' }); var blob = new Blob([excelBuffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }); var url = URL.createObjectURL(blob); var a = document.createElement('a'); a.href = url; a.download = 'data.xlsx'; a.click(); URL.revokeObjectURL(url); }); </script> ``` 这是一个基本的示例,你可以根据需求进行修改和扩展。记得在实际使用中引入相应的库文件,并根据实际情况进行数据处理和样式设置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值