当前位置:网站首页>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)
边栏推荐
猜你喜欢
Wallys/QCA 9880/802.11ac Mini PCIe Wi-Fi Module, Dual Band, 2,4GHz / 5GHz advanced edition
What is test development and why is it so popular now?
基于AWS构建云上数仓第一步:云平台的基础概念
Sublime Text如何安装Package Control
艺术与科技的狂欢,云端XR支撑阿那亚2022砂之盒沉浸艺术季
VIT transformer详解
Cortex-A7 MPCore 架构
论文分享:「FED BN」使用LOCAL BATCH NORMALIZATION方法解决Non-iid问题
ARM Assembly Basics
The senior told me that the MySQL of the big factory is connected through SSH
随机推荐
进程的两种创建方式,join方法,进程间的数据隔离,队列,进程间的通信IPC机制,生产者消费者模型,守护进程,僵尸进程,孤儿进程,互斥锁
论文分享:「FED BN」使用LOCAL BATCH NORMALIZATION方法解决Non-iid问题
ARM 汇编基础
一些自动化测试01
redirect action
Ng DevUI 周下载量突破1000啦!
MySQL数据指令
华为发布「国产Copilot内核」PanGu-Coder,而且真的能用中文哦!
IMX6ULL—汇编LED灯
loadrunner script -- parameterization
Flink运行架构
虚拟补丁备忘单
ARM Assembly Basics
软件设计的七大原则
解决启动项目初始化报错required a bean of type ‘int‘ that could not be found.的问题
Simple prohibition of garbage collection in d
传统数据中台又贵又复杂?何不试一试永久免费的下一代数据中台
uniapp中使用网页录音并上传声音文件(发语音)——js-audio-recorder的使用【伸手党福利】
2022 全球 AI 模型周报
Detailed explanation of JVM memory model and structure (five model diagrams)