Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
此号慢热型
excelize
提交
2868bd3e
excelize
项目概览
此号慢热型
/
excelize
与 Fork 源项目一致
Fork自
xuri / excelize
通知
2
Star
0
Fork
0
代码
文件
提交
分支
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,发现更多精彩内容 >>
提交
2868bd3e
编写于
4月 26, 2017
作者:
xurime
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
- New function `HideSheet()` and `UnhideSheet()` added;
- go test updated
上级
266d2c36
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
63 addition
and
5 deletion
+63
-5
excelize_test.go
excelize_test.go
+14
-0
sheet.go
sheet.go
+49
-5
未找到文件。
excelize_test.go
浏览文件 @
2868bd3e
...
...
@@ -438,6 +438,20 @@ func TestGetPicture(t *testing.T) {
t
.
Log
(
file
,
len
(
raw
))
}
func
TestSheetVisibility
(
t
*
testing
.
T
)
{
xlsx
,
err
:=
OpenFile
(
"./test/Workbook_2.xlsx"
)
if
err
!=
nil
{
t
.
Log
(
err
)
}
xlsx
.
HideSheet
(
"Sheet2"
)
xlsx
.
HideSheet
(
"Sheet1"
)
xlsx
.
UnhideSheet
(
"Sheet1"
)
err
=
xlsx
.
Save
()
if
err
!=
nil
{
t
.
Log
(
err
)
}
}
func
TestCopySheet
(
t
*
testing
.
T
)
{
xlsx
,
err
:=
OpenFile
(
"./test/Workbook_2.xlsx"
)
if
err
!=
nil
{
...
...
sheet.go
浏览文件 @
2868bd3e
...
...
@@ -243,11 +243,8 @@ func (f *File) GetActiveSheetIndex() int {
// name in the formula or reference associated with the cell. So there may be
// problem formula error or reference missing.
func
(
f
*
File
)
SetSheetName
(
oldName
,
newName
string
)
{
r
:=
strings
.
NewReplacer
(
":"
,
""
,
"
\\
"
,
""
,
"/"
,
""
,
"?"
,
""
,
"*"
,
""
,
"["
,
""
,
"]"
,
""
)
newName
=
r
.
Replace
(
newName
)
if
len
(
newName
)
>
31
{
newName
=
newName
[
0
:
31
]
}
oldName
=
trimSheetName
(
oldName
)
newName
=
trimSheetName
(
newName
)
content
:=
f
.
workbookReader
()
for
k
,
v
:=
range
content
.
Sheets
.
Sheet
{
if
v
.
Name
==
oldName
{
...
...
@@ -438,3 +435,50 @@ func (f *File) copySheet(from, to int) {
f
.
XLSX
[
toRels
]
=
f
.
XLSX
[
fromRels
]
}
}
// HideSheet provides function to hide worksheet by given name. A workbook must
// contain at least one visible worksheet. If the given worksheet has been
// activated, this setting will be invalidated.
func
(
f
*
File
)
HideSheet
(
name
string
)
{
name
=
trimSheetName
(
name
)
content
:=
f
.
workbookReader
()
count
:=
0
for
_
,
v
:=
range
content
.
Sheets
.
Sheet
{
if
v
.
State
!=
"hidden"
{
count
++
}
}
for
k
,
v
:=
range
content
.
Sheets
.
Sheet
{
sheetIndex
:=
k
+
1
xlsx
:=
f
.
workSheetReader
(
"sheet"
+
strconv
.
Itoa
(
sheetIndex
))
tabSelected
:=
false
if
len
(
xlsx
.
SheetViews
.
SheetView
)
>
0
{
tabSelected
=
xlsx
.
SheetViews
.
SheetView
[
0
]
.
TabSelected
}
if
v
.
Name
==
name
&&
count
>
1
&&
!
tabSelected
{
content
.
Sheets
.
Sheet
[
k
]
.
State
=
"hidden"
}
}
}
// UnhideSheet provides function to unhide worksheet by given name.
func
(
f
*
File
)
UnhideSheet
(
name
string
)
{
name
=
trimSheetName
(
name
)
content
:=
f
.
workbookReader
()
for
k
,
v
:=
range
content
.
Sheets
.
Sheet
{
if
v
.
Name
==
name
{
content
.
Sheets
.
Sheet
[
k
]
.
State
=
""
}
}
}
// trimSheetName provides function to trim invaild characters by given worksheet
// name.
func
trimSheetName
(
name
string
)
string
{
r
:=
strings
.
NewReplacer
(
":"
,
""
,
"
\\
"
,
""
,
"/"
,
""
,
"?"
,
""
,
"*"
,
""
,
"["
,
""
,
"]"
,
""
)
name
=
r
.
Replace
(
name
)
if
len
(
name
)
>
31
{
name
=
name
[
0
:
31
]
}
return
name
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录