1. Sản Phẩm
  2.   Aspose.Cells
  3.   Aspose.Cells FOSS for Go

Aspose.Cells FOSS cho Go

Tạo, chỉnh sửa và xuất bảng tính Excel từ Go — miễn phí và mã nguồn mở, không có phụ thuộc bên ngoài.

Thư viện Go nguồn mở cho bảng tính Excel

Aspose.Cells FOSS for Go là một thư viện miễn phí, mã nguồn mở để làm việc với các tệp bảng tính Excel trong các ứng dụng Go. Cài đặt nó bằng go get github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26 và bắt đầu tạo workbook, đọc và ghi ô, áp dụng kiểu dáng, thêm kiểm tra dữ liệu, và xuất ra CSV, mà không cần Microsoft Excel hay bất kỳ phụ thuộc nào của Office.

Thư viện cung cấp một API Go nhỏ, mang tính idiomatic, được xây dựng xung quanh Workbook, Worksheet, Cells, và Cell. Truy cập các ô thông qua bộ sưu tập Cells() với Get/Set/Remove, nhóm định dạng thành các đối tượng Style có thể tái sử dụng được tạo từ Font, Fill, Alignment, và Border, và xây dựng các phạm vi Table có cấu trúc với một hàng tiêu đề và kiểu bảng có tên. Một StreamingReader chuyên dụng đọc các workbook .xlsx từng hàng một thông qua callback, do đó các tệp lớn có thể được xử lý mà không cần tải toàn bộ sheet vào bộ nhớ.

go.mod không khai báo bất kỳ phụ thuộc bên ngoài nào — thư viện được xây dựng hoàn toàn dựa trên thư viện chuẩn của Go. Nó được cấp phép MIT, được lưu trữ trên GitHub, và cài đặt bằng một lệnh go get duy nhất; không có cgo, không có thư viện Office gốc, và không có gói hệ thống nào cần cấu hình. Đối với dòng sản phẩm doanh nghiệp, xem Aspose.Cells — Enterprise Product Family.

Đọc và Ghi Tệp Excel

  • Cell access: Đọc và ghi giá trị với Cells().Get(ref) / Cells().Set(ref, value).
  • Formulas: Cell.SetFormula/GetFormula lưu chuỗi công thức vào ô — được Excel hoặc LibreOffice tính toán khi mở, không phải bởi thư viện khi lưu.
  • CSV interop: Workbook.ExportToCSV/ImportFromCSV và Worksheet.ToCSV/FromCSV chuyển đổi giữa XLSX và CSV.
  • Streaming reads: StreamingReader.ProcessRows truyền dữ liệu worksheet hàng từng hàng thông qua một callback, cho phép xử lý tệp lớn mà không cần tải toàn bộ sheet vào bộ nhớ.
  • Password protection: Workbook.SetPassword/VerifyPassword bảo vệ và kiểm tra mật khẩu workbook.

Nơi Aspose.Cells FOSS có thể được sử dụng

  • Data pipelines: Xuất kết quả truy vấn cơ sở dữ liệu trực tiếp sang XLSX hoặc CSV.
  • Report generation: Tạo báo cáo Excel có định dạng từ dịch vụ backend Go.
  • Large-file processing: Duyệt qua các workbook có hàng nghìn dòng bằng StreamingReader thay vì tải toàn bộ vào bộ nhớ.
  • ETL workflows: Đọc các sheet đầu vào, chuyển đổi dữ liệu và ghi các workbook đầu ra.
  • CI/CD automation: Tạo các tài nguyên spreadsheet trong các pipeline xây dựng dựa trên Go và các container Docker.

Định dạng, Xác thực dữ liệu và Bảng

  • Đối tượng Style: Nhóm Font (tên, kích thước, in đậm, in nghiêng, màu), Fill (loại, màu), Alignment (ngang, dọc, ngắt dòng), và Border (trên/dưới/trái/phải, màu) thành một Style có thể tái sử dụng, áp dụng bằng Cell.SetStyle.
  • Xác thực dữ liệu: Worksheet.AddDataValidation gắn các quy tắc xác thực danh sách và phạm vi số nguyên, mỗi quy tắc có tiêu đề lỗi tùy chỉnh, thông báo và kiểu lỗi.
  • Bảng: Worksheet.AddTable/GetTable tạo một phạm vi Table có cấu trúc với một hàng tiêu đề tùy chọn và một kiểu bảng có tên.
  • Hình ảnh: Worksheet.AddPicture nhúng một Picture hình ảnh với vị trí SetAnchor(row, col).

Trải nghiệm Nhà phát triển

Aspose.Cells FOSS for Go được cài đặt bằng một lệnh go get github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26 duy nhất. go.mod không có mục require — không có phụ thuộc bên ngoài nào để kiểm tra hoặc vendor.

Giao diện API được thiết kế cố ý gọn gàng: Workbook, Worksheet, Cells, Cell, Style, và một vài kiểu hỗ trợ bao phủ việc tạo bảng tính, tạo kiểu, xác thực và I/O CSV/streaming. Codebase được cấp phép MIT và được lưu trữ trên GitHub.

Tạo một Workbook và Ghi Các Ô

Cài đặt bằng go get, tạo một Workbook, truy cập Worksheet đầu tiên, và ghi giá trị trực tiếp vào các ô thông qua bộ sưu tập Cells() trước khi lưu.

go get github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26
func main() {
	wb := cells_foss.NewWorkbook()
	ws := wb.Worksheets[0]
	ws.Cells().Set("A1", "Hello")
	ws.Cells().Set("B1", "World")
	ws.Cells().Set("A2", "Answer")
	ws.Cells().Set("B2", 42)
	outPath := "outputfiles/basic.xlsx"
	if err := wb.Save(outPath); err != nil {
		fmt.Printf("Error saving workbook: %v\n", err)
		return
	}
	fmt.Printf("Workbook saved to %s\n", outPath)
}

Thêm Quy tắc Kiểm tra Dữ liệu

Gắn một xác thực kiểu danh sách (một danh sách thả xuống các giá trị cho phép) và một xác thực phạm vi số nguyên cho hai cột khác nhau, mỗi cột có tiêu đề và thông báo lỗi riêng.

func main() {
	wb := cells_foss.NewWorkbook()
	ws := wb.Worksheets[0]
	ws.Cells().Set("A1", "Fruit")
	ws.Cells().Set("A2", "Apple")
	ws.Cells().Set("A3", "Banana")
	dv := &cells_foss.DataValidation{
		Type:             cells_foss.DataValidationTypeList,
		Formula1:         `"Apple,Banana,Cherry,Dragonfruit"`,
		AllowBlank:       true,
		ShowErrorMessage: true,
		ErrorTitle:       "Invalid Fruit",
		ErrorMessage:     "Please pick a fruit from the list.",
		ErrorStyle:       cells_foss.ErrorStyleStop,
	}
	if err := ws.AddDataValidation("A2:A10", dv); err != nil {
		fmt.Printf("Error: %v\n", err)
		return
	}
	dv2 := &cells_foss.DataValidation{
		Type:             cells_foss.DataValidationTypeWhole,
		Formula1:         "1",
		Formula2:         "100",
		ShowErrorMessage: true,
		ErrorTitle:       "Invalid Value",
		ErrorMessage:     "Enter a whole number between 1 and 100.",
		ErrorStyle:       cells_foss.ErrorStyleWarning,
	}
	ws.Cells().Set("B1", "Score (1-100)")
	ws.AddDataValidation("B2:B10", dv2)
	outPath := "outputfiles/data_validation.xlsx"
	if err := wb.Save(outPath); err != nil {
		fmt.Printf("Error saving workbook: %v\n", err)
		return
	}
	fmt.Printf("Workbook saved to %s\n", outPath)
}

Phát luồng Sổ làm việc lớn theo hàng

StreamingReader đọc một worksheet từng dòng một thông qua một callback, vì vậy một workbook có hàng ngàn dòng không bao giờ phải được tải đầy đủ vào bộ nhớ.

func main() {
	genPath := "outputfiles/streaming_data.xlsx"
	sr := cells_foss.NewStreamingReader(genPath)
	rowCount := 0
	var totalScore float64
	err := sr.ProcessRows("Sheet1", func(rowIdx int, cells map[string]string) error {
		rowCount++
		if rowIdx == 1 {
			fmt.Printf("  Header: %v\n", cells)
			return nil
		}
		if score, ok := cells["C"+fmt.Sprint(rowIdx)]; ok {
			var s float64
			fmt.Sscanf(score, "%f", &s)
			totalScore += s
		}
		return nil
	})
	if err != nil {
		fmt.Fprintf(os.Stderr, "Error streaming: %v\n", err)
		os.Exit(1)
	}
	fmt.Printf("Streamed %d rows (header + %d data rows)\n", rowCount, rowCount-1)
}

Câu Hỏi Thường Gặp

Mô hình cấp phép cho Aspose.Cells FOSS for Go là gì?

Aspose.Cells FOSS for Go được phát hành dưới giấy phép MIT, cho phép sử dụng thương mại và nguồn mở.

Tôi có thể dùng nó trong các sản phẩm thương mại không?

Có. MIT License cho phép sử dụng thương mại mà không có nghĩa vụ tiết lộ mã nguồn của bạn, miễn là thông báo bản quyền gốc được giữ lại.

Làm sao để tôi cài đặt Aspose.Cells FOSS for Go?

Thêm nó như một phụ thuộc module Go bằng go get github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26. Yêu cầu Go 1.24 trở lên.

Có bất kỳ phụ thuộc bên ngoài nào không?

Không. go.mod không khai báo bất kỳ mục require nào — thư viện được xây dựng hoàn toàn trên thư viện chuẩn của Go.

Tôi có thể xử lý các workbook lớn mà không tải chúng hoàn toàn vào bộ nhớ không?

Có. StreamingReader.ProcessRows đọc một worksheet theo từng hàng thông qua một callback, tránh việc tải toàn bộ vào bộ nhớ.

  

Tài Nguyên Hỗ Trợ và Học Tập

 Tiếng Việt