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

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

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

オープンソース

GitHub: github.com/xuri/excelize

Doc: xuri.me/excelize/ja

リリースノート

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

互換性のヒント

  • アップグレード要件 Go 言語バージョンは 1.16 以降、非推奨パッケージ ioutil の移行用
  • 無効な文字をトリムする代わりに、無効なシート名をチェックしてエラーを返す
  • GetCellStyle 関数は、結合セル範囲のマスター セル スタイルを返さなくなりました
  • エクスポートされた 5 つのデータ型とエラー定数の名前を変更します:
    • PivotTableOption の名前を PivotTableOptions に変更します
    • FormatHeaderFooter の名前を HeaderFooterOptions に変更します
    • FormatSheetProtection の名前を SheetProtectionOptions に変更します
    • SparklineOption の名前を SparklineOptions に変更します
    • ErrExistsWorksheet の名前を ErrExistsSheet に変更します
  • エクスポートされた 54 種類のタイプを削除する: AutoPageBreaks, BaseColWidth, BlackAndWhite, CodeName, CustomHeight, Date1904, DefaultColWidth, DefaultGridColor, DefaultRowHeight, EnableFormatConditionsCalculation, FilterPrivacy, FirstPageNumber, FitToHeight, FitToPage, FitToWidth, OutlineSummaryBelow, PageLayoutOption, PageLayoutOptionPtr, PageLayoutOrientation, PageLayoutPaperSize, PageLayoutScale, PageMarginBottom, PageMarginFooter, PageMarginHeader, PageMarginLeft, PageMarginRight, PageMarginsOptions, PageMarginsOptionsPtr, PageMarginTop, Published, RightToLeft, SheetFormatPrOptions, SheetFormatPrOptionsPtr, SheetPrOption, SheetPrOptionPtr, SheetViewOption, SheetViewOptionPtr, ShowFormulas, ShowGridLines, ShowRowColHeaders, ShowRuler, ShowZeros, TabColorIndexed, TabColorRGB, TabColorTheme, TabColorTint, ThickBottom, ThickTop, TopLeftCell, View, WorkbookPrOption, WorkbookPrOptionPtr, ZeroHeightZoomScale
  • エクスポートされた定数を 2 つ削除する: OrientationPortraitOrientationLandscape
  • 21 つの関数のシグネチャを変更する:
    • func (f *File) SetPageLayout(sheet string, opts ...PageLayoutOption) errorfunc (f *File) SetPageLayout(sheet string, opts *PageLayoutOptions) error に変更
    • func (f *File) GetPageLayout(sheet string, opts ...PageLayoutOptionPtr) errorfunc (f *File) GetPageLayout(sheet string) (PageLayoutOptions, error) に変更
    • func (f *File) SetPageMargins(sheet string, opts ...PageMarginsOptions) errorfunc (f *File) SetPageMargins(sheet string, opts *PageLayoutMarginsOptions) error に変更
    • func (f *File) GetPageMargins(sheet string, opts ...PageMarginsOptionsPtr) errorfunc (f *File) GetPageMargins(sheet string) (PageLayoutMarginsOptions, error) に変更
    • func (f *File) GetSheetIndex(sheet string) intfunc (f *File) GetSheetIndex(sheet string) (int, error) に変更
    • func (f *File) SetSheetName(source, target string)func (f *File) SetSheetName(source, target string) error に変更
    • func (f *File) GetSheetVisible(sheet string)func (f *File) GetSheetVisible(sheet string) (bool, error) に変更
    • func (f *File) DeleteSheet(sheet string)func (f *File) DeleteSheet(sheet string) error に変更
    • func (f *File) NewSheet(sheet string) intfunc (f *File) NewSheet(sheet string) (int, error) に変更
    • func (f *File) NewConditionalStyle(style string) (int, error)func (f *File) NewConditionalStyle(style *Style) (int, error) に変更
    • func (f *File) NewStyle(style interface{}) (int, error)func (f *File) NewStyle(style *Style) (int, error) に変更
    • func (f *File) AddChart(sheet, cell, opts string, combo ...string) errorfunc (f *File) AddChart(sheet, cell string, chart *ChartOptions, combo ...*ChartOptions) error に変更
    • func (f *File) AddChartSheet(sheet, opts string, combo ...string) errorfunc (f *File) AddChartSheet(sheet string, chart *ChartOptions, combo ...*ChartOptions) error に変更
    • func (f *File) AddShape(sheet, cell, opts string) errorfunc (f *File) AddShape(sheet, cell string, opts *Shape) error に変更
    • func (f *File) AddPicture(sheet, cell, picture, format string) errorfunc (f *File) AddPicture(sheet, cell, picture string, opts *GraphicOptions) error に変更
    • func (f *File) AddPictureFromBytes(sheet, cell, opts, name, extension string, file []byte) errorfunc (f *File) AddPictureFromBytes(sheet, cell, name, extension string, file []byte, opts *GraphicOptions) error に変更
    • func (f *File) AddTable(sheet, hCell, vCell, opts string) errorfunc (f *File) AddTable(sheet, rangeRef string, opts *TableOptions) error に変更
    • func (sw *StreamWriter) AddTable(hCell, vCell, opts string) errorfunc (sw *StreamWriter) AddTable(rangeRef string, opts *TableOptions) error に変更
    • func (f *File) AutoFilter(sheet, hCell, vCell, opts string) errorfunc (f *File) AutoFilter(sheet, rangeRef string, opts *AutoFilterOptions) error に変更
    • func (f *File) SetPanes(sheet, panes string) errorfunc (f *File) SetPanes(sheet string, panes *Panes) error に変更
    • func (f *File) SetConditionalFormat(sheet, reference, opts string) errorfunc (f *File) SetConditionalFormat(sheet, rangeRef string, opts []ConditionalFormatOptions) error に変更
  • 既存の関数の代わりに新しい関数を導入する:
    • SetSheetPrOptionsSetSheetFormatPr の代わりに SetSheetProps を使う
    • GetSheetPrOptionsGetSheetFormatPr の代わりに GetSheetProps を使う
    • SetSheetViewOptions の代わりに SetSheetView を使用する
    • GetSheetViewOptions の代わりに GetSheetView を使用する
    • SetWorkbookPrOptions の代わりに SetWorkbookProps を使用する
    • GetWorkbookPrOptions の代わりに GetWorkbookProps を使用する
    • 一度に複数の行を挿入できるようにするには、InsertRow の代わりに InsertRows を使用します
    • 一度に複数の列を挿入できるようにするには、InsertCol の代わりに InsertCols を使用します
  • CellTypeFormulaCellTypeInlineStringCellTypeSharedStringを追加し、CellType 列挙から CellTypeString を削除
  • AddComment 関数のパラメータが変更され、コメントでのリッチ テキストの作成がサポートされました, 関連する問題 #1204
  • 内部エラー ログ出力を削除します。XML デシリアライズ エラー時にエラーが返されます。GetCommentsGetDefaultFontSetDefaultFont 関数のエラー戻り値を追加します

新機能

  • 新しい関数 GetDataValidationsGetConditionalFormats を追加して、データ検証と条件付きフォーマットを取得する, 関連する問題 #827
  • ワークブックの保護をサポートするための新しい関数 ProtectWorkbook および UnprotectWorkbook を追加
  • セットワークシート列のセルに新しい関数 SetSheetCol を追加する, 関連する問題 #1247
  • セットされた列スタイルのための新しい関数 GetColStyle を追加する, 関連する問題 #1293
  • 画像データを指定して背景画像を設定する新関数 SetSheetBackgroundFromBytes を追加, 関連する問題 #1405
  • 新しいエクスポート変数 IndexedColorMapping を追加
  • 20 種類のエクスポートタイプを追加: AutoFilterListOptions, AutoFilterOptions, Chart, ChartAxis, ChartDimension, ChartLegend, ChartLine, ChartMarker, ChartPlotArea, ChartSeries, ChartTitle, ConditionalFormatOptions, PaneOptions, Panes, GraphicOptions, Shape, ShapeColor, ShapeLine, ShapeParagraphTableOptions
  • 新しいサポート 2 つの数式関数: AGGREGATE および SUBTOTAL
  • SaveWrite、および WriteTo 機能は、保存オプションを受け入れるようになりました, 関連する問題 #744
  • AddChart 関数のサポートでは、折れ線グラフの線が滑らかかどうかを指定します, 関連する問題 #1290
  • AddChart 関数のサポートは、チャート内のカスタム線の色を設定します, 関連する問題 #1345
  • AddChart 関数は、カスタムチャート軸フォントスタイルをサポートしています, 関連する問題 #320
  • AddChart 関数は 3D 折れ線グラフの作成をサポートします
  • 関数 SetColWidth, GetColWidth, SetColVisible, GetColVisible, SetColStyle および GetColStyle が同時実行セーフをサポートするようになりました
  • 存在しないスタイル ID を設定すると、エラーが返されます, 関連する問題 #1323
  • 潜在的な間違いを避けるために、昇順の行番号なしでストリーム行を設定するとエラーが返されます, 関連する問題 #1139
  • ストリームライターは、各セルの RowOpts でスタイルを適用します, 関連する問題 #1354
  • ペインを設定するためのストリームライターのサポート, 関連する問題 #1047
  • インラインリッチテキストセルを設定するストリームライターのサポート
  • 改ページを挿入するためのストリーム ライターのサポート
  • 新しい 7 つのエクスポートエラー: ErrUnprotectWorkbook, ErrUnprotectWorkbookPassword, ErrStreamSetPanesErrSheetNameBlankErrSheetNameInvalidErrSheetNameLengthErrSheetNameSingleQuote が追加されました
  • 5 つの新しいエクスポートデータ型の導入: HeaderFooterOptions, PageLayoutMarginsOptions, PageLayoutOptions, SheetPropsOptionsViewOptions
  • 概要列をアウトラインの詳細の右側に表示するように設定するためのサポート
  • テーマと色合いでフォントの色を設定および取得するためのサポート, 関連する問題 #1369
  • ISO 8601 形式の日付を含むセル値の取得をサポート
  • インデックス付きの色でフォントの色の設定と取得をサポート
  • 列の挿入または削除時に列スタイルの更新をサポート
  • ワークブックの Close 関数で、ストリーム ライターの一時ファイルのクリーンアップがサポートされるようになりました
  • AddPicture 関数で SVG 形式の画像を挿入できるようになりました

互換性を向上させる

  • ストリーム ライターは、文字列セル値のインライン文字列型を書き込みます, 関連する問題 #1377
  • スプレッドシートを保存するときに空の行をスキップしてファイル サイズを縮小する, 関連する問題 #1383

問題の修正

  • 組み込みの数値形式での 10 進数形式の丸めの問題を修正, 関連する問題 #1328, #1368#1373
  • 場合によっては、AM/PM 番号形式の適用に関する問題を修正, 関連する問題 #1338
  • 範囲外のスライス境界によって引き起こされたコメントを削除するときに panic を修正する, 関連する問題 #1343
  • 場合によってはセル値を取得するときにパニックになる問題を修正, 関連する問題 #1384#1415
  • 長い数字の文字列に関するデフォルトの数値書式解析の問題を修正する, 関連する問題 #1360
  • 空の名前でシートを作成するとファイルが破損する問題を修正しました, 関連する問題 #1361
  • イメージの挿入後にイメージの取得コンテンツが空だった問題を修正
  • 場合によっては、列/行を挿入した後にブックの破損を生成するのを修正します
  • 数式セルを書き込むときに計算チェーンの共有数式を削除し、場合によっては生成されたワークブックの破損を修正します
  • シート名を正規化して、2.6.0 と 2.6.1 の間の動作の回帰を修正します, 関連する問題 #1365
  • OR 関数の数式計算結果の問題を修正
  • 1 つのセルが結合されたセル範囲を含むワークシートに列または行を挿入する際のエラーを修正します。
  • 1 つのセルが結合されたセル範囲を含むワークシートで、結合されたセルの範囲を取得する際のエラーを修正します
  • 不完全なリッチ テキスト セル値を取得する場合がある問題を修正
  • 破損したファイルで回避するストリーム ライターの XML 文字のエスケープ, 関連する問題 #1391
  • ワークシート名が空の場合の数式関数 ADDRESS 結果エラーを修正, 関連する問題 #1396
  • 場合によっては画像挿入の問題を修正, 関連する問題 #1404

パフォーマンスの最適化

  • ストリームライターがセルをマージするパフォーマンスを向上させ、時間コストを 90% 以上削減し、メモリ使用量を最大で約 86% 削減
  • ストリームライター SetRow 機能のパフォーマンスを向上させ、メモリ使用量を約 19% 削減し、高速化

その他

  • Go Modules はモジュールの更新に依存しています
  • 単体テストとドキュメントの更新
  • 変数と関数での特殊名の使用
  • 簡体字中国語、英語、フランス語、ロシア語、日本語、韓国語、アラビア語、ドイツ語、スペイン語を含む多言語ドキュメントサイトの更新

ありがとうございました

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

  • @cdenicola (Cooper de Nicola)
  • @chenliu1993
  • @davidborry
  • @patsak (Kostya Privezentsev)
  • @dafengge0913
  • @Beeb0p (Artem Tarasenko)
  • @invzhi
  • @zhangzitao (Zitao)
  • @jtwatson (Joseph Watson)
  • @carbin-gun (charles.deng)
  • @harrison3000 (Harrison)
  • @strivek (GaoFei)
  • @gonghaibinx
  • @martinmr (Martin Martinez Rivera)
  • @zclark (Zach Clark)
  • @March0715 (March)
  • @renxiaotu
  • @devloppper
  • @jianxinhou
  • @nesstord
  • @Bayzet (Bayzet Tlyupov)
  • @guoweikuang (郭伟匡)
  • @qinyuguang (Gin)
  • @liron-l (Liron Levin)