File tree Expand file tree Collapse file tree 2 files changed +60
-4
lines changed Expand file tree Collapse file tree 2 files changed +60
-4
lines changed Original file line number Diff line number Diff line change @@ -40,7 +40,7 @@ function s2ab (s) {
40
40
}
41
41
42
42
// 导出EXCEL表格
43
- export function exportDataFromExcel (
43
+ export function exportDataToExcel (
44
44
{
45
45
header, // 表头名数组
46
46
key, // 列对应字段数组
@@ -73,6 +73,39 @@ export function exportDataFromExcel (
73
73
} ) , `${ fileName } .${ bookType } ` )
74
74
}
75
75
76
+ // 从Excel文件中获取表格头
77
+ function getHeaderRow ( sheet ) {
78
+ const headers = [ ]
79
+ // 将 A1:G8 这种字符串转换为行列对象
80
+ const range = XLSX . utils . decode_range ( sheet [ '!ref' ] )
81
+ let C
82
+ const R = range . s . r
83
+ // 从第一列开始,遍历范围中的每一列
84
+ for ( C = range . s . c ; C <= range . e . c ; ++ C ) {
85
+ // 将行列对象转换为 A1 这种字符串
86
+ const cell = sheet [ XLSX . utils . encode_cell ( { c : C , r : R } ) ]
87
+ // 用默认值替换
88
+ let hdr = 'UNKNOWN ' + C
89
+ if ( cell && cell . t ) hdr = XLSX . utils . format_cell ( cell )
90
+ headers . push ( hdr )
91
+ }
92
+ return headers
93
+ }
94
+
95
+ // 读取Excel文件
96
+ export function readDataFromExcel ( data , type ) {
97
+ // 读取Excel文件并保存到Workbook对象
98
+ const workbook = XLSX . read ( data , { type : type } )
99
+ const firstSheetName = workbook . SheetNames [ 0 ]
100
+ // 获取Workbook对象的worksheet
101
+ const worksheet = workbook . Sheets [ firstSheetName ]
102
+ const header = getHeaderRow ( worksheet )
103
+ // 将worksheet转化成数组
104
+ const results = XLSX . utils . sheet_to_json ( worksheet )
105
+ return { header, results }
106
+ }
107
+
76
108
export default {
77
- exportDataFromExcel
109
+ exportDataToExcel,
110
+ readDataFromExcel
78
111
}
Original file line number Diff line number Diff line change 7
7
<p >github地址:访问 <el-link type =" success" href =" https://github.com/SheetJS/sheetjs" target =" _blank" >JS-xlsx</el-link ></p >
8
8
</template >
9
9
</Hints >
10
+ <el-card shadow =" always" >
11
+ <UploadExcel @on-success =" handleSuccess" />
12
+ <el-table
13
+ :data =" tableData"
14
+ tooltip-effect =" dark"
15
+ style =" width : 100% "
16
+ size =" medium" >
17
+ <el-table-column v-for =" item in tableHeader" :key =" item" :prop =" item" :label =" item" align =" center" />
18
+ </el-table >
19
+ </el-card >
10
20
</div >
11
21
</template >
12
22
13
23
<script >
24
+ import UploadExcel from ' ../../components/UploadExcel'
14
25
import Hints from ' ../../components/Hints/index'
15
26
16
27
export default {
17
28
name: ' ImportExcel' ,
18
- components: { Hints }
29
+ data () {
30
+ return {
31
+ tableHeader: [],
32
+ tableData: []
33
+ }
34
+ },
35
+ components: { UploadExcel, Hints },
36
+ methods: {
37
+ handleSuccess ({ header, results }) {
38
+ this .tableHeader = header
39
+ this .tableData = results
40
+ }
41
+ }
19
42
}
20
43
</script >
21
44
22
45
<style lang="less">
23
46
.import-excel-wrapper {
24
47
.el-card {
25
- min-height : 500 px ;
48
+ min-height : 400 px ;
26
49
}
27
50
.search-form {
28
51
padding-top : 18px ;
You can’t perform that action at this time.
0 commit comments