Tổng quan tính năng

Tổng quan tính năng

Aspose.Cells FOSS cho API của Go tập trung vào Workbook, Worksheet, Cells, và Cell. Hướng dẫn này đi qua các khả năng khác của thư viện: tạo kiểu, xác thực dữ liệu, bảng, hình ảnh, và đọc luồng cho các tệp lớn.


Tạo kiểu ô

Nhóm các cài đặt Font, Fill, Alignment, và Border thành một Style có thể tái sử dụng, sau đó áp dụng nó cho một ô bằng Cell.SetStyle:

wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]

boldStyle := cells_foss.NewStyle()
boldStyle.Font.Bold = true
boldStyle.Font.Size = 12

highlightStyle := cells_foss.NewStyle()
highlightStyle.Font.Color = "FFFFFFFF"
highlightStyle.Font.Bold = true
highlightStyle.Fill = &cells_foss.Fill{
	Type:  cells_foss.FillTypeSolid,
	Color: "FF4472C4",
}

cell, _ := ws.Cells().Get("A1")
cell.SetStyle(boldStyle)

Alignment kiểm soát Horizontal, Vertical, và WrapText; Border kiểm soát Top, Bottom, Left, và Right hiển thị quy tắc cộng với Color.


Xác thực dữ liệu

Worksheet.AddDataValidation gắn một quy tắc xác thực vào một phạm vi ô. Cấu trúc DataValidation mang quy tắc Type, một hoặc hai giá trị Formula, và các trường thông báo lỗi:

wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]

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,
}
ws.AddDataValidation("A2:A10", dv)

Một kiểm tra phạm vi số nguyên sử dụng DataValidationTypeWhole với Formula1/Formula2 làm giới hạn dưới và trên.


Bảng

Worksheet.AddTable tạo một Table có cấu trúc trên một phạm vi, với một hàng tiêu đề tùy chọn và một kiểu bảng có tên:

wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]

tbl := ws.AddTable("A1:F6")
tbl.HasHeaderRow = true
tbl.StyleName = "TableStyleMedium6"

Lấy một bảng đã tồn tại theo tên bằng Worksheet.GetTable(name).


Hình ảnh

Worksheet.AddPicture chèn một hình ảnh; Picture.SetAnchor(row, col) định vị nó:

wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]
imageBytes := []byte{} // populate with real image bytes before use

pic := &cells_foss.Picture{Data: imageBytes, Format: "png"}
ws.AddPicture(pic)
pic.SetAnchor(5, 0)

Phát luồng Tập tin Lớn

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

path := "outputfiles/large_workbook.xlsx"
sr := cells_foss.NewStreamingReader(path)
err := sr.ProcessRows("Sheet1", func(rowIdx int, cells map[string]string) error {
	// process one row at a time
	return nil
})
if err != nil {
	fmt.Printf("Error streaming: %v\n", err)
}

Mẹo và Thực hành tốt nhất

  • Sử dụng StreamingReader thay vì tải Workbook đầy đủ khi tệp có thể có hàng ngàn dòng và bạn chỉ cần đọc, không cần sửa đổi, nó.
  • Tạo một Style một lần và tái sử dụng nó cho nhiều ô thay vì tạo mới mỗi ô.
  • Cell.SetFormula lưu trữ chuỗi công thức nguyên văn — nó được Excel hoặc LibreOffice đánh giá khi mở, không phải bởi thư viện vào thời gian lưu.
  • Kiểm tra giá trị trả về error từ Save, AddDataValidation, và các cuộc gọi nhập/xuất CSV — I/O bảng tính có thể thất bại do đường dẫn không hợp lệ hoặc dữ liệu đầu vào sai định dạng.

Vấn đề thường gặp

IssueCauseSửa
Giá trị ô không hiển thị sau SetTham chiếu đến sheet sai hoặc tham chiếu ô ngoài phạm viXác nhận chỉ mục Worksheet và rằng tham chiếu kiểu A1 khớp với ô mong muốn
Công thức hiển thị dưới dạng văn bản thô thay vì tính toánThư viện chỉ lưu trữ chuỗi công thức; nó không tính toán công thứcMở tệp trong Excel hoặc LibreOffice, chúng sẽ thực hiện tính toán khi mở
Xác thực dữ liệu không hiển thị trong ExcelĐã thêm xác thực vào một phạm vi không bao gồm ô mục tiêuXác nhận chuỗi phạm vi (ví dụ: "A2:A10") bao phủ các ô bạn dự định xác thực

FAQ

Thư viện có tự đánh giá công thức không?

Không. Cell.SetFormula/GetFormula lưu trữ một chuỗi công thức mà Excel hoặc LibreOffice đánh giá khi tệp được mở.

Tôi có thể stream-write các sổ làm việc lớn, không chỉ stream-read chúng không?

StreamingReader bao gồm việc đọc luồng. Việc ghi các sổ làm việc lớn hiện đang đi qua API Workbook/Worksheet tiêu chuẩn trong bộ nhớ.

Liệu AddTable có tự động áp dụng auto-filter không?

Điều này chưa được xác nhận trong bề mặt API hiện tại — chỉ có HasHeaderRowStyleName được tài liệu hoá là các trường Table. Hãy kiểm tra với tệp .xlsx được tạo ra nếu điều này quan trọng đối với trường hợp sử dụng của bạn.


Tóm tắt API Reference

Lớp / Phương thứcMô tả
Workbook.NewWorkbook / SaveTạo và lưu một workbook
Worksheet.CellsTruy cập bộ sưu tập ô cho một bảng tính
Cells.Get / Set / Remove / AllĐọc, ghi, xóa và liệt kê các ô
Cell.SetStyle / SetFormula / GetFormulaÁp dụng kiểu dáng và công thức cho một ô
Style, Font, Fill, Alignment, BorderSoạn định dạng ô có thể tái sử dụng
Worksheet.AddDataValidationGắn một quy tắc xác thực vào một phạm vi ô
Worksheet.AddTable / GetTableTạo và truy xuất các phạm vi bảng có cấu trúc
Worksheet.AddPicture / Picture.SetAnchor(row, col)Nhúng và đặt vị trí hình ảnh
StreamingReader.ProcessRowsTruyền luồng một bảng tính theo từng hàng
Workbook.ExportToCSV / ImportFromCSVChuyển đổi giữa XLSX và CSV
Workbook.SetPassword / VerifyPasswordBảo vệ và kiểm tra mật khẩu sổ làm việc

Xem thêm

 Tiếng Việt