ホームページ > バックエンド開発 > Golang > Golang が Excel ドキュメントを生成する方法を詳しく説明した記事

Golang が Excel ドキュメントを生成する方法を詳しく説明した記事

藏色散人
リリース: 2023-03-23 17:02:15
転載
3454 人が閲覧しました

この記事では、Golang に関する関連知識を紹介します。主に Golang を使用して Excel ドキュメントを生成する方法を紹介します。興味のある友人は以下を参照してください。すべての人に役立つことを願っています。

Golang が Excel ドキュメントを生成する方法を詳しく説明した記事

データに基づいて Excel ドキュメントを生成することは、非常に一般的な要件です。この記事では、Go の Excelize ライブラリを使用して Excel ドキュメントを生成する方法を紹介します一部の特定のシナリオでのコード実装も同様です。

Excelize ライブラリについて

Excelize は、ISO/IEC 29500 国際規格 ECMA-376 に基づいた、Office Excel ドキュメントを操作するための Go 言語で書かれた基本ライブラリです。これを使用して、Microsoft Excel™ 2007 以降で作成されたスプレッドシート ドキュメントの読み取りと書き込みを行うことができます。 XLSX / XLSM / XLTM / データワークブックなどの複数のドキュメント形式をサポートします。さまざまなレポート プラットフォーム、クラウド コンピューティング、エッジ コンピューティング、その他のシステムに適用できます。このライブラリを使用するには、Go 言語バージョン 1.15 以降が必要です。

パフォーマンスの比較

次の図は、12800*50 プレーン テキスト行列を生成する場合のいくつかの主要なオープン ソース Excel ライブラリのパフォーマンスの比較を示しています (OS: macOS Mojave バージョン 10.14.4、CPU: 3.4) GHz Intel Core i5、RAM: 16 GB 2400 MHz DDR4、HDD: 1 TB)、Go、Python、Java、PHP、NodeJS を含む。

#インストール

最新バージョンは

v2.4.0:

go get github.com/360EntSecGroup-Skylar/excelize/v2
ログイン後にコピー
Excel ドキュメントの作成

次のケースでは、Excel ドキュメントを作成し、

NewSheet メソッドを使用して新しい Sheet2 ワークシートを作成しました。Sheet1 はデフォルトで作成されるワークシートです。次に、SetCellValue メソッドを使用して、Sheet2 ワークシートの A2 セルと Sheet1 の B2 を設定します。セルの値を設定し、SetActiveSheet メソッドを使用して Sheet2 ワークシートをデフォルトのワークシートとして設定し、最後に SaveAs を呼び出します。データを Excel ドキュメントに書き込む方法: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">package main import (     &quot;fmt&quot;     &quot;github.com/360EntSecGroup-Skylar/excelize/v2&quot; ) func main() {     f := excelize.NewFile()     // 创建一个工作表     index := f.NewSheet(&quot;Sheet2&quot;)     // 设置单元格的值     f.SetCellValue(&quot;Sheet2&quot;, &quot;A2&quot;, &quot;Hello world.&quot;)     f.SetCellValue(&quot;Sheet1&quot;, &quot;B2&quot;, 100)     // 设置工作簿的默认工作表     f.SetActiveSheet(index)     // 根据指定路径保存文件     if err := f.SaveAs(&quot;Book1.xlsx&quot;); err != nil {         fmt.Println(err)     } }</pre><div class="contentsignin">ログイン後にコピー</div></div>実際のシナリオの再現

ワークシートの作成

ワークシート名は大文字と小文字が区別されます:

index := f.NewSheet("Sheet2")
ログイン後にコピー

デフォルトで作成されたワークシートを削除します

デフォルトで作成された Excel ドキュメントには、

Sheet1

という名前のワークシートが含まれています。このデフォルトのワークシートは必要ない可能性があります。現時点では、このワークシートを削除できます。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">f.DeleteSheet(&quot;Sheet1&quot;)</pre><div class="contentsignin">ログイン後にコピー</div></div>セルを結合

Merge

Sheet1

ワークシート上の F1:I2 範囲内のセル: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">excel.MergeCell(&quot;Sheet1&quot;, &quot;F1&quot;, &quot;I2&quot;)</pre><div class="contentsignin">ログイン後にコピー</div></div>セル スタイル

セルの背景色の設定など、セルのスタイルの設定は頻繁に行われます。

Excelize

ライブラリには、セルのスタイルを設定する次の 2 つのメソッド (NewStyle と #) が用意されています。 ## SetCellStyle):

// 通过给定的样式格式 JSON 或结构体的指针创建样式并返回样式索引。
// 请注意,颜色需要使用 RGB 色域代码表示。
style, err := f.NewStyle(`{
    "border": [
    {
        "type": "left",
        "color": "0000FF",
        "style": 3
    },
    {
        "type": "top",
        "color": "00FF00",
        "style": 4
    },
    {
        "type": "bottom",
        "color": "FFFF00",
        "style": 5
    },
    {
        "type": "right",
        "color": "FF0000",
        "style": 6
    },
    {
        "type": "diagonalDown",
        "color": "A020F0",
        "style": 7
    },
    {
        "type": "diagonalUp",
        "color": "A020F0",
        "style": 8
    }]
}`)
if err != nil {
    fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "D7", "D7", style)
ログイン後にコピー
テキストの水平方向の中央揃え テキストの水平方向の中央揃えには、

Alignment

スタイル構造の使用が必要です:

type Alignment struct {
    Horizontal      string `json:"horizontal"`
    Indent          int    `json:"indent"`
    JustifyLastLine bool   `json:"justify_last_line"`
    ReadingOrder    uint64 `json:"reading_order"`
    RelativeIndent  int    `json:"relative_indent"`
    ShrinkToFit     bool   `json:"shrink_to_fit"`
    TextRotation    int    `json:"text_rotation"`
    Vertical        string `json:"vertical"`
    WrapText        bool   `json:"wrap_text"`
}
ログイン後にコピー
水平方向のセンタリングのみを設定する必要があります。 水平の値は

center です。

style, err := f.NewStyle(`{"alignment":{"horizontal":"center"}}`)
if err != nil {
    fmt.Println(err)
}
err = excel.SetCellStyle("Sheet1", "B1", "B1", style)
ログイン後にコピー
セルに単色の塗りつぶしを設定します。

セルを色で塗りつぶすために使用されます。 Fill

スタイル構造:

type Fill struct {
    Type    string   `json:"type"`
    Pattern int      `json:"pattern"`
    Color   []string `json:"color"`
    Shading int      `json:"shading"`
}
ログイン後にコピー
スタイル構造上記のスタイルを設定するコードから、

border## がわかります。 # は配列、

alignment

Style 構造によって決定される構造です: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">type Style struct {     Border        []Border    `json:&quot;border&quot;`     Fill          Fill        `json:&quot;fill&quot;`     Font          *Font       `json:&quot;font&quot;`     Alignment     *Alignment  `json:&quot;alignment&quot;`     Protection    *Protection `json:&quot;protection&quot;`     NumFmt        int         `json:&quot;number_format&quot;`     DecimalPlaces int         `json:&quot;decimal_places&quot;`     CustomNumFmt  *string     `json:&quot;custom_number_format&quot;`     Lang          string      `json:&quot;lang&quot;`     NegRed        bool        `json:&quot;negred&quot;` }</pre><div class="contentsignin">ログイン後にコピー</div></div> 関連する推奨事項: Go ビデオ チュートリアル

以上がGolang が Excel ドキュメントを生成する方法を詳しく説明した記事の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:juejin.im
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート