Thư viện mã nguồn mở Go để tạo tệp Excel XLSX
Đọc, ghi, chỉnh sửa tài liệu Microsoft Excel XLSX thông qua API nguồn mở Go. Thêm nhiều biểu đồ, hình ảnh và bảng bên trong bảng tính của bạn.
Unioffice là một thư viện go thuần túy mã nguồn mở cung cấp cho các nhà phát triển phần mềm khả năng tạo, sửa đổi và thao tác các tài liệu Office Excel XLSX bên trong các ứng dụng Go của riêng họ. Thư viện rất ổn định và cung cấp mức năng suất cao nhất với rất ít nỗ lực và chi phí.
Thư viện unioffice mã nguồn mở hỗ trợ đầy đủ một số tính năng quan trọng liên quan đến việc tạo và sửa đổi bảng tính Excel, chẳng hạn như tạo trang tính Excel mới từ đầu, tạo ô với nhiều định dạng số / ngày / giờ, Định dạng ô trong Excel, Hỗ trợ xác thực ô, Lấy giá trị ô như được định dạng bởi Excel, định dạng có điều kiện, Hợp nhất và hủy hợp nhất các ô, xác thực dữ liệu bao gồm danh sách thả xuống hộp tổ hợp, Hình ảnh được nhúng và hơn thế nữa.
Bắt đầu với unioffice
Cách được đề xuất để unioffice vào dự án của bạn là sử dụng Github. Vui lòng sử dụng lệnh sau để cài đặt suôn sẻ.
Cài đặt unioffice qua GitHub
go get github.com/unidoc/unioffice/
go build -i github.com/unidoc/unioffice/...
Excel XLSX Creation qua Go API
Thư viện mã nguồn mở unioffice cho phép các lập trình viên máy tính tạo bảng tính Excel XLSX bên trong các ứng dụng Go của riêng họ. Nó cung cấp cho bạn khả năng thêm một trang tính mới vào các tài liệu Excel hiện có của bạn và gán tên cho một trang tính và lưu tệp vào đường dẫn bạn chọn. Nó cũng cung cấp hỗ trợ cho một số tính năng quan trọng như thêm hàng và cột mới vào trang tính, xác định số hàng và cột, đặt giá trị mặc định của ô, v.v. Bạn cũng có thể mở và sửa đổi bảng tính hiện có một cách dễ dàng.
Tạo file Excel đơn giản qua thư viện Go
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")
}
Thêm nhiều biểu đồ vào tệp Excel XLSX
Thư viện unioffice đã cung cấp hỗ trợ để thêm biểu đồ vào bảng tính Excel chỉ với một vài dòng mã. Bạn có thể tạo biểu đồ dựa trên dữ liệu có sẵn trong trang tính của mình cũng như không có sẵn bất kỳ dữ liệu nào. Biểu đồ cung cấp cho bạn khả năng hiển thị dữ liệu trực quan ở các định dạng khác nhau như Thanh, Cột, Hình tròn, Đường, Khu vực hoặc Radar, v.v. Nhà phát triển có thể dễ dàng chọn từ các tùy chọn biểu đồ có sẵn và có thể kiểm soát giá trị của chúng.
Thêm nhiều biểu đồ vào file Excel qua 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)
}
Chèn hình ảnh vào bảng tính XLSX
Thư viện unioffice hỗ trợ đầy đủ việc đưa hình ảnh vào Bảng tính XLSX chỉ với một vài dòng mã Go. Nó hỗ trợ sửa đổi hình ảnh cũng như xóa hình ảnh hiện có bên trong trang tính XLSX. Nó cũng cung cấp các tùy chọn để chèn ảnh và thiết lập các thuộc tính của nó như kích thước, vị trí, v.v. cũng như hỗ trợ in.
Chuyển hình ảnh sang file Excel qua Go API
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")
}
Áp dụng định dạng có điều kiện trên các ô của bảng tính
Định dạng có điều kiện là một tính năng hữu ích giúp người dùng Excel áp dụng định dạng cho một ô hoặc một dải ô dựa trên các tiêu chí nhất định. Thư viện unioffice đã cung cấp chức năng cho phép các nhà phát triển phần mềm áp dụng định dạng có điều kiện cho bảng tính của họ chỉ bằng một vài lệnh Go. Thư viện đã bao gồm hỗ trợ cho các ô định dạng có điều kiện, kiểu dáng, độ dốc, biểu tượng, thanh dữ liệu và hơn thế nữa.