js 导出excel,设置下载的标题

       在网上找到了js导出为excel的方法,可就是找不到如何修改导出的excel标题的方式,找到了如下的网站: 参考国外的网站:http://stackoverflow.com/questions/17126453/html-table-to-excel-javascript.他是利用a标签,可以设置download属性,设置下载的文件标题,这里是a标签的详细解释http://www.runoob.com/tags/att-a-download.html:

          


     二  英文的原文和大概翻译如下:



I'm trying to use this script to save a html table to an Excel file, and it works fine, however it doesn't come up in the proper name, but rather with a random string. And I can't see why .
I call it with:
<input type="button" οnclick="tableToExcel('tablename', 'name')" value="Export to Excel">
code
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]--></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, name) {
if (!table.nodeType) table = document.getElementById(table)
var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML}
window.location.href = uri + base64(format(template, ctx))
}
})()

答案如下:
意思是:可以使用a标签的download属性来设置下载的文件标题:
You can use download attribute supported by modern browsera for a anchor element. First modify your HTML by adding an invisible anchor:
/ /这里是在你点击导出的按钮上方增加一个隐藏的a标签,只是为了更改标题内
<a id="dlink"  style="display:none;"></a>
<input type="button" οnclick="tableToExcel('tablename', 'name', 'myfile.xls')" value="Export to Excel">

Notice also that the call to function tableToExcel now has 3rd parameter - where you specify file name.
Now use this modified code of your original function:
//这里是将html内容转换成excel的方法
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]--></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, name, filename) {
            if (!table.nodeType) table = document.getElementById(table)
            var ctx = { worksheet: name || 'Worksheet', table: table.innerHTML }

            document.getElementById("dlink").href = uri + base64(format(template, ctx));
            document.getElementById("dlink").download = filename ;//这里是关键所在,当点击之后,设置a标签的属性,这样就可以更改标签的标题
            document.getElementById("dlink").click();

        }
    })()


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
您好,您的问题是如何将 Excel 文件导出JSONArray,并使用 excel.js 进行下载。 首先,您需要将 Excel 文件转换为 JSON 格式。有许多工具可以帮助您完成此操作,例如 SheetJS,它是一个用 JavaScript 编写的用于解析和处理 Excel 文件的库。 您可以使用 SheetJSExcel 文件读取为 JSON 格式,示例代码如下: ```javascript const XLSX = require('xlsx'); const workbook = XLSX.readFile('example.xlsx'); const sheet = workbook.Sheets[workbook.SheetNames[0]]; const data = XLSX.utils.sheet_to_json(sheet); console.log(data); ``` 以上代码将读取名为 `example.xlsx` 的 Excel 文件的第一个工作表,并将其转换为 JSON 格式。您可以根据需要调整代码,例如更改要读取的工作表名称或更改输出的格式。 接下来,您可以使用 excel.js 库来将 JSON 数据导出Excel 文件。示例代码如下: ```javascript const ExcelJS = require('exceljs'); const workbook = new ExcelJS.Workbook(); const worksheet = workbook.addWorksheet('Sheet1'); const data = [{ name: 'John', age: 30 }, { name: 'Jane', age: 25 }]; worksheet.columns = [ { header: 'Name', key: 'name', width: 20 }, { header: 'Age', key: 'age', width: 10 }, ]; data.forEach((row) => { worksheet.addRow(row); }); workbook.xlsx.writeBuffer().then((buffer) => { const blob = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = 'example.xlsx'; a.click(); }); ``` 以上代码将创建一个名为 `example.xlsx` 的 Excel 文件,并将 JSON 数据导入到名为 `Sheet1` 的工作表中。您可以根据需要调整代码,例如更改工作表名称、列的标题和宽度等。 最后,代码将使用 `Blob` 和 `URL.createObjectURL` 将 Excel 文件转换为可下载的链接,并将其添加到一个隐藏的 `<a>` 元素中,以便用户单击时可以下载文件。 希望这可以帮助您完成您的需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值