Go 言語スプレッドシートライブラリ：Excelize 2.5.0 がリリースされました

![Go 言語スプレッドシートライブラリ：Excelize 2.5.0 がリリースされました](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144042/37b9bc8f-77d5-70d4-3eaa-d34086abc3e7.png)

[Excelize](https://github.com/xuri/excelize) は、純粋な Go で記述されたライブラリで、XLSX / XLSM / XLTM ファイルの読み書きを可能にする一連の関数を提供します。Microsoft Excel&trade; 2007 以降で生成されたスプレッドシートドキュメントの読み取りと書き込みをサポートします。 高い互換性により複雑なコンポーネントをサポートし、大量のデータを含むワークシートからデータを生成または読み取るためのストリーミング API を提供します。

場合によっては、既存の Excel ドキュメントコンテンツの読み込み、新しい Excel ドキュメントの作成、既存のドキュメント（テンプレート）に基づく新しい Excel ドキュメントの生成、Excel ドキュメントへのイメージの挿入、チャートなどの Excel ドキュメントをプログラムで操作する必要があります。 テーブルなどの要素。プラットフォーム間でこれらの操作を実装する必要がある場合があります。Excelize はこれらのニーズを容易に満たすことができます。

#### オープンソース

**GitHub:** [github.com/xuri/excelize](https://github.com/xuri/excelize)

**Doc:** [xuri.me/excelize/ja](https://xuri.me/excelize/ja/)

* 発売日: 2022年1月3日
* GitHub Release: [https://github.com/xuri/excelize/releases/tag/v2.5.0](https://github.com/xuri/excelize/releases/tag/v2.5.0)

## リリースノート

このバージョンでの最も注目すべき変更点は次のとおりです:

### 互換性のヒント

* スプレッドシートと行のイテレータを閉じる必要があります。ユーザーは、行のイテレータを使用した後にストリームを閉じ、既存のスプレッドシートを開いた後にスプレッドシートを閉じる必要があります
* `File` の実装として `ReadZipReader` を変更し、指定されたオプションでスプレッドシートを抽出し、メモリ内での抽出またはファイルシステムへのタッチをサポートします
* 不要なエクスポートされた変数 `XMLHeader` を削除します。代わりに `encoding/xml` パッケージの `xml.Header` を使用できます
* 未使用のエクスポートされたエラー変数 `ErrToExcelTime` を削除します

### 新機能

* 新しいAPI：行のセットスタイルの `SetRowStyle` サポート, 関連する問題 #990
* 新しいAPI：セルのデータ型を取得するための `GetCellType`サポート, 関連する問題 #417 と #520
* 新しいAPI：ドキュメントアプリケーションのプロパティを設定および取得するための `SetAppProps` および `GetAppProps` のサポート, 関連する問題 #1095
* `GetCellValue`, `GetRows`, `GetCols`, `Rows` と `Cols` は、生の値で読み取りセルを指定することをサポートします, 関連する問題 #621
* 新しいサポート 95 の数式関数: ACCRINT, ACCRINTM, ADDRESS, AMORDEGRC, AMORLINC, AVEDEV, AVERAGEIF, CHIDIST, CONFIDENCE, CONFIDENCE.NORM, COUNTIF, COUNTIFS, COUPDAYBS, COUPDAYS, COUPDAYSNC, COUPNCD, COUPNUM, COUPPCD, DATEVALUE, DAY, DAYS, DELTA, DEVSQ, DISC, DURATION, ERF, ERF.PRECISE, ERFC, ERFC.PRECISE, GEOMEAN, GESTEP, IFNA, IFS, INDEX, INTRATE, ISFORMULA, ISLOGICAL, ISREF, ISOWEEKNUM, MATCH, MAXA, MAXIFS, MDURATION, MINIFS, MINUTE, MONTH, ODDFPRICE, PERCENTILE.EXC, PERCENTRANK.EXC, PERCENTRANK.INC, PERCENTRANK, PRICE, PRICEDISC, PRICEMAT, PV, QUARTILE.EXC, RANK, RANK.EQ, RATE, RECEIVED, RRI, SHEETS, SLN, STANDARDIZE, STDEV.P, STDEVP, SWITCH, SYD, TBILLEQ, TBILLPRICE, TBILLYIELD, TEXTJOIN, TIME, TRANSPOSE, TRIMMEAN, VALUE, VAR, VAR.S, VARA, VARPA, VDB, WEEKDAY, WEIBULL, WEIBULL.DIST, XIRR, XLOOKUP, XNPV, XOR, YEAR, YEARFRAC, YIELD, YIELDDISC, YIELDMAT, Z.TEST, ZTEST, 関連する問題 #1002
* 数式計算エンジンは、`IF` 数式のネストされた計算をサポートします, 関連する問題 #987
* 数式計算エンジンのサポートは、共有数式を取得します, 関連する問題 #844
* 数式計算エンジンはテキスト比較をサポートします, 関連する問題 #998
* サポートは、データ検証範囲で数式を指定します, 関連する問題 #1012
* 開くファイルオプションで指定された解凍サイズ制限をサポートし、zip 爆弾の脆弱性攻撃を回避します
* `SetCellFormula` は共有数式の設定をサポートするようになりました
* `UpdateLinkedValue` はマクロシートをスキップします, 関連する問題 #1014
* 内部関係 ID の計算が正しくないために、`AddPicture` が重複画像を作成する場合がある問題を修正, 関連する問題 #1017
* `AddShape` は、形状を追加するための線幅の設定をサポートします, 関連する問題 #262
* 新しいオプション `UnzipXMLSizeLimit` が追加され、ワークシートと共有文字列テーブルを解凍する際のメモリ制限をバイト単位で指定するためのサポート
* 新しいスタイルを作成するときに無効なカスタム数値形式を指定すると、エラーが返されます, 関連する問題 #1028
* ストリームライターで行スタイルの設定をサポートするようになりました
* ストリームライターは、時間タイプのセルの時間数値形式を作成します, 関連する問題 #1107
* ピボットテーブルのコンパクトとアウトラインの指定をサポートするようになりました, 関連する問題 #1029
* ストリームリーダーでの現在の行/列と合計行/列の取得をサポート, 関連する問題 #1054
* セル値を設定するときにタイムゾーンの場所をサポートするようになりました, 関連する問題 #1069
* 7つのエラーをエクスポートして、ユーザーがさまざまなタイプのエラーに対して異なる行動をとれるようにします

### 互換性を向上させる

* `r="0"` 属性を持つ行要素との互換性を改善します
* XML 制御文字を保持する
* スタイル設定と Apple Numbers との互換性を改善します, 関連する問題 #1059
* セットヘッダーフッターでマルチバイト言語をサポートする, 関連する問題 #1061
* セル値を設定するときに、水平タブ文字を保持します, 関連する問題 #1108

### 問題の修正

* データ検証の削除に失敗した問題を修正しました, 関連する問題 #979
* 修正セットデータ検証ドロップリストが失敗する場合がありました, 関連する問題 #986
* 数式計算エンジン `LOOKUP` が配列形式を正しく処理しない問題を修正, 関連する問題 #994
* 数式計算エンジン `LOOKUP` が完全に一致するものしか見つけられない問題を修正, 関連する問題 #997
* 誤って計算された数式のパーセンテージを修正, 関連する問題 #993
* 場合によっては、誤ったセル読み取りによって引き起こされるパニックを修正します
* 条件付きフォーマットの下部Nが機能しない問題を修正
* 時間解析の精度の問題を修正, 関連する問題 #1026 と #1030
* 組み込みの科学数値形式の修正に失敗しました, 関連する問題 #1027
* 場合によっては小さなフロート解析エラーを修正, 関連する問題 #1031
* ワークシートの削除が失敗する場合がある修正
* 組み込みの時刻番号形式の解析エラーを修正, 関連する問題 #1060
* `NewStyle` が誤ったスタイルIDを返す場合がある問題を修正
* 一部のコーナーケースでの行/列の挿入/削除後の結合セル範囲エラーを修正

### パフォーマンスの最適化

* マージセルの時間コストがスピードアップし、時間コストが 90％ 以上減少
* ストリーミング読み取りのパフォーマンスを向上させ、内部XMLが大きい場合に共有文字列テーブルをシステム一時ファイルに解凍し、メモリ使用量を約60％削減し, 関連する問題 #1096
* ワークシートリストの読み取り速度が向上
* 列スタイルをマージしてスプレッドシートのサイズを縮小する, 関連する問題 #1057

### その他

* Go Modules はモジュールの更新に依存しています
* 単体テストとドキュメントの更新
* 簡体字中国語、英語、フランス語、ロシア語、日本語、韓国語、アラビア語、ドイツ語、スペイン語を含む[多言語ドキュメントサイト](https://xuri.me/excelize)の更新