javascript - 导出列时创建超链接
问题描述
我正在使用以下函数从 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);
}
获得以下输出
期待以下带有超链接的输出。
解决方案
基于这个答案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");