首页 > 解决方案 > 导出列时创建超链接

问题描述

我正在使用以下函数从 Angular 6 项目中将 json 导出到 xls:

 exportAsExcelFile(jsonData: any[]): void {
    let exportObj=[{
      'Name':'ABC',
      'RollNo':'123',
      'url':'www.google.com'
      }]      


    const ws: XLSX.WorkSheet = XLSX.utils.json_to_sheet(exportObj);

    const wb: XLSX.WorkBook = XLSX.utils.book_new();

    XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');
    /* save to file */
    const filename = 'Sample.xlsx';

    XLSX.writeFile(wb, filename);
  }

获得以下输出

在此处输入图像描述

期待以下带有超链接的输出。

在此处输入图像描述

标签: javascripttypescriptangular6exportxlsx

解决方案


基于这个答案https://stackoverflow.com/a/38916180我遍历所有 ws 并使用=HYPERLINK("http...", "link text") 更新以“http”开头的每个单元格。

(下面的代码片段需要 JQuery 才能工作)

var ws = XLSX.utils.json_to_sheet(data);
//Update links
jQuery.each(ws, function(cell, item) {
    if (item.v != null && item.v.toString().indexOf('http') == 0)
        ws[cell] = {f: '=HYPERLINK("' + item.v.toString() + '","link text")'};
});
var wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, "TabName");
XLSX.writeFile(wb, "my_file.xlsx");

推荐阅读