Go-Excelize API 源码阅读(四)——Save()
Go-Excelize API 源码阅读(四)——Save()
一、Go-Excelize 简介
Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿。可应用于各类报表平台、云计算、边缘计算等系统。使用本类库要求使用的 Go 语言为 1.15 或更高版本。
二、Save()
func (f *File) Save() error
使用 Save 保存对 Excel 文档的编辑。
Save 可以用于在源路径覆盖电子表格。第一个 if 判断,是判断要保存的路径是否为空,如果为空就返回 ErrSave。
该项目将错误放置在 errors.go 中。ErrSave 是保存文件时发生错误的错误消息。
接下来的 if 判断:
当文件结构体的 options 成员不为空时,保存文件需要考虑 options 的信息。如果为空就不需要考虑。
三、SaveAs(name string)
至于 SaveAs(name string),我们来看看:使用 SaveAs 保存 Excel 文档为指定文件。
第一个 if:
用来判断文件名长度是不是合法。
文件错误信息如下:
接下来是根据文件的扩展名确定内容类型:
这段的写法可以学习。。。至于其内容下图可见。。。
setContentTypePartProjectExtensions()将获取到的 contentType 赋给文档关系部分和主文档部分。然后打开文件写入 f 文件流。
os.O_WRONLY|os.O_TRUNC|os.O_CREATE, os.ModePerm
这个要介绍一下:
os.O_APPEND:当向文件中写入内容时,把新内容追加到现有内容的后边。os.O_CREATE:当给定路径上的文件不存在时,创建一个新文件。os.O_EXCL:需要与 os.O_CREATE 一同使用,表示在给定的路径上不能有已存在的文件。os.O_SYNC:在打开的文件之上实施同步 I/O。它会保证读写的内容总会与硬盘上的数据保持同步。os.O_TRUNC:如果文件已存在,并且是常规的文件,那么就先清空其中已经存在的任何内容。
os.O_WRONLY | os.O_CREATE | O_EXCL 【如果已经存在,则失败】os.O_WRONLY | os.O_CREATE 【如果已经存在,会覆盖写,不会清空原来的文件,而是从头直接覆盖写】os.O_WRONLY | os.O_CREATE | os.O_APPEND 【如果已经存在,则在尾部添加写】
版权声明: 本文为 InfoQ 作者【Regan Yue】的原创文章。
原文链接:【http://xie.infoq.cn/article/015125eb78dae379aaaddf028】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论