当前位置:网站首页>Go-Excelize API源码阅读(五)—— Close()
Go-Excelize API源码阅读(五)—— Close()
2022-08-09 17:42:00 【InfoQ】
Go-Excelize API源码阅读(五)—— Close()
一、Go-Excelize简介
二、Close()
func (f *File) Close() error
func (f *File) Close() error {
var err error
if f.sharedStringTemp != nil {
if err := f.sharedStringTemp.Close(); err != nil {
return err
}
}
f.tempFiles.Range(func(k, v interface{}) bool {
if err = os.Remove(v.(string)); err != nil {
return false
}
return true
})
return err
}
os.Remove(v.(string))三、NewSheet()
func (f *File) NewSheet(sheet string) int
func (f *File) NewSheet(name string) int {
// Check if the worksheet already exists
index := f.GetSheetIndex(name)
if index != -1 {
return index
}
f.DeleteSheet(name)
f.SheetCount++
wb := f.workbookReader()
sheetID := 0
for _, v := range wb.Sheets.Sheet {
if v.SheetID > sheetID {
sheetID = v.SheetID
}
}
sheetID++
// Update docProps/app.xml
f.setAppXML()
// Update [Content_Types].xml
f.setContentTypes("/xl/worksheets/sheet"+strconv.Itoa(sheetID)+".xml", ContentTypeSpreadSheetMLWorksheet)
// Create new sheet /xl/worksheets/sheet%d.xml
f.setSheet(sheetID, name)
// Update workbook.xml.rels
rID := f.addRels(f.getWorkbookRelsPath(), SourceRelationshipWorkSheet, fmt.Sprintf("/xl/worksheets/sheet%d.xml", sheetID), "")
// Update workbook.xml
f.setWorkbook(name, sheetID, rID)
return f.GetSheetIndex(name)
}
func (f *File) GetSheetIndex(name string) int {
for index, sheet := range f.GetSheetList() {
if strings.EqualFold(sheet, trimSheetName(name)) {
return index
}
}
return -1
}
wb := f.workbookReader()for _, v := range wb.Sheets.Sheet {
if v.SheetID > sheetID {
sheetID = v.SheetID
}
}
// Update docProps/app.xml
f.setAppXML()
// Update [Content_Types].xml
f.setContentTypes("/xl/worksheets/sheet"+strconv.Itoa(sheetID)+".xml", ContentTypeSpreadSheetMLWorksheet)
// Create new sheet /xl/worksheets/sheet%d.xml
f.setSheet(sheetID, name)
// Update workbook.xml.rels
rID := f.addRels(f.getWorkbookRelsPath(), SourceRelationshipWorkSheet, fmt.Sprintf("/xl/worksheets/sheet%d.xml", sheetID), "")
// Update workbook.xml
f.setWorkbook(name, sheetID, rID)
边栏推荐
猜你喜欢

Ng DevUI 周下载量突破1000啦!

ASP.NET Core依赖注入之旅:针对服务注册的验证

How tall is the B+ tree of the MySQL index?

The senior told me that the MySQL of the big factory is connected through SSH

JSDN blog system

对数学直观、感性的认知是理解数学、喜爱数学的必经之路,这本书做到了!

numpy中nan_to_num如何使用

释放数据价值的真正法宝,数据要素市场化开发迫在眉睫

阿里云张新涛:支持沉浸式体验应用快速落地,阿里云云XR平台发布

动态RDLC报表(七)
随机推荐
传统数据中台又贵又复杂?何不试一试永久免费的下一代数据中台
uniapp中使用网页录音并上传声音文件(发语音)——js-audio-recorder的使用【伸手党福利】
没有 accept,TCP 连接可以建立成功吗?
numpy中nan_to_num如何使用
MySQL备份与恢复
16 张图解 | 淘宝 10年架构演进
华为发布「国产Copilot内核」PanGu-Coder,而且真的能用中文哦!
安装搭建私有仓库 Harbor
2022秋招面试宝典,啃完面试稳了
win10 uwp 无法附加到CoreCLR
秋招面试大厂总被刷下来,你这样做保准你事半功倍!
C的一些琐碎
不是吧,连公司里的卷王写代码都复制粘贴,这合理?
5.3.6 原子操作对非原子的操作排序
进行知识管理的好处有哪些?
一些自动化测试01
软件设计的七大原则
win10 uwp 绑定静态属性
解决启动项目初始化报错required a bean of type ‘int‘ that could not be found.的问题
Ng DevUI 周下载量突破1000啦!