Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xuri
excelize
提交
00c58a73
excelize
项目概览
xuri
/
excelize
通知
13
Star
2
Fork
4
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
excelize
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
00c58a73
编写于
1月 11, 2023
作者:
L
Liron Levin
提交者:
GitHub
1月 12, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix panic caused by the workbook relationship part not exist (#1443)
- Check nil map in the getSheetMap function - Update unit tests
上级
14d7acd9
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
26 addition
and
7 deletion
+26
-7
excelize_test.go
excelize_test.go
+23
-7
sheet.go
sheet.go
+3
-0
未找到文件。
excelize_test.go
浏览文件 @
00c58a73
...
...
@@ -228,14 +228,18 @@ func TestOpenReader(t *testing.T) {
_
,
err
=
OpenReader
(
bytes
.
NewReader
(
oleIdentifier
),
Options
{
Password
:
"password"
,
UnzipXMLSizeLimit
:
UnzipSizeLimit
+
1
})
assert
.
EqualError
(
t
,
err
,
ErrWorkbookFileFormat
.
Error
())
// Test open workbook with unsupported charset internal calculation chain
preset
:=
func
(
filePath
string
)
*
bytes
.
Buffer
{
// Prepare unusual workbook, made the specified internal XML parts missing
// or contain unsupported charset
preset
:=
func
(
filePath
string
,
notExist
bool
)
*
bytes
.
Buffer
{
source
,
err
:=
zip
.
OpenReader
(
filepath
.
Join
(
"test"
,
"Book1.xlsx"
))
assert
.
NoError
(
t
,
err
)
buf
:=
new
(
bytes
.
Buffer
)
zw
:=
zip
.
NewWriter
(
buf
)
for
_
,
item
:=
range
source
.
File
{
// The following statements can be simplified as zw.Copy(item) in go1.17
if
notExist
&&
item
.
Name
==
filePath
{
continue
}
writer
,
err
:=
zw
.
Create
(
item
.
Name
)
assert
.
NoError
(
t
,
err
)
readerCloser
,
err
:=
item
.
Open
()
...
...
@@ -243,21 +247,33 @@ func TestOpenReader(t *testing.T) {
_
,
err
=
io
.
Copy
(
writer
,
readerCloser
)
assert
.
NoError
(
t
,
err
)
}
fi
,
err
:=
zw
.
Create
(
filePath
)
assert
.
NoError
(
t
,
err
)
_
,
err
=
fi
.
Write
(
MacintoshCyrillicCharset
)
assert
.
NoError
(
t
,
err
)
if
!
notExist
{
fi
,
err
:=
zw
.
Create
(
filePath
)
assert
.
NoError
(
t
,
err
)
_
,
err
=
fi
.
Write
(
MacintoshCyrillicCharset
)
assert
.
NoError
(
t
,
err
)
}
assert
.
NoError
(
t
,
zw
.
Close
())
return
buf
}
// Test open workbook with unsupported charset internal XML parts
for
_
,
defaultXMLPath
:=
range
[]
string
{
defaultXMLPathCalcChain
,
defaultXMLPathStyles
,
defaultXMLPathWorkbookRels
,
}
{
_
,
err
=
OpenReader
(
preset
(
defaultXMLPath
))
_
,
err
=
OpenReader
(
preset
(
defaultXMLPath
,
false
))
assert
.
EqualError
(
t
,
err
,
"XML syntax error on line 1: invalid UTF-8"
)
}
// Test open workbook without internal XML parts
for
_
,
defaultXMLPath
:=
range
[]
string
{
defaultXMLPathCalcChain
,
defaultXMLPathStyles
,
defaultXMLPathWorkbookRels
,
}
{
_
,
err
=
OpenReader
(
preset
(
defaultXMLPath
,
true
))
assert
.
NoError
(
t
,
err
)
}
// Test open spreadsheet with unzip size limit
_
,
err
=
OpenFile
(
filepath
.
Join
(
"test"
,
"Book1.xlsx"
),
Options
{
UnzipSizeLimit
:
100
})
...
...
sheet.go
浏览文件 @
00c58a73
...
...
@@ -464,6 +464,9 @@ func (f *File) getSheetMap() (map[string]string, error) {
if
err
!=
nil
{
return
nil
,
err
}
if
rels
==
nil
{
return
maps
,
nil
}
for
_
,
v
:=
range
wb
.
Sheets
.
Sheet
{
for
_
,
rel
:=
range
rels
.
Relationships
{
if
rel
.
ID
==
v
.
ID
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录