In this tutorial I am going to share simple VueJS component to export Json Data into CSV file and download the resulting file. Do you want to ad expert to csv file feature on your web app thn this VueJS component will be helpful for integrating JSON to CSV.


Install package via command line.

yarn add vue-json-csv

Register JsonCSV in your app entrypoint:

import Vue from 'vue'
import JsonCSV from 'vue-json-csv'
Vue.component('downloadCsv', JsonCSV)

In your template file add following line.

    :data   = "json_data">
    Download Data
    <img src="download_icon.png">

List of properties you can use to customize the plugin:

Name Type Description
data Array (required) Data to be exported
fields Array/Function(value, key) fields inside the Json Object that you want to export. If no given, all the properties in the Json are exported. Use the function to filter the data and only keep the properties you want.
labels Object/Function(value, key) Set the label for the header row.
name string filename to export, default: data.csv
delimiter string Default “,”. Can be changed to anything.
separator-excel boolean If true, will prepend SEP={delimiter} to the file to make it easily usable with Excel
encoding string Set the wanted encoding, default to ‘utf8’
advancedOptions Object You can set all the options of PapaParse yourself

Sample Example

import Vue from 'vue'
import JsonCSV from 'vue-json-csv'
Vue.component('downloadCsv', JsonCSV)
const app = new Vue({
    el: '#app',
    data: {     
        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'

In your Template call it like

    class   = "btn btn-default"
    :data   = "json_data"
    name    = "filename.csv">
    Download CSV (This is a slot)

See live demo and download source code.

This awesome plugin is developed by Belphemur. Visit their official github repository for more information and follow for future updates.