首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Go-Excelize API源码阅读(二)——OpenFile()

Go-Excelize API源码阅读(二)——OpenFile()

作者头像
Regan Yue
发布2022-07-30 10:53:08
发布2022-07-30 10:53:08
44100
代码可运行
举报
文章被收录于专栏:ReganYue's BlogReganYue's Blog
运行总次数:0
代码可运行

Go-Excelize API源码阅读(二)——OpenFile()

开源摘星计划(WeOpen Star) 是由腾源会 2022 年推出的全新项目,旨在为开源人提供成长激励,为开源项目提供成长支持,助力开发者更好地了解开源,更快地跨越鸿沟,参与到开源的具体贡献与实践中。

不管你是开源萌新,还是希望更深度参与开源贡献的老兵,跟随“开源摘星计划”开启你的开源之旅,从一篇学习笔记、到一段代码的提交,不断挖掘自己的潜能,最终成长为开源社区的“闪亮之星”。

我们将同你一起,探索更多的可能性!

项目地址: WeOpen-Star:https://github.com/weopenprojects/WeOpen-Star

一、Go-Excelize简介

Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿。可应用于各类报表平台、云计算、边缘计算等系统。使用本类库要求使用的 Go 语言为 1.15 或更高版本。

二、OpenFile()

使用 OpenFile 可以打开已有 Excel 文档。OpenFile 接收表格文件的名称,并为其返回一个已填充的表格文件结构。例如,打开带有密码保护的电子表格文档:

代码语言:javascript
代码运行次数:0
运行
复制
f, err := excelize.OpenFile("Book1.xlsx", excelize.Options{Password: "password"})
if err != nil {
    return
}

最后需要使用 Close() 关闭已打开的工作簿。

来看一看OpenFile()的源码:

代码语言:javascript
代码运行次数:0
运行
复制
func OpenFile(filename string, opt ...Options) (*File, error) {
	file, err := os.Open(filepath.Clean(filename))
	if err != nil {
		return nil, err
	}
	f, err := OpenReader(file, opt...)
	if err != nil {
		closeErr := file.Close()
		if closeErr == nil {
			return f, err
		}
		return f, closeErr
	}
	f.Path = filename
	return f, file.Close()
}

filepath.Clean(filename)的作用如下: Clean返回最短的路径名称。它重复应用以下规则,直到不能再做进一步处理。

  1. 用一个Separator元素替换多个Separator元素。
  2. 消除每个 . 路径名称元素(当前目录)。
  3. 消除每个内部的...路径名称元素(父目录)。以及它前面的非...元素。
  4. 消除开始有根路径的.元素:也就是说,假设Separator元素是’/',在一个路径的开头用"/“代替”/."。

根据代码,规则1中的Separator元素如下:

代码语言:javascript
代码运行次数:0
运行
复制
const (
   PathSeparator     = '\\' // OS-specific path separator
   PathListSeparator = ';'  // OS-specific path list separator
)

os.Open的作用是打开指定路径的文件。

OpenReader(file, opt…)的作用是从io.Reader中读取数据流,并返回填充的电子表格文件。

然后将返回的电子表格文件 f 的Path成员赋值为filename。

三、结语 这里是老岳,这是Go语言相关源码的解读第二篇,我会不断努力,给大家带来更多类似的文章,恳请大家不吝赐教。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Go-Excelize API源码阅读(二)——OpenFile()
    • 一、Go-Excelize简介
    • 二、OpenFile()
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档