n20-common-lib 2.5.56 → 2.5.57

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n20-common-lib",
3
- "version": "2.5.56",
3
+ "version": "2.5.57",
4
4
  "private": false,
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -3,10 +3,20 @@ import importG from './importGlobal.js'
3
3
  export default async function toJson(file, name) {
4
4
  const { read, utils } = await importG('xlsx', () => import(/*webpackChunkName: "xlsx"*/ 'xlsx'))
5
5
 
6
+ const getHeaderRow = (sheet) => {
7
+ const headers = []
8
+ let cell = []
9
+ sheet['!merges'].forEach((item) => {
10
+ cell.push(utils.decode_range(utils.encode_cell(item.s) + ':' + utils.encode_cell(item.e)))
11
+ })
12
+ console.log(cell, 'range')
13
+
14
+ return headers
15
+ }
16
+
6
17
  let pro = new Promise((resolve, reject) => {
7
18
  if (file instanceof Blob) {
8
19
  file.arrayBuffer().then((array) => {
9
- console.log(array)
10
20
  try {
11
21
  const workbook = read(array, { type: 'array', cellDates: true, raw: true })
12
22
  resolve(workbook)
@@ -28,26 +38,29 @@ export default async function toJson(file, name) {
28
38
  let sheetName = name || workbook.SheetNames[0]
29
39
  let workSheet = workbook.Sheets[sheetName]
30
40
  if (!workSheet) return Promise.reject(`工作表:${name} 不存在`)
41
+ // let rows = []
42
+ const merges = workSheet['!merges'] || []
43
+ if (merges.length > 0) {
44
+ merges.forEach((merge) => {
45
+ const rangeStart = merge.s
46
+ const rangeEnd = merge.e
47
+ const start = utils.encode_cell(rangeStart)
48
+ // const end = utils.encode_cell(rangeEnd)
49
+ const mergedValue = workSheet[start].v // 获取合并单元格的值
31
50
 
32
- let rows = []
33
-
34
- let cols = utils.sheet_to_csv(workSheet, { FS: '†', blankrows: false }).split('\n')[0].replace(/†+$/, '').split('†')
35
-
36
- rows.push(cols)
37
- let rowsc = utils.sheet_to_json(workSheet, { cellDates: true, raw: true })
38
- rowsc.forEach((r) => {
39
- let row = []
40
- cols.forEach((c) => {
41
- let d = r[c]
42
- if (d instanceof Date && d.getHours() === 23 && d.getMinutes() === 59) {
43
- d.setDate(d.getDate() + 1)
44
- d.setHours(0, 0, 0)
51
+ // 将合并信息应用到所有单元格
52
+ for (let i = rangeStart.r; i <= rangeEnd.r; i++) {
53
+ for (let j = rangeStart.c; j <= rangeEnd.c; j++) {
54
+ const cellAddress = utils.encode_cell({ r: i, c: j })
55
+ workSheet[cellAddress] = { t: 's', v: mergedValue } // 使用 's' 类型表示字符串
56
+ }
45
57
  }
46
-
47
- row.push(d)
48
58
  })
49
- rows.push(row)
50
- })
51
- return Promise.resolve(rows)
59
+ }
60
+
61
+ // let cols = utils.sheet_to_csv(workSheet, { FS: '†', blankrows: false }).split('\n')[0].replace(/†+$/, '').split('†')
62
+ // rows.push(cols)
63
+ let rowsC = utils.sheet_to_json(workSheet, { header: 1, defval: '', cellDates: true, raw: true })
64
+ return Promise.resolve(rowsC)
52
65
  })
53
66
  }