Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
wangzishuai5499
js-xlsx
提交
1b731a3e
J
js-xlsx
项目概览
wangzishuai5499
/
js-xlsx
与 Fork 源项目一致
从无法访问的项目Fork
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
js-xlsx
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
1b731a3e
编写于
9月 19, 2018
作者:
S
suwenxiong
提交者:
SheetJS
10月 12, 2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
support cell object in sheet_add_aoa
Fixes #1279
上级
4803695d
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
31 addition
and
19 deletion
+31
-19
bits/27_csfutils.js
bits/27_csfutils.js
+12
-9
test.js
test.js
+7
-1
xlsx.flow.js
xlsx.flow.js
+12
-9
xlsx.js
xlsx.js
+0
-0
未找到文件。
bits/27_csfutils.js
浏览文件 @
1b731a3e
...
...
@@ -106,21 +106,24 @@ function sheet_add_aoa(_ws/*:?Worksheet*/, data/*:AOA*/, opts/*:?any*/)/*:Worksh
for
(
var
C
=
0
;
C
!=
data
[
R
].
length
;
++
C
)
{
if
(
typeof
data
[
R
][
C
]
===
'
undefined
'
)
continue
;
var
cell
/*:Cell*/
=
({
v
:
data
[
R
][
C
]
}
/*:any*/
);
if
(
Array
.
isArray
(
cell
.
v
))
{
cell
.
f
=
data
[
R
][
C
][
1
];
cell
.
v
=
cell
.
v
[
0
];
}
var
__R
=
_R
+
R
,
__C
=
_C
+
C
;
if
(
range
.
s
.
r
>
__R
)
range
.
s
.
r
=
__R
;
if
(
range
.
s
.
c
>
__C
)
range
.
s
.
c
=
__C
;
if
(
range
.
e
.
r
<
__R
)
range
.
e
.
r
=
__R
;
if
(
range
.
e
.
c
<
__C
)
range
.
e
.
c
=
__C
;
if
(
cell
.
v
===
null
)
{
if
(
cell
.
f
)
cell
.
t
=
'
n
'
;
else
if
(
!
o
.
cellStubs
)
continue
;
else
cell
.
t
=
'
z
'
;
}
else
if
(
typeof
cell
.
v
===
'
number
'
)
cell
.
t
=
'
n
'
;
else
if
(
typeof
cell
.
v
===
'
boolean
'
)
cell
.
t
=
'
b
'
;
else
if
(
cell
.
v
instanceof
Date
)
{
cell
.
z
=
o
.
dateNF
||
SSF
.
_table
[
14
];
if
(
o
.
cellDates
)
{
cell
.
t
=
'
d
'
;
cell
.
w
=
SSF
.
format
(
cell
.
z
,
datenum
(
cell
.
v
));
}
else
{
cell
.
t
=
'
n
'
;
cell
.
v
=
datenum
(
cell
.
v
);
cell
.
w
=
SSF
.
format
(
cell
.
z
,
cell
.
v
);
}
if
(
data
[
R
][
C
]
&&
typeof
data
[
R
][
C
]
===
'
object
'
&&
!
Array
.
isArray
(
data
[
R
][
C
])
&&
!
(
data
[
R
][
C
]
instanceof
Date
))
cell
=
data
[
R
][
C
];
else
{
if
(
Array
.
isArray
(
cell
.
v
))
{
cell
.
f
=
data
[
R
][
C
][
1
];
cell
.
v
=
cell
.
v
[
0
];
}
if
(
cell
.
v
===
null
)
{
if
(
cell
.
f
)
cell
.
t
=
'
n
'
;
else
if
(
!
o
.
cellStubs
)
continue
;
else
cell
.
t
=
'
z
'
;
}
else
if
(
typeof
cell
.
v
===
'
number
'
)
cell
.
t
=
'
n
'
;
else
if
(
typeof
cell
.
v
===
'
boolean
'
)
cell
.
t
=
'
b
'
;
else
if
(
cell
.
v
instanceof
Date
)
{
cell
.
z
=
o
.
dateNF
||
SSF
.
_table
[
14
];
if
(
o
.
cellDates
)
{
cell
.
t
=
'
d
'
;
cell
.
w
=
SSF
.
format
(
cell
.
z
,
datenum
(
cell
.
v
));
}
else
{
cell
.
t
=
'
n
'
;
cell
.
v
=
datenum
(
cell
.
v
);
cell
.
w
=
SSF
.
format
(
cell
.
z
,
cell
.
v
);
}
}
else
cell
.
t
=
'
s
'
;
}
else
cell
.
t
=
'
s
'
;
if
(
dense
)
{
if
(
!
ws
[
__R
])
ws
[
__R
]
=
[];
ws
[
__R
][
__C
]
=
cell
;
...
...
test.js
浏览文件 @
1b731a3e
...
...
@@ -761,6 +761,13 @@ describe('API', function() {
X
.
utils
.
sheet_add_aoa
(
ws
,
[[
4
,
5
,
6
,
7
,
8
,
9
,
0
]],
{
origin
:
-
1
});
assert
.
equal
(
X
.
utils
.
sheet_to_csv
(
ws
).
trim
(),
"
S,h,e,e,t,J,S
\n
1,2,,,5,6,7
\n
2,3,,,6,7,8
\n
3,4,,,7,8,9
\n
4,5,6,7,8,9,0
"
);
});
it
(
'
sheet_add_aoa support object cell
'
,
function
()
{
var
data
=
X
.
utils
.
aoa_to_sheet
([
[
'
url
'
,
'
name
'
,
'
id
'
],
[
{
l
:
{
Target
:
'
https://123.com
'
},
v
:
'
url
'
,
t
:
'
s
'
},
'
tom
'
,
'
xxx
'
]
]);
if
(
assert
.
deepEqual
)
assert
.
deepEqual
(
data
.
A2
,
{
l
:
{
Target
:
'
https://123.com
'
},
v
:
'
url
'
,
t
:
'
s
'
});
});
});
function
coreprop
(
props
)
{
...
...
@@ -2373,4 +2380,3 @@ mft.forEach(function(x) {
case
"
yes-formula
"
:
formulae
=
true
;
break
;
}});
});
});
xlsx.flow.js
浏览文件 @
1b731a3e
...
...
@@ -3684,21 +3684,24 @@ function sheet_add_aoa(_ws/*:?Worksheet*/, data/*:AOA*/, opts/*:?any*/)/*:Worksh
for(var C = 0; C != data[R].length; ++C) {
if(typeof data[R][C] === 'undefined') continue;
var cell/*:Cell*/ = ({v: data[R][C] }/*:any*/);
if(Array.isArray(cell.v)) { cell.f = data[R][C][1]; cell.v = cell.v[0]; }
var __R = _R + R, __C = _C + C;
if(range.s.r > __R) range.s.r = __R;
if(range.s.c > __C) range.s.c = __C;
if(range.e.r < __R) range.e.r = __R;
if(range.e.c < __C) range.e.c = __C;
if(cell.v === null) { if(cell.f) cell.t = 'n'; else if(!o.cellStubs) continue; else cell.t = 'z'; }
else if(typeof cell.v === 'number') cell.t = 'n';
else if(typeof cell.v === 'boolean') cell.t = 'b';
else if(cell.v instanceof Date) {
cell.z = o.dateNF || SSF._table[14];
if(o.cellDates) { cell.t = 'd'; cell.w = SSF.format(cell.z, datenum(cell.v)); }
else { cell.t = 'n'; cell.v = datenum(cell.v); cell.w = SSF.format(cell.z, cell.v); }
if(data[R][C] && typeof data[R][C] === 'object' && !Array.isArray(data[R][C]) && !(data[R][C] instanceof Date)) cell = data[R][C];
else {
if(Array.isArray(cell.v)) { cell.f = data[R][C][1]; cell.v = cell.v[0]; }
if(cell.v === null) { if(cell.f) cell.t = 'n'; else if(!o.cellStubs) continue; else cell.t = 'z'; }
else if(typeof cell.v === 'number') cell.t = 'n';
else if(typeof cell.v === 'boolean') cell.t = 'b';
else if(cell.v instanceof Date) {
cell.z = o.dateNF || SSF._table[14];
if(o.cellDates) { cell.t = 'd'; cell.w = SSF.format(cell.z, datenum(cell.v)); }
else { cell.t = 'n'; cell.v = datenum(cell.v); cell.w = SSF.format(cell.z, cell.v); }
}
else cell.t = 's';
}
else cell.t = 's';
if(dense) {
if(!ws[__R]) ws[__R] = [];
ws[__R][__C] = cell;
...
...
xlsx.js
浏览文件 @
1b731a3e
此差异由.gitattributes 抑制。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录