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


![Go 言語スプレッドシートライブラリ：Excelize 2.9.1 がリリースされました](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144042/0e035c7d-419f-4121-ad3f-235a9eede5f7.jpeg)

Excelize は、純粋な Go で記述されたライブラリで、XLAM / XLSM / XLSX / XLTM / XLTX ファイルの読み書きを可能にする一連の関数を提供します。Microsoft Excel™ 2007 以降で生成されたスプレッドシートドキュメントの読み取りと書き込みをサポートします。高い互換性により複雑なコンポーネントをサポートし、大量のデータを含むワークシートからデータを生成または読み取るためのストリーミング API を提供します。このライブラリには Go バージョン 1.23 以降が必要です。

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

約 7 か月の準備期間を経て、Excelize は v2.9.1 をリリースしました。このバージョンには、新機能、バグ修正、互換性向上など、50 以上のアップデートが含まれています。20 人以上の開発者がこのバージョンのコードに貢献しました。

#### オープンソース

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

**ドキュメントリファレンス:** [xuri.me/excelize/ja](https://xuri.me/excelize/ja/)

## リリースノート

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

### 互換性のヒント

* 依存パッケージ `golang.org/x/crypto` のアップグレードに伴い、Go 言語のバージョン要件が 1.23 以降に更新されました
* `DataValidationType`、`DataValidationErrorStyle`、`DataValidationOperator`、`PictureInsertType` のデータ型が `int` から `byte` に変更されました
* `SetCellInt` 関数は `int64` 型のパラメータを要求するようになり、問題 2068 が解決されました
* 画像、グラフ、図形、フォームコントロールなどの描画オブジェクトを追加する場合、オフセット設定は描画オブジェクトのサイズに影響しなくなりました, 関連する問題 2001

### 新機能

* `Chart` データ型に新しいフィールド `GapWidth` と `Overlap` を追加しました
* `ChartPlotArea` データ型に新しいフィールド `ShowDataTable` と `ShowDataTableKeys` を追加しました
* `ChartAxis` データ型に新しいフィールド `Alignment` を追加しました
* `ChartSeries` データ型に新しいフィールド `DataLabel` を追加しました
* `PageLayoutOptions` データ型に新しいフィールド `PageOrder` を追加しました
* 2 つの新しいエクスポート済みエラー変数 `ErrPageSetupAdjustTo` と `ErrStreamSetColStyle` を追加しました
* 2 つの新しいエクスポート済み列挙体 `HeaderFooterImagePositionType` と `IgnoredErrorsType` を追加しました
* 2 つの新しいエクスポート済みデータ型 `CalcPropsOptions` と `HeaderFooterImageOptions` を追加しました
* ワークブックの計算プロパティの設定と取得をサポートする 2 つの新しい関数 `SetCalcProps` と `GetCalcProps` を追加しました
* 日本の暦年、韓国のダンキ暦、中国民国の年の数値フォーマットの適用をサポートするため、新たに `CultureNameJaJP`、`CultureNameKoKR`、`CultureNameZhTW` の列挙値を追加しました, 関連する問題 1885
* ヘッダーおよびフッターにグラフィックを設定するための新しい関数 `AddHeaderFooterImage` を追加しました, 関連する問題 1395
* セル範囲内のエラーを無視する機能をサポートするための新しい関数 `AddIgnoredErrors` を追加しました, 関連する問題 2046
* ストリーミングライターで列のスタイルを設定するための新しい関数 `SetColStyle` を追加しました, 関連する問題 2075
* `AddChart` および `AddChartSheet` 関数は、チャート軸のテキストの向きと回転の設定をサポートするようになりました, 関連する問題 2025
* `AddChart` および `AddChartSheet` 関数は、棒グラフおよび縦棒グラフにおけるギャップ幅とオーバーラップの設定をサポートするようになりました, 関連する問題 2033
* `AddChart` および `AddChartSheet` 関数は、チャートシリーズのデータラベルの書式設定をサポートするようになりました, 関連する問題 2052
* `AddChart` および `AddChartSheet` 関数は、チャートのデータテーブルの設定をサポートします, 関連する問題 2117
* `AddFormControl` 関数はチェックボックスのセルリンクの設定をサポートします, 関連する問題 2113
* `SetPageLayout` 関数は、ページレイアウトのページ順序の設定をサポートします
* `DeletePicture` 関数は、セルにアンカーされた画像の削除をサポートします, 関連する問題 2059
* `SetPageLayout` 関数のオプション値が無効な場合、エラーが返されます
* 複数のワークシートにまたがるデータ検証の調整をサポートします, 関連する問題 2072
* ハッシュ記号とゼロのプレースホルダーを用いた数値フォーマットの適用をサポートします, 関連する問題 2058
* `?` 記号を用いた数値フォーマットの適用をサポートします
* 位置を「oneCell」として指定した場合に、1つのセルのアンカー描画オブジェクトを挿入する機能をサポート, 関連する問題 2002

### 問題の修正

* v2.9.0 の回帰バグにより、ストリーミングライターで生成されたワークブックを開くと破損してしまう問題を修正しました, 関連する問題 2015
* 冗長な none タイプのパターンフィルが生成される問題を修正しました, 関連する問題 2014
* 一部の場合に縦横の境界スタイルが欠落する問題を修正しました, 関連する問題 2048
* 一部の場合に条件付き書式の境界スタイルが欠落する問題を修正しました, 関連する問題 2061
* 一部の場合にピボットテーブルの取得時にパニックが発生する問題を修正しました, 関連する問題 1954 および 2051
* `GetStyle` 関数が `VertAlign` の書式を取得できない問題を修正しました
* 一部の場合に `CalcCellValue` 関数のサブ式が正しく計算されない問題を修正しました, 関連する問題 2083
* 画像参照の検出に起因し、一部のケースで誤った画像が削除される問題を修正しました
* ストリーミングライターで行を設定した際、デフォルトのセルスタイルが非ゼロの行スタイルで上書きされない問題を修正しました
* ストリーミングライターにより冗長な `cols` 要素が生成される問題を修正しました
* チャートタイトルのフォント設定時にパニックが発生する問題を修正, 関連する問題 2102
* 一部のケースで計算チェーンの削除時にパニックが発生する問題を修正
* 共有数式解析エラーによって発生する誤った数式計算結果を修正, 関連する問題 2056
* 内部の ZIP64 ファイルのサイズが 4GB を超えると生成される破損したワークブックを修正します
* シート名を変更した後に定義された名前でシート名エラーを修正, 関連する問題 2126

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

* `github.com/mohae/deepcopy` の代わりに、3 倍高速な deepcopy ライブラリ `github.com/tiendc/go-deepcopy` を使用します, 関連する問題 2029
* v2.9.0 でのパフォーマンスの回帰を修正し、空白セルのトリムセル値のメモリ割り当てを削減しました
* 数式に列全体と行全体の参照が含まれている場合の計算数式のパフォーマンスを向上
* 行イテレータの速度が約 20% 向上し、メモリ割り当てが約 10% 削減されました

### その他

* Go Modules はモジュールの更新に依存しています
* 単体テストとドキュメントの更新
* 多言語対応の[ドキュメント ウェブサイト](https://xuri.me/excelize)が更新されました: アラビア語、ドイツ語、英語、スペイン語、フランス語、イタリア語、日本語、韓国語、ポルトガル語、ロシア語、中国語 (簡体字)、中国語 (繁体字)
* [excelize-wasm](https://github.com/xuri/excelize-wasm) WebAssembly / JavaScript サポート向け NPM パッケージリリースアップデート
* [excelize](https://github.com/xuri/excelize-py) Python 向け PyPI パッケージリリースアップデート

### ありがとうございました

Excelize へのすべての貢献者に感謝します。以下は、このバージョンでコードに貢献した貢献者のリストです:

* wushiling50
* imirkin (Ilia Mirkin)
* Juneezee (Eng Zer Jun)
* Arpelicy
* zhuhaicity (ZhuHaiCheng)
* xxf0512 (xxf)
* gypsy1234
* mengpromax (MengZhongYuan)
* hly-717
* kurtinge (Kurt Inge Smådal)
* IvanHristov98 (Ivan Hristov)
* artur-chopikian (Artur Chopikian)
* romanshevelev (Roman Shevelev)
* LZCZ
* hm3248
* moisespsena (Moises P. Sena)
* paolobarbolini (Paolo Barbolini)
* timesince
* shcabin
* tgulacsi (Tamás Gulácsi)
* R3dByt3 (R3dByt3)
* Now-Shimmer