Nuxt.js -jsonからEXCELファイル作成

JSONからEXCELファイル作成
Nuxt.js ライブラリー「Vue-json-excel」を使ってjsonデータからEXCELダウンロードする。 このライブラリーを使うことで、簡単にjsonデータをEXCELダウンロードできます。

Vue-json-excelインストール
## 作成したプロジェクトに移動
cd nuxtapp
## インストール
yarn add vue-json-excel
Vue-json-excel使い方
plugins配下にplugin.jsを作成し、下記の通りに編集します。
import Vue from 'vue'import JsonExcel from "vue-json-excel"Vue.component("downloadExcel", JsonExcel)
プロジェクト配下にあるnuxt.config.jsに下記のコードを追加します。
plugin: [ { src:'@/plugins/plugin',
mode:'client'
}
],
pages配下にあるindex.vueを下記の通りに編集します。
<template lang="javascript">
<div class="container">
<download-excel class="btn btn-default" :data="json_data" :fields="json_fields" worksheet="My Worksheet" name="filename.xls">
Download Excel
</download-excel>
</div>
</template>
<script>
export default {
components: {
},
data() {
return {
json_fields: {
"Complete name": "name",
City: "city",
Telephone: "phone.mobile",
"Telephone 2": {
field: "phone.landline",
callback: (value) => {
return `Landline Phone - ${value}`;
},
},
},
json_data: [{
name: "Tony Peña",
city: "New York",
country: "United States",
birthdate: "1978-03-15",
phone: {
mobile: "1-541-754-3010",
landline: "(541) 754-3010",
},
},
{
name: "Thessaloniki",
city: "Athens",
country: "Greece",
birthdate: "1987-11-23",
phone: {
mobile: "+1 855 275 5071",
landline: "(2741) 2621-244",
},
},
],
json_meta: [
[{
key: "charset",
value: "utf-8",
}, ],
]
}
},
methods: {
log(event) {
console.log(event)
},
},
}
</script>
<style>
.container {
margin: 0 auto;
min-height: 80vh;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
font-size: 20px;
}
</style>
<template lang="javascript">
<div class="container">
<download-excel class="btn btn-default" :data="json_data" :fields="json_fields" worksheet="My Worksheet" name="filename.xls">
Download Excel
</download-excel>
</div>
</template>
<script>
export default {
components: {
},
data() {
return {
json_fields: {
"Complete name": "name",
City: "city",
Telephone: "phone.mobile",
"Telephone 2": {
field: "phone.landline",
callback: (value) => {
return `Landline Phone - ${value}`;
},
},
},
json_data: [{
name: "Tony Peña",
city: "New York",
country: "United States",
birthdate: "1978-03-15",
phone: {
mobile: "1-541-754-3010",
landline: "(541) 754-3010",
},
},
{
name: "Thessaloniki",
city: "Athens",
country: "Greece",
birthdate: "1987-11-23",
phone: {
mobile: "+1 855 275 5071",
landline: "(2741) 2621-244",
},
},
],
json_meta: [
[{
key: "charset",
value: "utf-8",
}, ],
]
}
},
methods: {
log(event) {
console.log(event)
},
},
}
</script>
<style>
.container {
margin: 0 auto;
min-height: 80vh;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
font-size: 20px;
}
関連記事:





























