Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xuri
excelize
提交
9f862304
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 搜索 >>
已验证
提交
9f862304
编写于
6月 20, 2019
作者:
xurime
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Optimize code, fix golint issues
上级
e77c462d
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
22 addition
and
19 deletion
+22
-19
adjust_test.go
adjust_test.go
+4
-4
picture.go
picture.go
+16
-13
rows.go
rows.go
+2
-2
未找到文件。
adjust_test.go
浏览文件 @
9f862304
...
...
@@ -104,13 +104,13 @@ func TestAdjustCalcChain(t *testing.T) {
func
TestCoordinatesToAreaRef
(
t
*
testing
.
T
)
{
f
:=
NewFile
()
ref
,
err
:=
f
.
coordinatesToAreaRef
([]
int
{})
_
,
err
:=
f
.
coordinatesToAreaRef
([]
int
{})
assert
.
EqualError
(
t
,
err
,
"coordinates length must be 4"
)
ref
,
err
=
f
.
coordinatesToAreaRef
([]
int
{
1
,
-
1
,
1
,
1
})
_
,
err
=
f
.
coordinatesToAreaRef
([]
int
{
1
,
-
1
,
1
,
1
})
assert
.
EqualError
(
t
,
err
,
"invalid cell coordinates [1, -1]"
)
ref
,
err
=
f
.
coordinatesToAreaRef
([]
int
{
1
,
1
,
1
,
-
1
})
_
,
err
=
f
.
coordinatesToAreaRef
([]
int
{
1
,
1
,
1
,
-
1
})
assert
.
EqualError
(
t
,
err
,
"invalid cell coordinates [1, -1]"
)
ref
,
err
=
f
.
coordinatesToAreaRef
([]
int
{
1
,
1
,
1
,
1
})
ref
,
err
:
=
f
.
coordinatesToAreaRef
([]
int
{
1
,
1
,
1
,
1
})
assert
.
NoError
(
t
,
err
)
assert
.
EqualValues
(
t
,
ref
,
"A1:A1"
)
}
picture.go
浏览文件 @
9f862304
...
...
@@ -499,26 +499,33 @@ func (f *File) getSheetRelationshipsTargetByID(sheet, rID string) string {
func
(
f
*
File
)
GetPicture
(
sheet
,
cell
string
)
(
string
,
[]
byte
,
error
)
{
col
,
row
,
err
:=
CellNameToCoordinates
(
cell
)
if
err
!=
nil
{
return
""
,
[]
byte
{}
,
err
return
""
,
nil
,
err
}
col
--
row
--
xlsx
,
err
:=
f
.
workSheetReader
(
sheet
)
if
err
!=
nil
{
return
""
,
[]
byte
{}
,
err
return
""
,
nil
,
err
}
if
xlsx
.
Drawing
==
nil
{
return
""
,
[]
byte
{}
,
err
return
""
,
nil
,
err
}
target
:=
f
.
getSheetRelationshipsTargetByID
(
sheet
,
xlsx
.
Drawing
.
RID
)
drawingXML
:=
strings
.
Replace
(
target
,
".."
,
"xl"
,
-
1
)
_
,
ok
:=
f
.
XLSX
[
drawingXML
]
if
!
ok
{
return
""
,
nil
,
err
}
drawingRelationships
:=
strings
.
Replace
(
strings
.
Replace
(
target
,
"../drawings"
,
"xl/drawings/_rels"
,
-
1
),
".xml"
,
".xml.rels"
,
-
1
)
wsDr
,
_
:=
f
.
drawingParser
(
drawingXML
)
return
f
.
getPicture
(
row
,
col
,
drawingXML
,
drawingRelationships
)
}
// getPicture provides a function to get picture base name and raw content
// embed in XLSX by given coordinates and drawing relationships.
func
(
f
*
File
)
getPicture
(
row
,
col
int
,
drawingXML
,
drawingRelationships
string
)
(
string
,
[]
byte
,
error
)
{
wsDr
,
_
:=
f
.
drawingParser
(
drawingXML
)
for
_
,
anchor
:=
range
wsDr
.
TwoCellAnchor
{
if
anchor
.
From
!=
nil
&&
anchor
.
Pic
!=
nil
{
if
anchor
.
From
.
Col
==
col
&&
anchor
.
From
.
Row
==
row
{
...
...
@@ -528,16 +535,12 @@ func (f *File) GetPicture(sheet, cell string) (string, []byte, error) {
if
ok
{
return
filepath
.
Base
(
xlsxWorkbookRelation
.
Target
),
[]
byte
(
f
.
XLSX
[
strings
.
Replace
(
xlsxWorkbookRelation
.
Target
,
".."
,
"xl"
,
-
1
)]),
err
".."
,
"xl"
,
-
1
)]),
nil
}
}
}
}
_
,
ok
:=
f
.
XLSX
[
drawingXML
]
if
!
ok
{
return
""
,
nil
,
err
}
decodeWsDr
:=
decodeWsDr
{}
_
=
xml
.
Unmarshal
(
namespaceStrictToTransitional
(
f
.
readXML
(
drawingXML
)),
&
decodeWsDr
)
for
_
,
anchor
:=
range
decodeWsDr
.
TwoCellAnchor
{
...
...
@@ -548,12 +551,12 @@ func (f *File) GetPicture(sheet, cell string) (string, []byte, error) {
xlsxWorkbookRelation
:=
f
.
getDrawingRelationships
(
drawingRelationships
,
decodeTwoCellAnchor
.
Pic
.
BlipFill
.
Blip
.
Embed
)
_
,
ok
:=
supportImageTypes
[
filepath
.
Ext
(
xlsxWorkbookRelation
.
Target
)]
if
ok
{
return
filepath
.
Base
(
xlsxWorkbookRelation
.
Target
),
[]
byte
(
f
.
XLSX
[
strings
.
Replace
(
xlsxWorkbookRelation
.
Target
,
".."
,
"xl"
,
-
1
)]),
err
return
filepath
.
Base
(
xlsxWorkbookRelation
.
Target
),
[]
byte
(
f
.
XLSX
[
strings
.
Replace
(
xlsxWorkbookRelation
.
Target
,
".."
,
"xl"
,
-
1
)]),
nil
}
}
}
}
return
""
,
[]
byte
{},
err
return
""
,
nil
,
nil
}
// getDrawingRelationships provides a function to get drawing relationships
...
...
rows.go
浏览文件 @
9f862304
...
...
@@ -21,7 +21,7 @@ import (
// GetRows return all the rows in a sheet by given worksheet name (case
// sensitive). For example:
//
//
rows, err := f.GetRows("Sheet1")
//
rows, err := f.GetRows("Sheet1")
// for _, row := range rows {
// for _, colCell := range row {
// fmt.Print(colCell, "\t")
...
...
@@ -160,7 +160,7 @@ func (err ErrSheetNotExist) Error() string {
//
// rows, err := f.Rows("Sheet1")
// for rows.Next() {
//
row, err := rows.Columns()
//
row, err := rows.Columns()
// for _, colCell := range row {
// fmt.Print(colCell, "\t")
// }
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录