excelViewer.vue 821 B

123456789101112131415161718192021222324252627282930313233343536
  1. <template>
  2. <div class="excel-container">
  3. <table border="1" cellspacing="0">
  4. <tr v-for="(row, i) in tableData" :key="i">
  5. <td v-for="cell in row">{{ cell }}</td>
  6. </tr>
  7. </table>
  8. </div>
  9. </template>
  10. <script>
  11. import * as XLSX from 'xlsx';
  12. export default {
  13. name: "excelViewer",
  14. props: ['src'],
  15. data() {
  16. return { tableData: [] };
  17. },
  18. async created() {
  19. try {
  20. const response = await fetch(this.src);
  21. const arrayBuffer = await response.arrayBuffer();
  22. const workbook = XLSX.read(arrayBuffer);
  23. const sheetName = workbook.SheetNames[0];
  24. const sheet = workbook.Sheets[sheetName];
  25. this.tableData = XLSX.utils.sheet_to_json(sheet);
  26. } catch (error) {
  27. console.error('解析Excel失败:', error);
  28. }
  29. }
  30. }
  31. </script>
  32. <style scoped>
  33. </style>