Excelize 发布 2.4.1 版本,新增并发安全支持

Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支持 XLSX / XLSM / XLTM 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿。可应用于各类报表平台、云计算、边缘计算等系统。入选 2020 Gopher China - Go 领域明星开源项目(GSP)、2018 年开源中国码云最有价值开源项目 GVP (Gitee Most Valuable Project),目前已成为 Go 语言最受欢迎的 Excel 文档基础库。

开源代码

GitHub: github.com/xuri/excelize

Gitee: gitee.com/xurime/excelize

中文文档: xuri.me/excelize/zh-hans

2021年8月2日,社区正式发布了 2.4.1 版本,该版本包含了多项新增功能、错误修复和兼容性提升优化。下面是有关该版本更新内容的摘要,完整的更改列表可查看 changelog

此版本中最显著的变化包括:

兼容性提示

Go Modules 包引用地址调整为 github.com/xuri/excelize/v2

新增功能

  • 新增流式设置工作表列宽度支持,相关 issue #625
  • 新增流式创建合并单元格支持,相关 issue #826
  • 公式计算引擎新增 2 项公式函数支持: BESSELK, BESSELY
  • 公式计算引擎支持自定义名称引用,相关 issue #856
  • 添加图表时支持设置不显示主要横纵坐标轴
  • 通过 AddPivotTable 创建数据透视表支持通过自定义名称动态引用数据源
  • 以下函数新增支持并发安全调用,相关 issue #861
    • AddPictureGetPicture 并发插入/获取图片
    • RowsCols 并发行/列迭代
    • SetSheetRow 并发按行赋值
    • SetCellStyle 并发设置单元格样式
    • NewStyle 并发创建样式
  • 导出 24 个内部异常消息

兼容性提升

  • 提升内部默认 XML 命名空间兼容性,修复部分情况下生成文档损坏的问题
  • 兼容带有非标准页面布局属性数据类型的电子表格文档,避免打开失败的问题
  • 增加内部共享字符表计数
  • 解除通过给定的时间设置单元格的值时,需要协调世界时 (UTC) 的限制,相关 issue #409
  • 增加对内部 XML 控制字符的兼容
  • 重命名导出字段 File.XLSXFile.Pkg
  • 修改 NewSheet, GetSheetIndex, DeleteSheet 对工作表名称大小写不敏感,相关 issue #873
  • 修复条件格式与数据透视表的兼容性问题,解决 issue #883
  • 改进与页面布局中无效的首页编号属性的兼容性
  • SetCellRichText 增加字符数上限检查并修复保留字符丢失问题

问题修复

  • 修复部分情况下 12/24 制小时时间格式解析异常的问题,解决 issue #823 和 issue #841
  • 修复部分情况下无法通过 GetComments 获取批注的问题,解决 issue #825
  • 修复设置和获取批注时支持多个批注作者,解决 issue #829 和 #830
  • 修复命名空间地址解析异常而产生重复命名空间,导致删除再创建同名工作表后的生成文档损坏问题,解决 issue #834
  • 修复当设置工作表分组默认属性 showOutlineSymbolssummaryBelowsummaryRightfalse 时,设置失效的问题
  • 修复部分情况下 GetRows 返回冗余工作表尾部空行的问题,解决 issue #842
  • 修复部分情况下获取获取单元格的值时,未返回带有公式的空单元格的问题,解决 issue #855
  • 修复部分情况下 IF 公式条件运算错误问题,解决 issue #858
  • 修复通过 GetRowHeight 获取行高度错误的问题
  • 修复部分情况下因范围解析异常导致获取和删除自定义名称错误的问题,解决 issue #879
  • 修复设置自定义名称时关联工作表索引错误的问题
  • 修复设置列样式时已有单元格样式未被更新的问题,解决 issue #467
  • 修复使用非法数据引用范围创建数据透视表时导致的潜在 panic 的问题
  • 修复部分情况下读取数字精度异常的问题,解决 issue #848 和 #852
  • 修复设置数据验证规则时,部分情况下因未进行 XML 字符转义处理导致生成文档损坏的问题,解决 issue #971
  • 修复设置数据验证规则长度校验不准确问题,解决 issue #972
  • 修复由时间解析异常导致的,部分情况下读取带有时间或日期数字格式单元格时 CPU 资源占用率过高问题,解决 issue #974
  • 修复部分情况下,当自定义数字格式为日期时,月份解析失败的问题

性能优化

  • 通过 Save 保存或 SaveAs 另存文档时的内占用降低约 19%

其他

  • 修复潜在的代码安全问题 CWE-190 和 CWE-681
  • Go Modules 依赖模块更新
  • 单元测试与文档更新
  • 持续集成服务改用 GitHub Action
  • 包含简体中文、英语、法语、俄语、日语、韩语、阿拉伯语、德语和西班牙语的多国语言文档网站更新
  • 欢迎加入 Slack 频道、Telegram 群组 或技术交流群

DingTalk Group ID: 30047129
QQ Group ID: 207895940

Go 语言编程 文章被收录于专栏

探究 Go 语言、关注互联网技术应用与实践

全部评论

相关推荐

一表renzha:你点进去没打招呼他也会有提示的,之前我点进美的,还没打招呼,他马上给我发了不太合适哦
点赞 评论 收藏
分享
避坑恶心到我了大家好,今天我想跟大家聊聊我在成都千子成智能科技有限公司(以下简称千子成)的求职经历,希望能给大家一些参考。千子成的母公司是“同创主悦”,主要经营各种产品,比如菜刀、POS机、电话卡等等。听起来是不是有点像地推销售公司?没错,就是那种类型的公司。我当时刚毕业,急需一份临时工作,所以在BOSS上看到了千子成的招聘信息。他们承诺无责底薪5000元,还包住宿,这吸引了我。面试的时候,HR也说了同样的话,感觉挺靠谱的。于是,我满怀期待地等待结果。结果出来后,我通过了面试,第二天就收到了试岗通知。试岗的内容就是地推销售,公司划定一个区域,然后你就得见人就问,问店铺、问路人,一直问到他们有意向为止。如果他们有兴趣,你就得摇同事帮忙推动,促进成交。说说一天的工作安排吧。工作时间是从早上8:30到晚上18:30。早上7点有人叫你起床,收拾后去公司,然后唱歌跳舞(销售公司都这样),7:55早课(类似宣誓),8:05同事间联系销售话术,8:15分享销售技巧,8:30经理训话。9:20左右从公司下市场,公交、地铁、自行车自费。到了市场大概10点左右,开始地推工作。中午吃饭时间大约是12:00,公司附近的路边盖饭面馆店自费AA,吃饭时间大约40分钟左右。吃完饭后继续地推工作,没有所谓的固定中午午休时间。下午6点下班后返回公司,不能直接下班,需要与同事交流话术,经理讲话洗脑。正常情况下9点下班。整个上班的一天中,早上到公司就是站着的,到晚上下班前都是站着。每天步数2万步以上。公司员工没有自己的工位,百来号人挤在一个20平方米的空间里听经理洗脑。白天就在市场上奔波,公司的投入成本几乎只有租金和工资,没有中央空调。早上2小时,晚上加班2小时,纯蒸桑拿。没有任何福利,节假日也没有3倍工资之类的。偶尔会有冲的酸梅汤和西瓜什么的。公司的晋升路径也很有意思:新人—组长—领队—主管—副经理—经理。要求是业绩和团队人数,类似传销模式,把人留下来。新人不能加微信、不能吐槽公司、不能有负面情绪、不能谈恋爱、不能说累。在公司没有任何坐的地方,不能依墙而坐。早上吃早饭在公司外面的安全通道,未到上班时间还会让你吃快些不能磨蹭。总之就是想榨干你。复试的时候,带你的师傅会给你营造一个钱多事少离家近的工作氛围,吹嘘工资有多高、还能吹自己毕业于好大学。然后让你早点来公司、无偿加班、抓住你可能不会走的心思进一步压榨你。总之,大家在找工作的时候一定要擦亮眼睛,避免踩坑!———来自网友
qq乃乃好喝到咩噗茶:不要做没有专业门槛的工作
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务