27 lines
989 B
TypeScript
27 lines
989 B
TypeScript
/** Download CSV (UTF-8 BOM) so Excel opens Chinese columns correctly. */
|
|
export function downloadExcelCsv(csv: string, filename: string) {
|
|
const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });
|
|
const url = URL.createObjectURL(blob);
|
|
const a = document.createElement('a');
|
|
a.href = url;
|
|
a.download = filename.endsWith('.csv') ? filename : `${filename}.csv`;
|
|
a.click();
|
|
URL.revokeObjectURL(url);
|
|
}
|
|
|
|
/** Download binary file from base64 payload returned by HQ export APIs. */
|
|
export function downloadBase64File(contentBase64: string, filename: string, mimeType: string) {
|
|
const binary = atob(contentBase64);
|
|
const bytes = new Uint8Array(binary.length);
|
|
for (let i = 0; i < binary.length; i += 1) {
|
|
bytes[i] = binary.charCodeAt(i);
|
|
}
|
|
const blob = new Blob([bytes], { type: mimeType });
|
|
const url = URL.createObjectURL(blob);
|
|
const a = document.createElement('a');
|
|
a.href = url;
|
|
a.download = filename;
|
|
a.click();
|
|
URL.revokeObjectURL(url);
|
|
}
|