I am using angular slickgrid to export excel and csv, and also try to export single & mutiple url values against single cell. Any solution to format cell as hyperlink for single and multiple urls.
Code which I wrote for export
import { Component, OnInit } from '@angular/core';
import { GridOption, FieldType, FileType, DelimiterType, ExcelExportOption } from '@slickgrid-universal/common';
import { ExcelExportService } from '@slickgrid-universal/excel-export';
import { TextExportService } from '@slickgrid-universal/text-export';
@Component({
selector: 'OrganisationInfoSearchList',
templateUrl: 'OrganisationInfoSearchList.html'
})
export class OrganisationInfoSearchList implements OnInit {
constructor(public excelExportService: ExcelExportService, public textExportService: TextExportService) { }
public gridOptions: GridOption = {
enableExcelExport: true,
enableExport: true,
gridMenu: {
hideExportExcelCommand: true,
hideExportCsvCommand: true,
dropSide: 'right',
commandItems: [{
command: "cspfm-excel-export",
titleKey: "EXPORT_TO_EXCEL",
iconCssClass: "fa fa-file-excel-o",
action: (event, callbackArgs) => {
let excelExportOptions: ExcelExportOption = {
filename: 'OrganisationInfoSearchList',
format: FileType.xlsx
}
return this.excelExportService.exportToExcel(excelExportOptions).catch(error => {
alert(error.message);
return error;
});
}
}, {
command: "cspfm-csv-export",
titleKey: "EXPORT_TO_CSV",
iconCssClass: "fa fa-download",
action: (event, callbackArgs) => {
let exportOptions: any = {
filename: 'OrganisationInfoSearchList',
format: FileType.csv,
delimiter: DelimiterType.comma
}
return this.textExportService.exportToFile(exportOptions).catch(error => {
alert(error.message);
return error;
});
}
}],
},
exportOptions: {
exportWithFormatter: true
},
excelExportOptions: {
exportWithFormatter: true,
sanitizeDataExport: false
},
enableTextExport: true,
textExportOptions: {
exportWithFormatter: true,
sanitizeDataExport: false
},
registerExternalResources: [this.excelExportService, this.textExportService]
}
public columnDefinitions = [{
id: 'name',
name: 'Name',
field: 'name',
type: FieldType.string,
exportCustomFormatter: (row: number, cell: number, value: any, columnDef: any, dataContext: any, grid: any) => {
return (value ? value : '');
},
exportWithFormatter: true,
formatter: (row: number, cell: number, value: any, columnDef: any, dataContext: any, grid: any) => {
return (value ? `<span title='${value}'>${value}</span>` : '');
},
cssClass: 'left-align cs-slickgrid-inline-edit-pointer',
}, {
id: 'foundedon',
name: 'Founded on',
field: 'foundedon',
type: FieldType.date,
exportCustomFormatter: (row: number, cell: number, value: any, columnDef: any, dataContext: any, grid: any) => {
return (value ? value : '');
},
exportWithFormatter: true,
formatter: (row: number, cell: number, value: any, columnDef: any, dataContext: any, grid: any) => {
return (value ? `<span title='${value}'>${value}</span>` : '');
},
cssClass: 'left-align cs-slickgrid-inline-edit-pointer'
}, {
id: 'category',
name: 'Category',
field: 'category',
type: FieldType.string,
exportCustomFormatter: (row: number, cell: number, value: any, columnDef: any, dataContext: any, grid: any) => {
return (value ? value : '');
},
exportWithFormatter: true,
formatter: (row: number, cell: number, value: any, columnDef: any, dataContext: any, grid: any) => {
return (value ? `<span title='${value}'>${value}</span>` : '');
},
cssClass: 'left-align cs-slickgrid-inline-edit-pointer'
}, {
id: 'income',
name: 'Income',
field: 'income',
toolTip: 'Income',
exportCustomFormatter: (row: number, cell: number, value: any, columnDef: any, dataContext: any, grid: any) => {
return (value ? value : '');
},
exportWithFormatter: true,
formatter: (row: number, cell: number, value: any, columnDef: any, dataContext: any, grid: any) => {
return (value ? `<span title='${value}'>${value}</span>` : '');
},
cssClass: 'left-align cs-slickgrid-inline-edit-pointer'
}, {
id: 'officialwebsite',
name: 'Official Website',
field: 'officialwebsite',
toolTip: 'Official Website',
exportCustomFormatter: (row: number, cell: number, value: any, columnDef: any, dataContext: any, grid: any) => {
return (value ? value.split('~~') : '');
},
exportWithFormatter: true,
formatter: (row: number, cell: number, value: any, columnDef: any, dataContext: any, grid: any) => {
return (value ? `<span title='${value}'>${value}</span>` : '');
},
cssClass: 'left-align cs-slickgrid-inline-edit-pointer'
}, {
id: 'additionalwebsite',
name: 'Additional Website',
field: 'additionalwebsite',
type: FieldType.unknown,
exportCustomFormatter: (row: number, cell: number, value: any, columnDef: any, dataContext: any, grid: any) => {
return (value ? value.split('~~') : '');
},
exportWithFormatter: true,
formatter: (row: number, cell: number, value: any, columnDef: any, dataContext: any, grid: any) => {
return (value ? `<span title='${value}'>${value}</span>` : '');
},
cssClass: 'left-align cs-slickgrid-inline-edit-pointer'
}, {
id: 'currentlyactive',
name: 'Currently Active',
field: 'currentlyactive',
type: FieldType.string,
exportCustomFormatter: (row: number, cell: number, value: any, columnDef: any, dataContext: any, grid: any) => {
return (value);
},
exportWithFormatter: true,
formatter: (row: number, cell: number, value: any, columnDef: any, dataContext: any, grid: any) => {
return `<span title='${value}'>${value}</span>`;
},
cssClass: 'left-align cs-slickgrid-inline-edit-pointer'
}]
/* Sample dataset */
public dataset = [{
'name': 'org1',
'foundedon': '21/Jun/2002',
'category': 'Government',
'income': '₹10,000.00',
'officialwebsite': 'https://www.google.com',
'additionalwebsite': 'https://www.google.com~~www.org1.com',
'currentlyactive': false
}]
}
Existing export file:
Version I have used:
npm | Version |
---|---|
@angular/cli | 13.3.9 |
angular-slickgrid | 4.3.1 |
@slickgrid-universal/common | 1.4.0 |
@slickgrid-universal/excel-export | 1.4.0 |
@slickgrid-universal/text-export | 1.4.0 |
Any solution to format cell as hyperlink for single and multiple urls.
Expected export file: