この記事では、Golang に関する関連知識を紹介します。主に Golang を使用して Excel ドキュメントを生成する方法を紹介します。興味のある友人は以下を参照してください。すべての人に役立つことを願っています。
データに基づいて Excel ドキュメントを生成することは、非常に一般的な要件です。この記事では、Go の Excelize ライブラリを使用して Excel ドキュメントを生成する方法を紹介します一部の特定のシナリオでのコード実装も同様です。
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
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 (
"fmt"
"github.com/360EntSecGroup-Skylar/excelize/v2"
)
func main() {
f := excelize.NewFile()
// 创建一个工作表
index := f.NewSheet("Sheet2")
// 设置单元格的值
f.SetCellValue("Sheet2", "A2", "Hello world.")
f.SetCellValue("Sheet1", "B2", 100)
// 设置工作簿的默认工作表
f.SetActiveSheet(index)
// 根据指定路径保存文件
if err := f.SaveAs("Book1.xlsx"); err != nil {
fmt.Println(err)
}
}</pre><div class="contentsignin">ログイン後にコピー</div></div>
実際のシナリオの再現
index := f.NewSheet("Sheet2")
デフォルトで作成されたワークシートを削除します
という名前のワークシートが含まれています。このデフォルトのワークシートは必要ない可能性があります。現時点では、このワークシートを削除できます。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">f.DeleteSheet("Sheet1")</pre><div class="contentsignin">ログイン後にコピー</div></div>
セルを結合
ワークシート上の F1:I2
範囲内のセル: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">excel.MergeCell("Sheet1", "F1", "I2")</pre><div class="contentsignin">ログイン後にコピー</div></div>
セル スタイル
ライブラリには、セルのスタイルを設定する次の 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)
テキストの水平方向の中央揃え
テキストの水平方向の中央揃えには、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)
セルに単色の塗りつぶしを設定します。
type Fill struct { Type string `json:"type"` Pattern int `json:"pattern"` Color []string `json:"color"` Shading int `json:"shading"` }
スタイル構造
上記のスタイルを設定するコードから、 は Style
構造によって決定される構造です: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">type Style struct {
Border []Border `json:"border"`
Fill Fill `json:"fill"`
Font *Font `json:"font"`
Alignment *Alignment `json:"alignment"`
Protection *Protection `json:"protection"`
NumFmt int `json:"number_format"`
DecimalPlaces int `json:"decimal_places"`
CustomNumFmt *string `json:"custom_number_format"`
Lang string `json:"lang"`
NegRed bool `json:"negred"`
}</pre><div class="contentsignin">ログイン後にコピー</div></div> 関連する推奨事項:
Go ビデオ チュートリアル
以上がGolang が Excel ドキュメントを生成する方法を詳しく説明した記事の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。