JsonExport.vue 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <template>
  2. <PageWrapper title="导出示例" content="根据JSON格式的数据进行导出">
  3. <BasicTable title="基础表格" :columns="columns" :dataSource="data">
  4. <template #toolbar>
  5. <a-button @click="defaultHeader"> 导出:默认头部 </a-button>
  6. <a-button @click="customHeader"> 导出:自定义头部 </a-button>
  7. <a-button @click="handleMultipleSheet" danger> 导出多Sheet </a-button>
  8. </template>
  9. </BasicTable>
  10. </PageWrapper>
  11. </template>
  12. <script lang="ts">
  13. import { defineComponent } from 'vue';
  14. import { BasicTable } from '/@/components/Table';
  15. import { jsonToSheetXlsx } from '/@/components/Excel';
  16. import { columns, data } from './data';
  17. import { PageWrapper } from '/@/components/Page';
  18. import { jsonToMultipleSheetXlsx } from '/@/components/Excel/src/Export2Excel';
  19. export default defineComponent({
  20. components: { BasicTable, PageWrapper },
  21. setup() {
  22. function defaultHeader() {
  23. // 默认Object.keys(data[0])作为header
  24. jsonToSheetXlsx({
  25. data,
  26. filename: '使用key作为默认头部.xlsx',
  27. });
  28. }
  29. function customHeader() {
  30. jsonToSheetXlsx({
  31. data,
  32. header: {
  33. id: 'ID',
  34. name: '姓名',
  35. age: '年龄',
  36. no: '编号',
  37. address: '地址',
  38. beginTime: '开始时间',
  39. endTime: '结束时间',
  40. },
  41. filename: '自定义头部.xlsx',
  42. json2sheetOpts: {
  43. // 指定顺序
  44. header: ['name', 'id'],
  45. },
  46. });
  47. }
  48. function handleMultipleSheet() {
  49. jsonToMultipleSheetXlsx({
  50. sheetList: [
  51. {
  52. data,
  53. sheetName: '使用key作为默认头部',
  54. },
  55. {
  56. data,
  57. header: {
  58. id: 'ID',
  59. name: '姓名',
  60. age: '年龄',
  61. no: '编号',
  62. address: '地址',
  63. beginTime: '开始时间',
  64. endTime: '结束时间',
  65. },
  66. json2sheetOpts: {
  67. // 指定顺序
  68. header: ['name', 'id'],
  69. },
  70. sheetName: '自定义头部',
  71. },
  72. ],
  73. filename: '多Sheet导出示例.xlsx',
  74. });
  75. }
  76. return {
  77. defaultHeader,
  78. customHeader,
  79. handleMultipleSheet,
  80. columns,
  81. data,
  82. };
  83. },
  84. });
  85. </script>