export.vue 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <template>
  2. <div>
  3. <div class="container">
  4. <div class="handle-box">
  5. <el-button type="primary" @click="exportXlsx">导出Excel</el-button>
  6. </div>
  7. <el-table :data="tableData" border class="table" header-cell-class-name="table-header">
  8. <el-table-column prop="id" label="ID" width="55" align="center"></el-table-column>
  9. <el-table-column prop="name" label="姓名"></el-table-column>
  10. <el-table-column prop="sno" label="学号"></el-table-column>
  11. <el-table-column prop="class" label="班级"></el-table-column>
  12. <el-table-column prop="age" label="年龄"></el-table-column>
  13. <el-table-column prop="sex" label="性别"></el-table-column>
  14. </el-table>
  15. </div>
  16. </div>
  17. </template>
  18. <script setup lang="ts" name="export">
  19. import { ref } from 'vue';
  20. import * as XLSX from 'xlsx';
  21. interface TableItem {
  22. id: number;
  23. name: string;
  24. sno: string;
  25. class: string;
  26. age: string;
  27. sex: string;
  28. }
  29. const tableData = ref<TableItem[]>([]);
  30. // 获取表格数据
  31. const getData = () => {
  32. tableData.value = [
  33. {
  34. id: 1,
  35. name: '小明',
  36. sno: 'S001',
  37. class: '一班',
  38. age: '10',
  39. sex: '男',
  40. },
  41. {
  42. id: 2,
  43. name: '小红',
  44. sno: 'S002',
  45. class: '一班',
  46. age: '9',
  47. sex: '女',
  48. },
  49. ];
  50. };
  51. getData();
  52. const list = [['序号', '姓名', '学号', '班级', '年龄', '性别']];
  53. const exportXlsx = () => {
  54. tableData.value.map((item: any, i: number) => {
  55. const arr: any[] = [i + 1];
  56. arr.push(...[item.name, item.sno, item.class, item.age, item.sex]);
  57. list.push(arr);
  58. });
  59. let WorkSheet = XLSX.utils.aoa_to_sheet(list);
  60. let new_workbook = XLSX.utils.book_new();
  61. XLSX.utils.book_append_sheet(new_workbook, WorkSheet, '第一页');
  62. XLSX.writeFile(new_workbook, `表格.xlsx`);
  63. };
  64. </script>
  65. <style scoped>
  66. .handle-box {
  67. margin-bottom: 20px;
  68. }
  69. .handle-select {
  70. width: 120px;
  71. }
  72. .handle-input {
  73. width: 300px;
  74. }
  75. .table {
  76. width: 100%;
  77. font-size: 14px;
  78. }
  79. .red {
  80. color: #f56c6c;
  81. }
  82. .mr10 {
  83. margin-right: 10px;
  84. }
  85. .table-td-thumb {
  86. display: block;
  87. margin: auto;
  88. width: 40px;
  89. height: 40px;
  90. }
  91. </style>