Excelize 2.0.0 Released
Tags: go, excel, xml, office
Published: 2019-04-23 11:32:47

---
title: Excelize 2.0.0 Released
published: true
description: Excelize is a library written in pure Go and providing a set of functions that allow you to write to and read from XLSX files. 
tags: Go,Excel,XML,Office
---

<p align="center"><img width="650" src="https://xuri.me/excelize/images/excelize.svg" alt="Excelize logo"></p>

[Excelize](https://github.com/xuri/excelize) is a library written in pure Go and providing a set of functions that allow you to write to and read from XLSX files. Support reads and writes XLSX file generated by Microsoft Excel™ 2007 and later. Support save file without losing original charts of XLSX. This library needs Go version 1.8 or later. The full API docs can be seen using go's built-in documentation tool, or online at [go.dev](https://pkg.go.dev/github.com/xuri/excelize) and [docs reference](https://xuri.me/excelize/).

We are pleased to announce the release of version 2.0.0. Featured are a handful of new areas of functionality and numerous bug fixes.

A summary of changes is available in the [Release Notes](https://github.com/xuri/excelize/releases/tag/v2.0.0). A full list of changes is available in the [change log](https://github.com/xuri/excelize/compare/v1.4.1...v2.0.0).

Release Notes
------------
The most notable changes in this release are:

#### API Changed

The following table lists the changes to the API for v2.0.0 compared to the v1.4.1:

|Function|Add `error` return|Row Number Change<sup>\*</sup>|Delete|New Addition|
|---|---|---|---|---|
|ToALphaString|&times;|&times;|&radic;|&times;|
|TitleToNumber|&times;|&times;|&radic;|&times;|
|SplitCellName|&times;|&times;|&times;|&radic;|
|JoinCellName|&times;|&times;|&times;|&radic;|
|ColumnNameToNumber|&times;|&times;|&times;|&radic;|
|ColumnNumberToName|&times;|&times;|&times;|&radic;|
|CellNameToCoordinates|&times;|&times;|&times;|&radic;|
|CoordinatesToCellName|&times;|&times;|&times;|&radic;|
|SetCellFloat|&times;|&times;|&times;|&radic;|
|SetCellStyle|&radic;|&times;|&times;|&times;|
|InsertCol|&radic;|&times;|&times;|&times;|
|RemoveCol|&radic;|&times;|&times;|&times;|
|RemoveRow|&radic;|&radic;|&times;|&times;|
|InsertRow|&radic;|&radic;|&times;|&times;|
|DuplicateRow|&radic;|&times;|&times;|&times;|
|DuplicateRowTo|&radic;|&times;|&times;|&times;|
|SetRowHeight|&radic;|&times;|&times;|&times;|
|GetRowHeight|&radic;|&times;|&times;|&times;|
|GetCellValue|&radic;|&times;|&times;|&times;|
|GetCellFormula|&radic;|&times;|&times;|&times;|
|GetCellHyperLink|&radic;|&times;|&times;|&times;|
|SetCellHyperLink|&radic;|&times;|&times;|&times;|
|SetCellInt|&radic;|&times;|&times;|&times;|
|SetCellBool|&radic;|&times;|&times;|&times;|
|SetCellStr|&radic;|&times;|&times;|&times;|
|SetCellDefault|&radic;|&times;|&times;|&times;|
|GetCellStyle|&radic;|&times;|&times;|&times;|
|SetCellValue|&radic;|&times;|&times;|&times;|
|MergeCell|&radic;|&times;|&times;|&times;|
|SetSheetRow|&radic;|&times;|&times;|&times;|
|SetRowVisible|&radic;|&radic;|&times;|&times;|
|GetRowVisible|&radic;|&radic;|&times;|&times;|
|SetRowOutlineLevel|&radic;|&radic;|&times;|&times;|
|GetRowOutlineLevel|&radic;|&radic;|&times;|&times;|
|GetRows|&radic;|&times;|&times;|&times;|
|Columns|&radic;|&times;|&times;|&times;|
|SearchSheet|&radic;|&times;|&times;|&times;|
|GetPicture|&radic;|&times;|&times;|&times;|
|GetColVisible|&radic;|&times;|&times;|&times;|
|SetColVisible|&radic;|&times;|&times;|&times;|
|GetColOutlineLevel|&radic;|&times;|&times;|&times;|
|SetColOutlineLevel|&radic;|&times;|&times;|&times;|
|SetColWidth|&radic;|&times;|&times;|&times;|
|GetColWidth|&radic;|&times;|&times;|&times;|
|GetMergeCells|&radic;|&times;|&times;|&times;|
|ProtectSheet|&radic;|&times;|&times;|&times;|
|UnprotectSheet|&radic;|&times;|&times;|&times;|
|UpdateLinkedValue|&radic;|&times;|&times;|&times;|
|SetSheetVisible|&radic;|&times;|&times;|&times;|
|adjustHelper|&radic;|&times;|&times;|&times;|
|adjustMergeCells|&radic;|&times;|&times;|&times;|
|adjustAutoFilter|&radic;|&times;|&times;|&times;|
|prepareCell|&radic;|&times;|&times;|&times;|
|setDefaultTimeStyle|&radic;|&times;|&times;|&times;|
|timeToExcelTime|&radic;|&times;|&times;|&times;|
|addDrawingChart|&radic;|&times;|&times;|&times;|
|addDrawingVML|&radic;|&times;|&times;|&times;|
|addDrawingPicture|&radic;|&times;|&times;|&times;|
|getTotalRowsCols|&radic;|&times;|&times;|&times;|
|checkRow|&radic;|&times;|&times;|&times;|
|addDrawingShape|&radic;|&times;|&times;|&times;|
|addTable|&radic;|&times;|&times;|&times;|
|workSheetReader|&radic;|&times;|&times;|&times;|
|copySheet|&radic;|&times;|&times;|&times;|

\* From version 2.0.0 all row manipulation methods uses Excel row numbering starting with `1` instead of zero-based numbering which take place in some methods in earlier versions, related issue #349.

#### Feature

* New function [`DuplicateRowTo()`](https://pkg.go.dev/github.com/xuri/excelize/v2@v2.0.0#File.WriteTo) has been added for duplicate row to specified row position
* The function [`SetPageLayout()`](https://pkg.go.dev/github.com/xuri/excelize/v2@v2.0.0#File.SetPageLayout) now support to set page orientation, related issue #318
* The function [`SetPageLayout()`](https://pkg.go.dev/github.com/xuri/excelize/v2@v2.0.0#File.SetPageLayout) now support to set page size

#### Bug Fixes

* Fix the issue that create a blank fill if no fill is specified in the style format
* Fix the issue that data validation list in the excel sheet disappears formula characters greater than `255`, related issue #339
* Fix the issue corrupted xlsx after deleting formula of cell, related issue #346
* Fix the issue that [`GetComment()`](https://pkg.go.dev/github.com/xuri/excelize/v2@v2.0.0#File.GetComment) returns incorrect mapping between worksheets and comments in some case, related issue #345
* Fix the issue #346, resolve the issue corrupted xlsx after deleting formula of cell
* Fix the issue #377, avoid empty column in GetRows result

#### Performance

* Performance optimization, faster for add comments, related issue #347, faster add images, charts and shapes, related issue #274
* Adding the same image should create a drawing referencing the
already stored copy of the image, related issue #359

![Excelize version 1.4.1 vs 2.0.0](https://user-images.githubusercontent.com/2809468/56576273-7e7f1d80-65fa-11e9-8b47-7b171c5e67e3.png)

#### Miscellaneous

* Typo fixed and godoc updated
* Tests made stronger again, go1.12 added to tests matrix