Relatório .csv com vue.js
Bom dia!!
Estou precisando fazer um relatório para exportação em EXCEL (.csv) com vue.js.
Os dados estão num outro arquivo, mas já importei eles para o que estou usando.
Fiz o botão:
<q-btn fab icon="download" color="teal-9" style="width: 60px" @click="exportTable"/>
Importei o arquivo que contem as informações:
import OrdersTable from '../components/OrdersTable.vue'
Coloquei a função wrapCsvValue:
function wrapCsvValue (val, formatFn, row) {
let formatted = formatFn !== void 0
? formatFn(val, row)
: val
formatted = formatted === void 0 || formatted === null
? ''
: String(formatted)
formatted = formatted.split('"').join('""')
/**
* Excel accepts \n and \r in strings, but some other CSV parsers do not
* Uncomment the next two lines to escape new lines
*/
// .split('\n').join('\\n')
// .split('\r').join('\\r')
return `"$"`
}
E fiz o método de exportar:
exportTable () {
// naive encoding to csv format
let content = [this.columns.map(col => wrapCsvValue(col.label))].concat(
this.orders.map(row => this.columns.map(col => wrapCsvValue(
typeof col.field === 'function'
? col.field(row)
: row[ col.field === void 0 ? col.name : col.field ],
col.format,
row
)).join(';'))
).join('\r\n')
content = content.replace(/,"/g,";"")
const status = exportFile(
'export.csv',
content,
'text/csv',
)
if (status !== true) {
$q.notify({
message: 'Browser denied file download...',
color: 'negative',
icon: 'warning'
})
}
},
mas ainda não funciona, o que pode estar faltando?
Estou precisando fazer um relatório para exportação em EXCEL (.csv) com vue.js.
Os dados estão num outro arquivo, mas já importei eles para o que estou usando.
Fiz o botão:
<q-btn fab icon="download" color="teal-9" style="width: 60px" @click="exportTable"/>
Importei o arquivo que contem as informações:
import OrdersTable from '../components/OrdersTable.vue'
Coloquei a função wrapCsvValue:
function wrapCsvValue (val, formatFn, row) {
let formatted = formatFn !== void 0
? formatFn(val, row)
: val
formatted = formatted === void 0 || formatted === null
? ''
: String(formatted)
formatted = formatted.split('"').join('""')
/**
* Excel accepts \n and \r in strings, but some other CSV parsers do not
* Uncomment the next two lines to escape new lines
*/
// .split('\n').join('\\n')
// .split('\r').join('\\r')
return `"$"`
}
E fiz o método de exportar:
exportTable () {
// naive encoding to csv format
let content = [this.columns.map(col => wrapCsvValue(col.label))].concat(
this.orders.map(row => this.columns.map(col => wrapCsvValue(
typeof col.field === 'function'
? col.field(row)
: row[ col.field === void 0 ? col.name : col.field ],
col.format,
row
)).join(';'))
).join('\r\n')
content = content.replace(/,"/g,";"")
const status = exportFile(
'export.csv',
content,
'text/csv',
)
if (status !== true) {
$q.notify({
message: 'Browser denied file download...',
color: 'negative',
icon: 'warning'
})
}
},
mas ainda não funciona, o que pode estar faltando?
Gabriele Figueiredo
Curtidas 0