当前位置:网站首页>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)
边栏推荐
猜你喜欢

论文分享:「FED BN」使用LOCAL BATCH NORMALIZATION方法解决Non-iid问题

混动产品助力,自主SUV市场格局迎来新篇章

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

IMX6ULL—Assembly LED Lights

numpy中nan_to_num如何使用

JVM:(八)运行时数据区之方法区

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

十七、一起学习Lua 错误处理

Li Yuanyuan: iMetaLab Suite metaproteomics data analysis and visualization (video + PPT)

jmeter - record script
随机推荐
win10 uwp 自定义控件 SplitViewItem
YOLO v3源码详解
【工业数字化大讲堂 第二十期】制造业数字化能力建设分享,特邀制造业高级咨询顾问 李东老师分享
线性代数学习笔记
动态RDLC报表(七)
Cortex-A7 MPCore Architecture
单片机编程-状态机
动态RDLC报表(二)
商业智能BI行业分析思维框架:铅酸蓄电池行业(一)
Volatile: JVM I warn you, my people don't move
Experience far more than Hue, this is the favorite SQL tool for technicians
win10 uwp 手动锁Bitlocker
The senior told me that the MySQL of the big factory is connected through SSH
混动产品助力,自主SUV市场格局迎来新篇章
Ros简介
第三方bean使用ConfigurationProperties注解获取yml配置文件数据 & 获取yml配置文件数据的校验
ref的使用
字节二面:可重复读隔离级别下,这个场景会发生什么?
释放数据价值的真正法宝,数据要素市场化开发迫在眉睫
d中简单禁止垃集