Excel XLSXファイルを作成するためのオープンソースGoライブラリ
オープン ソースの Go API を介して、Microsoft Excel XLSX ドキュメントの読み取り、書き込み、編集を行います。スプレッドシート内に複数のグラフ、画像、表を追加します。
Unioffice は、ソフトウェア開発者が独自の Go アプリケーション内で Office Excel XLSX ドキュメントを生成、変更、および操作できるようにする、オープン ソースの純粋な Go ライブラリです。このライブラリは非常に安定しており、最小限の労力とコストで最高の生産性を提供します。
オープン ソースの unioffice ライブラリは、Excel スプレッドシートの作成と変更に関連するいくつかの重要な機能を完全にサポートしています。たとえば、新しい Excel シートを最初から作成する、さまざまな数値/日付/時刻形式のセルを作成する、Excel セルの書式設定、セル検証のサポート、セル値の取得などです。 Excel による書式設定、条件付き書式設定、セルの結合と結合解除、コンボ ボックスのドロップダウンを含むデータ検証、埋め込み画像など。
ユニオフィスを始めよう
Office をプロジェクトに統合するための推奨される方法は、Github を使用することです。スムーズなインストールのために、次のコマンドを使用してください。
GitHub 経由で unioffice をインストールする
go get github.com/unidoc/unioffice/
go build -i github.com/unidoc/unioffice/...
Go API による Excel XLSX の作成
オープン ソース ライブラリ unioffice を使用すると、コンピューター プログラマーは独自の Go アプリケーション内で Excel XLSX スプレッドシートを作成できます。既存の Excel ドキュメントに新しいシートを追加し、シートに名前を付けて、選択したパスにファイルを保存する機能を提供します。また、シートへの新しい行と列の追加、行と列の数の定義、セルのデフォルト値の設定など、いくつかの重要な機能のサポートも提供します。また、既存のスプレッドシートを簡単に開いて変更することもできます。
Go Libraryで簡単なExcelファイルを作成する
func main() {
ss := spreadsheet.New()
defer ss.Close()
// add a single sheet
sheet := ss.AddSheet()
// rows
for r := 0; r < 5; r++ {
row := sheet.AddRow()
// and cells
for c := 0; c < 5; c++ {
cell := row.AddCell()
cell.SetString(fmt.Sprintf("row %d cell %d", r, c))
}
}
if err := ss.Validate(); err != nil {
log.Fatalf("error validating sheet: %s", err)
}
ss.SaveToFile("simple.xlsx")
}
複数のグラフを Excel XLSX ファイルに追加する
unioffice ライブラリは、わずか数行のコードで Excel スプレッドシートにチャートを追加するためのサポートを提供しています。ワークシートで使用可能なデータに基づいてグラフを作成することも、データをまったく使用せずにグラフを作成することもできます。チャートを使用すると、棒、縦棒、円、折れ線、面、レーダーなどのさまざまな形式でデータを視覚的に表示できます。開発者は、使用可能なチャート オプションから簡単に選択して、その値を制御できます。
複数のチャートをExcelファイルへGo APIで入力
func main() {
ss := spreadsheet.New()
defer ss.Close()
sheet := ss.AddSheet()
// Create all of our data
row := sheet.AddRow()
row.AddCell().SetString("Item")
row.AddCell().SetString("Price")
row.AddCell().SetString("# Sold")
row.AddCell().SetString("Total")
for r := 0; r < 5; r++ {
row := sheet.AddRow()
row.AddCell().SetString(fmt.Sprintf("Product %d", r+1))
row.AddCell().SetNumber(1.23 * float64(r+1))
row.AddCell().SetNumber(float64(r%3 + 1))
row.AddCell().SetFormulaRaw(fmt.Sprintf("C%d*B%d", r+2, r+2))
}
// Charts need to reside in a drawing
dwng := ss.AddDrawing()
chrt1, anc1 := dwng.AddChart(spreadsheet.AnchorTypeTwoCell)
chrt2, anc2 := dwng.AddChart(spreadsheet.AnchorTypeTwoCell)
addBarChart(chrt1)
addLineChart(chrt2)
anc1.SetWidth(9)
anc1.MoveTo(5, 1)
anc2.MoveTo(1, 23)
// and finally add the chart to the sheet
sheet.SetDrawing(dwng)
if err := ss.Validate(); err != nil {
log.Fatalf("error validating sheet: %s", err)
}
ss.SaveToFile("multiple-chart.xlsx")
}
func addBarChart(chrt chart.Chart) {
chrt.AddTitle().SetText("Bar Chart")
lc := chrt.AddBarChart()
priceSeries := lc.AddSeries()
priceSeries.SetText("Price")
// Set a category axis reference on the first series to pull the product names
priceSeries.CategoryAxis().SetLabelReference(`'Sheet 1'!A2:A6`)
priceSeries.Values().SetReference(`'Sheet 1'!B2:B6`)
soldSeries := lc.AddSeries()
soldSeries.SetText("Sold")
soldSeries.Values().SetReference(`'Sheet 1'!C2:C6`)
totalSeries := lc.AddSeries()
totalSeries.SetText("Total")
totalSeries.Values().SetReference(`'Sheet 1'!D2:D6`)
// the line chart accepts up to two axes
ca := chrt.AddCategoryAxis()
va := chrt.AddValueAxis()
lc.AddAxis(ca)
lc.AddAxis(va)
ca.SetCrosses(va)
va.SetCrosses(ca)
}
XLSX スプレッドシートへの画像の挿入
unioffice ライブラリは、わずか数行の Go コードで、XLSX スプレッドシートに画像を含めることを完全にサポートしています。 XLSX ワークシート内の既存の画像の削除だけでなく、画像の変更もサポートしています。また、画像を挿入し、サイズ、位置などのプロパティを設定するオプションと、印刷サポートも提供します。
Go APIでExcelファイルにイメージをインサート
func main() {
ss := spreadsheet.New()
defer ss.Close()
// add a single sheet
sheet := ss.AddSheet()
img, err := common.ImageFromFile("gophercolor.png")
if err != nil {
log.Fatalf("unable to create image: %s", err)
}
iref, err := ss.AddImage(img)
if err != nil {
log.Fatalf("unable to add image to workbook: %s", err)
}
dwng := ss.AddDrawing()
sheet.SetDrawing(dwng)
for i := float64(0); i < 360; i += 30 {
anc := dwng.AddImage(iref, spreadsheet.AnchorTypeAbsolute)
ang := i * math.Pi / 180
x := 2 + 2*math.Cos(ang)
y := 2 + +2*math.Sin(ang)
anc.SetColOffset(measurement.Distance(x) * measurement.Inch)
anc.SetRowOffset(measurement.Distance(y) * measurement.Inch)
// set the image to 1x1 inches
var w measurement.Distance = 1 * measurement.Inch
anc.SetWidth(w)
anc.SetHeight(iref.RelativeHeight(w))
}
if err := ss.Validate(); err != nil {
log.Fatalf("error validating sheet: %s", err)
}
ss.SaveToFile("image.xlsx")
}
スプレッドシートのセルに条件付き書式を適用する
条件付き書式は、Excel ユーザーが特定の条件に基づいてセルまたはセル範囲に書式を適用するのに役立つ便利な機能です。 unioffice ライブラリは、ソフトウェア開発者が数個の Go コマンドだけでスプレッドシートに条件付き書式を適用できるようにする機能を提供しています。ライブラリには、セルの条件付き書式設定、スタイル設定、グラデーション、アイコン、データ バーなどのサポートが含まれています。