te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>javascript - Export data of table in CSV, Excel, PDF format in VueJs - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Export data of table in CSV, Excel, PDF format in VueJs - Stack Overflow

programmeradmin3浏览0评论

I am working on vueJs template and I need to export data of tables in three formats which are .pdf, .csv, .xls I tried with this question but its show Utils undefined. so how can I achieve what I want ?

I am working on vueJs template and I need to export data of tables in three formats which are .pdf, .csv, .xls I tried with this question but its show Utils undefined. so how can I achieve what I want ?

Share Improve this question edited Sep 28, 2021 at 6:09 Varinder Sohal asked Oct 29, 2019 at 3:49 Varinder SohalVarinder Sohal 1,2926 gold badges25 silver badges51 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 9

Easy way

If you can use different table ponent try to look into Vue materialize datatable

It's letting you to export in XLS and print to PDF

Without any ponent

The way I personally use If i need to export any JSON that is consist of more fields than there are in the actual table:

https://www.papaparse./

import Papa from "papaparse";
var blob = new Blob([Papa.unparse(jsonData)], { type: 'text/csv;charset=utf-8;' });

var link = document.createElement("a");

var url = URL.createObjectURL(blob);
link.setAttribute("href", url);
link.setAttribute("download", 'filename.csv');
link.style.visibility = 'hidden';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);

So, we actually unparsing JSON data into the blob, creating dynamic element which linked to it and downloading the file.

I've created a code snippet at the following link which creates csv file from html using vueJS

https://codepen.io/mwaqasiqbal/pen/wvVqyoz

<!-- Use preprocessors via the lang attribute! e.g. <template lang="pug"> -->
<template>
  <div id="app">
   <div v-if="array.length > 0" class="mt-4">
        <button class="mt-1 btn btn-plete btn-cons btnGo" @click="downloadCSV()">Export</button>
    </div>
    <div id="divData">
        <table class="table" :class="loading ? 'loading' : ''" id="shiftTable">
            <thead>
                <tr>
                    <th><span>Employee</span></th>
                    <th><span>Clocked In</span></th>
                    <th><span>Clocked Out</span></th>
                    <th><span>Duration</span></th>
                    <th ignore-column="true">Action</th>
                </tr>
            </thead>
            <tbody>
                <tr v-for="shift in array">
                    <td>{{shift.name}}</td>
                    <td>{{shift.clockedInStr}}</td>
                    <td>{{shift.clockedOutStr}}</td>
                    <td>{{shift.durationStr}}</td>
                    <td ignore-column="true">
                        <a v-bind:href="'/Shift/' + shift.id">View</a>
                    </td>
                </tr>
            </tbody>
        </table>
    </div>
    <div class="noRowFound" v-if="array.length == 0">no data found</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      array: [
    {
        "id": "10HYAGKNRFSX2",
        "name": "Khurram",
        "clockedIn": "2024-10-08T07:11:00.000Z",
        "clockedInStr": "Tue Oct 08 2024 12:11:00 p.m.",
        "clockedOut": "2024-10-13T15:22:00.000Z",
        "clockedOutStr": "Sun Oct 13 2024 8:22:00 p.m.",
        "duration": "08:11",
        "durationStr": "8 hr(s), 11 min(s)"
    },
    {
        "id": "WZXZH7AKXBWP8",
        "name": "Khurram",
        "clockedIn": "2024-10-03T16:12:00.000Z",
        "clockedInStr": "Thu Oct 03 2024 9:12:00 p.m.",
        "clockedOut": "2024-10-03T16:13:00.000Z",
        "clockedOutStr": "Thu Oct 03 2024 9:13:00 p.m.",
        "duration": "00:01",
        "durationStr": "0 hr(s), 1 min(s)"
    },
    {
        "id": "E7S41FS70YYPC",
        "name": "Khurram",
        "clockedIn": "2024-10-01T07:00:00.000Z",
        "clockedInStr": "Tue Oct 01 2024 12:00:00 p.m.",
        "clockedOut": "2024-10-01T07:02:00.000Z",
        "clockedOutStr": "Tue Oct 01 2024 12:02:00 p.m.",
        "duration": "00:02",
        "durationStr": "0 hr(s), 2 min(s)"
    },
    {
        "id": "SBDEENC6NX72J",
        "name": "Khurram",
        "clockedIn": "2024-09-29T17:18:00.000Z",
        "clockedInStr": "Sun Sep 29 2024 10:18:00 p.m.",
        "clockedOut": "2024-09-29T17:30:00.000Z",
        "clockedOutStr": "Sun Sep 29 2024 10:30:00 p.m.",
        "duration": "00:12",
        "durationStr": "0 hr(s), 12 min(s)"
    },
    {
        "id": "3J3T3HJZV672J",
        "name": "Khurram",
        "clockedIn": "2024-09-29T13:56:00.000Z",
        "clockedInStr": "Sun Sep 29 2024 6:56:00 p.m.",
        "clockedOut": "2024-09-29T17:02:00.000Z",
        "clockedOutStr": "Sun Sep 29 2024 10:02:00 p.m.",
        "duration": "03:05",
        "durationStr": "3 hr(s), 5 min(s)"
    },
    {
        "id": "VQHKEA4MCJA6J",
        "name": "Khurram",
        "clockedIn": "2024-09-28T20:54:00.000Z",
        "clockedInStr": "Sun Sep 29 2024 1:54:00 a.m.",
        "clockedOut": "2024-09-28T20:58:00.000Z",
        "clockedOutStr": "Sun Sep 29 2024 1:58:00 a.m.",
        "duration": "00:03",
        "durationStr": "0 hr(s), 3 min(s)"
    },
    {
        "id": "3NAQ8KM13X874",
        "name": "Khurram",
        "clockedIn": "2024-09-28T20:43:00.000Z",
        "clockedInStr": "Sun Sep 29 2024 1:43:00 a.m.",
        "clockedOut": "2024-09-28T20:54:00.000Z",
        "clockedOutStr": "Sun Sep 29 2024 1:54:00 a.m.",
        "duration": "00:10",
        "durationStr": "0 hr(s), 10 min(s)"
    },
    {
        "id": "ME6W0ZMVKXZAJ",
        "name": "Khurram",
        "clockedIn": "2024-09-28T20:33:00.000Z",
        "clockedInStr": "Sun Sep 29 2024 1:33:00 a.m.",
        "clockedOut": "2024-09-28T20:37:00.000Z",
        "clockedOutStr": "Sun Sep 29 2024 1:37:00 a.m.",
        "duration": "00:04",
        "durationStr": "0 hr(s), 4 min(s)"
    },
    {
        "id": "P5H5W03KZQ4MW",
        "name": "Khurram",
        "clockedIn": "2024-09-28T20:02:00.000Z",
        "clockedInStr": "Sun Sep 29 2024 1:02:00 a.m.",
        "clockedOut": "2024-09-28T20:03:00.000Z",
        "clockedOutStr": "Sun Sep 29 2024 1:03:00 a.m.",
        "duration": "00:01",
        "durationStr": "0 hr(s), 1 min(s)"
    },
    {
        "id": "88FK0GD8XKQE0",
        "name": "Khurram",
        "clockedIn": "2024-09-27T20:33:00.000Z",
        "clockedInStr": "Sat Sep 28 2024 1:33:00 a.m.",
        "clockedOut": "2024-09-27T20:34:00.000Z",
        "clockedOutStr": "Sat Sep 28 2024 1:34:00 a.m.",
        "duration": "00:01",
        "durationStr": "0 hr(s), 1 min(s)"
    },
    {
        "id": "XFNZG477TRTS2",
        "name": "Khurram",
        "clockedIn": "2024-09-27T19:53:00.000Z",
        "clockedInStr": "Sat Sep 28 2024 12:53:00 a.m.",
        "clockedOut": "2024-09-27T20:27:00.000Z",
        "clockedOutStr": "Sat Sep 28 2024 1:27:00 a.m.",
        "duration": "00:33",
        "durationStr": "0 hr(s), 33 min(s)"
    },
    {
        "id": "HTVQWC19GPQXW",
        "name": "Khurram",
        "clockedIn": "2024-09-27T10:11:00.000Z",
        "clockedInStr": "Fri Sep 27 2024 3:11:00 p.m.",
        "clockedOut": "2024-09-27T19:50:00.000Z",
        "clockedOutStr": "Sat Sep 28 2024 12:50:00 a.m.",
        "duration": "09:39",
        "durationStr": "9 hr(s), 39 min(s)"
    },
    {
        "id": "JWV5XFV1Q4NC0",
        "name": "Khurram",
        "clockedIn": "2024-09-26T21:29:00.000Z",
        "clockedInStr": "Fri Sep 27 2024 2:29:00 a.m.",
        "clockedOut": "2024-09-27T19:50:00.000Z",
        "clockedOutStr": "Sat Sep 28 2024 12:50:00 a.m.",
        "duration": "22:21",
        "durationStr": "22 hr(s), 21 min(s)"
    },
    {
        "id": "KTDGGRRK6XMCA",
        "name": "Khurram",
        "clockedIn": "2024-09-26T19:40:00.000Z",
        "clockedInStr": "Fri Sep 27 2024 12:40:00 a.m.",
        "clockedOut": "2024-09-26T21:29:00.000Z",
        "clockedOutStr": "Fri Sep 27 2024 2:29:00 a.m.",
        "duration": "01:48",
        "durationStr": "1 hr(s), 48 min(s)"
    },
    {
        "id": "563F8GN9SC7J2",
        "name": "Khurram",
        "clockedIn": "2024-09-26T07:13:00.000Z",
        "clockedInStr": "Thu Sep 26 2024 12:13:00 p.m.",
        "clockedOut": "2024-09-26T16:31:00.000Z",
        "clockedOutStr": "Thu Sep 26 2024 9:31:00 p.m.",
        "duration": "09:18",
        "durationStr": "9 hr(s), 18 min(s)"
    },
    {
        "id": "03ZFXTFE6RETE",
        "name": "Khurram",
        "clockedIn": "2024-09-26T15:55:00.000Z",
        "clockedInStr": "Thu Sep 26 2024 8:55:00 p.m.",
        "clockedOut": "2024-09-26T19:38:00.000Z",
        "clockedOutStr": "Fri Sep 27 2024 12:38:00 a.m.",
        "duration": "03:43",
        "durationStr": "3 hr(s), 43 min(s)"
    },
    {
        "id": "XHF694KK2FKTE",
        "name": "Khurram",
        "clockedIn": "2024-09-26T07:26:00.000Z",
        "clockedInStr": "Thu Sep 26 2024 12:26:00 p.m.",
        "clockedOut": "2024-09-26T15:52:00.000Z",
        "clockedOutStr": "Thu Sep 26 2024 8:52:00 p.m.",
        "duration": "08:26",
        "durationStr": "8 hr(s), 26 min(s)"
    },
    {
        "id": "BPPFQRX5BZZ6W",
        "name": "Khurram",
        "clockedIn": "2024-09-26T15:25:00.000Z",
        "clockedInStr": "Thu Sep 26 2024 8:25:00 p.m.",
        "clockedOut": "2024-09-26T19:40:00.000Z",
        "clockedOutStr": "Fri Sep 27 2024 12:40:00 a.m.",
        "duration": "04:14",
        "durationStr": "4 hr(s), 14 min(s)"
    },
    {
        "id": "M5VHJ0X560S10",
        "name": "Khurram",
        "clockedIn": "2024-09-26T02:20:00.000Z",
        "clockedInStr": "Thu Sep 26 2024 7:20:00 a.m.",
        "clockedOut": "2024-09-26T11:11:00.000Z",
        "clockedOutStr": "Thu Sep 26 2024 4:11:00 p.m.",
        "duration": "08:51",
        "durationStr": "8 hr(s), 51 min(s)"
    },
    {
        "id": "DDCFFZD8D02G8",
        "name": "Khurram",
        "clockedIn": "2024-09-25T02:06:00.000Z",
        "clockedInStr": "Wed Sep 25 2024 7:06:00 a.m.",
        "clockedOut": "2024-09-26T16:40:00.000Z",
        "clockedOutStr": "Thu Sep 26 2024 9:40:00 p.m.",
        "duration": "14:34",
        "durationStr": "14 hr(s), 34 min(s)"
    },
    {
        "id": "3P3BK8R9YWH12",
        "name": "Khurram",
        "clockedIn": "2024-09-25T07:16:00.000Z",
        "clockedInStr": "Wed Sep 25 2024 12:16:00 p.m.",
        "clockedOut": "2024-09-26T19:39:00.000Z",
        "clockedOutStr": "Fri Sep 27 2024 12:39:00 a.m.",
        "duration": "12:23",
        "durationStr": "12 hr(s), 23 min(s)"
    },
    {
        "id": "K55T9130TBTX8",
        "name": "Khurram",
        "clockedIn": "2024-09-24T09:59:00.000Z",
        "clockedInStr": "Tue Sep 24 2024 2:59:00 p.m.",
        "clockedOut": "2024-09-26T19:39:00.000Z",
        "clockedOutStr": "Fri Sep 27 2024 12:39:00 a.m.",
        "duration": "09:39",
        "durationStr": "9 hr(s), 39 min(s)"
    },
    {
        "id": "FR5GWGJ2Q2Z4J",
        "name": "Khurram",
        "clockedIn": "2024-09-23T18:14:00.000Z",
        "clockedInStr": "Mon Sep 23 2024 11:14:00 p.m.",
        "clockedOut": "2024-09-26T19:39:00.000Z",
        "clockedOutStr": "Fri Sep 27 2024 12:39:00 a.m.",
        "duration": "01:24",
        "durationStr": "1 hr(s), 24 min(s)"
    }
]
    };
  },
  methods: {
    doSomething() {
      alert('Hello!');
    },
   downloadCSV() {
              
                // Getting values of current time for generating the file name, with current date and time
                const dateTime = new Date();
                const day = dateTime.getDate();
                const month = dateTime.getMonth() + 1;
                const year = dateTime.getFullYear();
                const hour = dateTime.getHours();
                const minute = dateTime.getMinutes();
                const postfix = `${day}.${month}.${year}_${hour}.${minute}`;

                //get the table by its id
                const table = document.getElementById('shiftTable');
                let csvContent = '';
                //traverse the table rows and create csv contents
                for (let i = 0; i < table.rows.length; i++) {
                    let row = table.rows[i];
                    let rowData = [];
                    //traverse the table columns and create ma separeted columns
                    for (let j = 0; j < row.cells.length; j++) {
                        let cell = row.cells[j];
                        //don't include the columns which have 'ignore-column' attribute, in case some column need to be removed from csv
                        if (cell.attributes.getNamedItem('ignore-column') == null) {
                            rowData.push(cell.textContent.replace(/,/g, ''));
                        }
                    }
                    //add line feed to plete a row
                    csvContent += rowData.join(',') + '\r\n';
                }
                //xreatea a blob with csv contents
                const blob = new Blob([csvContent], { type: 'text/csv' });
                //create a url to link to csv content blob
                const url = URL.createObjectURL(blob);
                //create anchor to point to url
                const a = document.createElement('a');
                a.href = url;
                //download the file with date time in name
                a.download = `shifts_${postfix}.csv`;
                //add the anchor to document, so it can be clicked
                document.body.appendChild(a);
                //call the click event, so the csv contents can be downloadws
                a.click();
                //remove the anchor as its purpose is served
                document.body.removeChild(a);
}
  }
};
</script>

<!-- Use preprocessors via the lang attribute! e.g. <style lang="scss"> -->
<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}

a,
button {
  color: #4fc08d;
}

button {
  background: none;
  border: solid 1px;
  border-radius: 2em;
  font: inherit;
  padding: 0.75em 2em;
}
</style>
发布评论

评论列表(0)

  1. 暂无评论