Angular-Slickgrid使用ExportToExcel导出时如何去除HTML标签
解决方案
一、内置配置实现(推荐)
Angular-Slickgrid的Excel导出功能自带HTML内容清洗配置,无需额外自定义代码:
- 首先在
gridOptions中开启导出功能并配置全局清洗规则:
this.gridOptions1 = { enableAutoResize: false, enableSorting: true, enableAsyncPostRender: true, // 新增导出相关配置 enableExcelExport: true, exportOptions: { sanitizeDataExport: true // 开启后导出时自动剔除所有单元格内容中的HTML标签,仅保留纯文本 } };
- 如果不需要全局生效,仅针对特定列(如你的title列)处理,可在对应列定义中添加
exportCustomFormatter单独配置,优先级高于全局配置。
二、自定义实现方案
如果内置清洗规则不满足你的业务需求,可以自定义HTML剥离逻辑实现:
- 先实现一个通用的HTML标签剥离工具函数:
private stripHtml(htmlStr: string): string { if (!htmlStr) return ''; // 用DOMParser处理更稳妥,可避免正则匹配遗漏的场景 const dom = new DOMParser().parseFromString(htmlStr, 'text/html'); return dom.body.textContent?.trim() || ''; }
- 在需要处理的列定义中绑定自定义导出格式化方法:
this.columnDefinitions1 = [ { id: 'title', name: 'Title', field: 'title', sortable: true, asyncPostRender: this.renderAngularComponent.bind(this), // 导出时调用自定义方法处理内容 exportCustomFormatter: (rowIndex, colDef, cellValue) => this.stripHtml(cellValue) }, // 其余列定义保持不变 ];
内容的提问来源于stack exchange,提问作者user7880397
相关产品推荐
相关产品推荐

