Я пытаюсь загрузить json
как xlsx
, используя Sheetjs
.Я успешно могу создать worksheet
и workbook
, но функция ẁriteFile
, похоже, ничего не делает с workbook
.Любая помощь будет оценена.Ниже мой код:
<v-card color="primary" dense>
<v-card-title class="white--text pa-2 min-height">
<h3 class="text-xs-center px-2" data-test-id="DataTableTitle">{{ title(tableId) }}</h3>
<v-spacer />
<v-btn
v-for="action in headerActions(tableId)"
:key="action.title"
data-test-id="action-button"
@click="callActionOrRouteTo(action, tableId)"
>
{{ action.title }}
</v-btn>
<v-btn @click="onExport">EXPORT TO XLSX</v-btn>
</v-card-title>
</v-card>
import { mapGetters } from 'vuex';
import DataTableRouting from '@/components/data-tables/DataTableRouting.vue';
import * as XLSX from 'xlsx';
export default {
name: 'DataTableTitleBar',
extends: DataTableRouting,
props: {
tableId: {
type: Number,
required: true,
},
},
computed: {
...mapGetters({
title: 'dataTables/title',
headerActions: 'dataTables/headerActions',
columns: 'dataTables/columns',
dataItems: 'dataTables/tableItems',
}),
},
data: () => ({
jsonData: null,
}),
methods: {
exportToCSV(dataItems) {
this.jsonData = dataItems.map(row => {
const outputRow = {};
Object.entries(row).forEach(([key, column]) => {
outputRow[key] = column.value;
});
console.log(outputRow);
return outputRow;
});
},
onExport() {
this.exportToCSV(this.dataItems(this.tableId));
console.log(this.jsonData);
const animalWS = XLSX.utils.json_to_sheet(this.jsonData);
console.log(animalWS);
const wb = XLSX.utils.book_new();
console.log(wb);
XLSX.utils.book_append_sheet(wb, animalWS, 'animals');
XLSX.writeFile(wb, 'book.xlsx', { type: 'file' });
},
},
};
Я ожидаю, что при нажатии кнопки файл xlsx
должен быть автоматически загружен.