From bc07164e588d968f052987038fdc31db88a4269c Mon Sep 17 00:00:00 2001 From: Remi PLANEL <rplanel@pasteur.fr> Date: Mon, 11 Dec 2023 19:17:49 +0100 Subject: [PATCH] composable to downolad json object as csv --- composables/useDownloadCsv.ts | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 composables/useDownloadCsv.ts diff --git a/composables/useDownloadCsv.ts b/composables/useDownloadCsv.ts new file mode 100644 index 00000000..724fd797 --- /dev/null +++ b/composables/useDownloadCsv.ts @@ -0,0 +1,24 @@ +import { ref } from 'vue'; +import Papa from 'papaparse'; + +export default function useCsvDownload() { + const downloadCsv = (data: Record<string, any>[], fileName: string): void => { + const csvContent = Papa.unparse(data); + const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' }); + + const link = document.createElement('a'); + if (link.download !== undefined) { + const url = URL.createObjectURL(blob); + link.setAttribute('href', url); + link.setAttribute('download', fileName); + link.style.visibility = 'hidden'; + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + } + }; + + return { + downloadCsv, + }; +} -- GitLab