Ô (Cell)

RichTextRun định nghĩa các thuộc tính của văn bản phrich.

type RichTextRun struct {
    Font *Font
    Text string
}

HyperlinkOpts được sử dụng để chỉ định các thuộc tính tùy chọn của siêu liên kết, như văn bản hiển thị và gợi ý màn hình.

type HyperlinkOpts struct {
    Display *string
    Tooltip *string
}

FormulaOpts được sử dụng để chỉ định các loại công thức đặc biệt trong hàm SetCellFormula.

type FormulaOpts struct {
    Type *string // loại công thức
    Ref  *string // tham chiếu công thức chia sẻ
}

Thiết lập giá trị của một ô

func (f *File) SetCellValue(sheet, cell string, value interface{}) error

Thiết lập giá trị của ô dựa trên tên bảng và tọa độ ô cung cấp. Hàm này an toàn với goroutine. Các tọa độ cụ thể không nên ở trong hàng đầu tiên của bảng và các ký tự số nhiều nên được sử dụng cho việc thiết lập văn bản.

Các loại dữ liệu được hỗ trợ
int
int8
int16
int32
int64
uint
uint8
uint16
uint32
uint64
float32
float64
string
[]byte
time.Duration
time.Time
bool
nil

Vui lòng lưu ý rằng hàm này thiết lập giá trị của ô kiểu time.Time với định dạng số mặc định là m/d/yy h:mm, và bạn có thể thay đổi cài đặt này bằng cách sử dụng SetCellStyle. Nếu bạn cần thiết lập các ngày Excel đặc biệt mà không thể biểu diễn bằng kiểu time.Time của ngôn ngữ Go, như ngày 0 tháng 1 năm 1900, hoặc ngày 29 tháng 2 năm 1900, hãy đặt giá trị của ô là 0 hoặc 60, sau đó thiết lập với một kiểu có định dạng số ngày.

Thiết lập giá trị boolean

func (f *File) SetCellBool(sheet, cell string, value bool) error

Thiết lập giá trị của một ô boolean dựa trên tên bảng và tọa độ ô cung cấp.

Thiết lập giá trị chuỗi mặc định

func (f *File) SetCellDefault(sheet, cell, value string) error

Thiết lập giá trị của một ô chuỗi dựa trên tên bảng và tọa độ ô cung cấp, và các ký tự sẽ không qua bộ lọc ký tự đặc biệt.

Thiết lập giá trị số nguyên

func (f *File) SetCellInt(sheet, cell string, value int) error

Thiết lập giá trị của một ô số nguyên dựa trên tên bảng và tọa độ ô cung cấp.

Thiết lập giá trị số thực

func (f *File) SetCellFloat(sheet, cell string, value float64, precision, bitSize int) error

Thiết lập giá trị của một ô số thực dựa trên tên bảng và tọa độ ô cung cấp, giá trị số dấu phẩy động, độ chính xác của phần phân số và loại số thực.

Thiết lập giá trị chuỗi

func (f *File) SetCellStr(sheet, cell, value string) error

Thiết lập giá trị của một ô chuỗi dựa trên tên bảng và tọa độ ô cung cấp, các ký tự s

Thiết lập kiểu ô

func (f *File) SetCellStyle(sheet, hCell, vCell string, styleID int) error

Thiết lập giá trị của một ô dựa trên tên sheet, tọa độ ô và chỉ số kiểu dáng. Hàm này là an toàn khi sử dụng đa luồng. Chỉ số kiểu dáng có thể được nhận thông qua hàm NewStyle. Lưu ý rằng diagonalDowndiagonalUp trong cùng một khu vực tọa độ cần duy trì màu sắc nhất quán. SetCellStyle sẽ ghi đè kiểu dáng hiện tại của ô mà không chồng chất hoặc gộp các kiểu dáng.

  • Ví dụ 1: Thiết lập kiểu viền cho ô D7 trong sheet có tên là Sheet1:
style, err := f.NewStyle(&excelize.Style{
    Border: []excelize.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: 8},
        {Type: "diagonalUp", Color: "A020F0", Style: 8},
    },
})
if err != nil {
    fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "D7", "D7", style)

Thiết lập kiểu viền cho ô

Bốn viền của ô D7 được thiết lập với các kiểu dáng và màu sắc khác nhau, liên quan đến các tham số được truyền vào hàm NewStyle. Để thiết lập các kiểu dáng khác nhau, vui lòng tham khảo tài liệu trong chương này.

  • Ví dụ 2: Thiết lập kiểu dáng dải màu cho ô D7 trong sheet có tên là Sheet1:
style, err := f.NewStyle(&excelize.Style{
    Fill: excelize.Fill{Type: "gradient", Color: []string{"FFFFFF", "E0EBF5"}, Shading: 1},
})
if err != nil {
    fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "D7", "D7", style)

Thiết lập kiểu dáng dải màu cho ô

Ô D7 được lấp đầy bằng các màu dải, liên quan đến các tham số được truyền vào hàm NewStyle. Để thiết lập các kiểu dáng khác nhau, vui lòng tham khảo tài liệu trong chương này.

  • Ví dụ 3: Thiết lập màu đổ màu cố định cho ô D7 trong sheet có tên là Sheet1:
style, err := f.NewStyle(&excelize.Style{
    Fill: excelize.Fill{Type: "pattern", Color: []string{"E0EBF5"}, Pattern: 1},
})
if err != nil {
    fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "D7", "D7", style)

Thiết lập màu đổ màu cố định cho ô

Ô D7 được lấp đầy bằng một màu cố định.

  • Ví dụ 4: Thiết lập khoảng cách ký tự và góc quay cho ô D7 trong sheet có tên là Sheet1:
f.SetCellValue("Sheet1", "D7", "Kiểu dáng")
style, err := f.NewStyle(&excelize.Style{
    Alignment: &excelize.Alignment{
        Horizontal:      "center",
        Indent:          1,
        JustifyLastLine: true,
        ReadingOrder:    0,
        RelativeIndent:  1,
        ShrinkToFit:     true,
        TextRotation:    45,
        Vertical:        "",
        WrapText:        true,
    },
})
if err != nil {
    fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "D7", "D7", style)

Thiết lập khoảng cách ký tự và góc quay

  • Ví dụ 5: Ngày giờ trong Excel được biểu diễn bằng số thực, ví dụ, 2017/7/4 12:00:00 PM có thể được biểu diễn bằng số 42920.5. Đặt định dạng thời gian cho ô D7 trong bảng tính có tên là Sheet1:
f.SetCellValue("Sheet1", "D7", 42920.5)
f.SetColWidth("Sheet1", "D", "D", 13)
style, err := f.NewStyle(&excelize.Style{NumFmt: 22})
if err != nil {
    fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "D7", "D7", style)

Thiết lập định dạng thời gian cho ô

Ô D7 được đặt với định dạng thời gian. Lưu ý rằng khi chiều rộng ô quá hẹp để hiển thị nội dung đầy đủ, nó sẽ hiển thị là ####. Bạn có thể điều chỉnh chiều rộng cột bằng cách kéo hoặc bằng cách gọi hàm SetColWidth để đặt chiều rộng cột với kích thước phù hợp cho hiển thị bình thường.

  • Ví dụ 6: Đặt font chữ, cỡ chữ, màu sắc và kiểu in nghiêng cho ô D7 trong bảng tính có tên là Sheet1:
f.SetCellValue("Sheet1", "D7", "Excel")
style, err := f.NewStyle(&excelize.Style{
    Font: &excelize.Font{
        Bold:   true,
        Italic: true,
        Family: "Times New Roman",
        Size:   36,
        Color:  "777777",
    },
})
if err != nil {
    fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "D7", "D7", style)

Thiết lập font chữ, cỡ chữ, màu sắc và kiểu in nghiêng cho ô

  • Ví dụ 7: Khóa và ẩn ô D7 trong bảng tính có tên là Sheet1:
style, err := f.NewStyle(&excelize.Style{
    Protection: &excelize.Protection{
        Hidden: true,
        Locked: true,
    },
})
if err != nil {
    fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "D7", "D7", style)

Để khóa hoặc ẩn ô, bảo vệ bảng tính. Trên tab "Đánh giá", nhấn vào "Bảo vệ bảng tính".


```go
func (f *File) SetCellHyperLink(sheet, cell, link, linkType string, opts ...HyperlinkOpts) error

Thiết lập siêu liên kết cho một ô dựa trên bảng tính, tọa độ ô, tài nguyên liên kết và loại tài nguyên cho trước. Loại tài nguyên bao gồm hai loại: địa chỉ liên kết bên ngoài External và liên kết vị trí nội bộ trong workbook Location. Số liên kết siêu trong mỗi bảng tính tối đa có giới hạn là 65530. Phương thức này chỉ thiết lập liên kết siêu cho ô mà không ảnh hưởng đến giá trị ô. Nếu cần thiết lập giá trị ô, vui lòng thiết lập một cách riêng biệt thông qua các hàm như SetCellStyle hoặc SetSheetRow.

  • Ví dụ 1: Thêm liên kết bên ngoài vào ô A3 trong bảng tính có tên là Sheet1:
hiển thị, chú thích := "https://github.com/xuri/excelize", "Excelize trên GitHub"
if err := f.SetCellHyperLink("Sheet1", "A3",
    "https://github.com/xuri/excelize", "External", excelize.HyperlinkOpts{
        Display: &hiển thị,
        Tooltip: &chú thích,
    }); err != nil {
    fmt.Println(err)
}
// Thiết lập font chữ và kiểu gạch chân cho ô
style, err := f.NewStyle(&excelize.Style{
    Font: &excelize.Font{Color: "1265BE", Underline: "single"},
})
if err != nil {
    fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "A3", "A3", style)
  • Ví dụ 2: Thêm liên kết vị trí vào ô A3 trong bảng tính có tên là Sheet1:
err := f.SetCellHyperLink("Sheet1", "A3", "Sheet1!A40", "Location")
func (f *File) SetCellRichText(sheet, cell string, runs []RichTextRun) error
 

Thiết lập định dạng văn bản phong phú cho ô cụ thể dựa trên bảng tính, tọa độ ô và định dạng văn bản phong phú đã cho.

Ví dụ, thiết lập định dạng văn bản phong phú cho ô A1 trong bảng tính có tên là Sheet1:

Thiết lập Định dạng Văn bản phong phú

package main

import (
    "fmt"
    
    "github.com/xuri/excelize/v2"
)

func main() {
    f := excelize.NewFile()
    defer func() {
        if err := f.Close(); err != nil {
            fmt.Println(err)
        }
    }()
    if err := f.SetRowHeight("Sheet1", 1, 35); err != nil {
        fmt.Println(err)
        return
    }
    if err := f.SetColWidth("Sheet1", "A", "A", 44); err != nil {
        fmt.Println(err)
        return
    }
    if err := f.SetCellRichText("Sheet1", "A1", []excelize.RichTextRun{
        {
            Text: "in đậm",
            Font: &excelize.Font{
                Bold:   true,
                Color:  "2354E8",
                Family: "Times New Roman",
            },
        },
        // ... (Các định dạng văn bản phong phú khác)
    }); err != nil {
        fmt.Println(err)
        return
    }
    // ... (Các thiết lập kiểu ô cụ thể khác và lưu trữ)
}
func (f *File) GetCellRichText(sheet, cell string) ([]RichTextRun, error)

Nhận định dạng văn bản phong phú của ô cụ thể dựa trên bảng tính và tọa độ ô đã cho.

func (f *File) GetCellValue(sheet, cell string, opts ...Options) (string, error)

Nhận giá trị của ô cụ thể dựa trên bảng tính và tọa độ ô đã cho, và giá trị trả về sẽ được chuyển đổi sang kiểu string. Nếu định dạng ô có thể được áp dụng vào giá trị ô, giá trị đã áp dụng sẽ được trả về; nếu không, giá trị ban đầu sẽ được trả về. Các giá trị của tất cả ô trong khu vực gộp sẽ giống nhau. Hàm này an toàn đối với đa luồng.

func (f *File) GetCellType(sheet, cell string) (CellType, error)

Nhận loại dữ liệu của ô cụ thể dựa trên bảng tính và tọa độ ô đã cho.

func (f *File) GetCols(sheet string, opts ...Options) ([][]string, error)

Lấy giá trị của tất cả ô trên bảng tính đã cho theo cột và trả về chúng dưới dạng một mảng hai chiều, với giá trị ô được chuyển đổi sang kiểu string. Nếu định dạng ô có thể được áp dụng vào giá trị ô, giá trị đã áp dụng s

Truy xuất siêu liên kết của ô cụ thể dựa trên bảng tính và tọa độ ô đã cho. Nếu ô chứa siêu liên kết, nó sẽ trả về `true` và địa chỉ liên kết; nếu không, nó sẽ trả về `false` và địa chỉ liên kết trống.

Ví dụ, để truy xuất siêu liên kết của ô tại tọa độ `H6` trên bảng tính có tên là `Sheet1`:

```go
link, target, err := f.GetCellHyperLink("Sheet1", "H6")
func (f *File) GetCellStyle(sheet, cell string) (int, error)

Truy xuất chỉ số kiểu của ô cụ thể dựa trên bảng tính và tọa độ ô đã cho, và chỉ số truy xuất được có thể được sử dụng như một tham số khi gọi hàm SetCellStyle để thiết lập kiểu ô.

func (f *File) MergeCell(sheet, hCell, vCell string) error

Gộp các ô trong khu vực tọa độ ô đã cho trên bảng tính đã cho. Chỉ giữ giá trị của ô ở phía trên bên trái trong khu vực gộp, và các giá trị của các ô khác sẽ bị bỏ qua. Ví dụ, gộp các ô trong khu vực D3:E9 trên bảng tính có tên là Sheet1:

err := f.MergeCell("Sheet1", "D3", "E9")

Nếu khu vực tọa độ ô đã cho chồng lấn với các ô đã gộp tồn tại, các ô đã gộp tồn tại sẽ bị loại bỏ.

func (f *File) UnmergeCell(sheet string, hCell, vCell string) error

Bỏ gộp các ô trong khu vực tọa độ ô đã cho trên bảng tính đã cho. Ví dụ, bỏ gộp các ô trong khu vực D3:E9 trên bảng tính có tên là Sheet1:

err := f.UnmergeCell("Sheet1", "D3", "E9")

Nếu khu vực tọa độ ô đã cho chứa nhiều ô đã gộp, tất cả các ô đã gộp sẽ bị bỏ gộp.

Lấy khu vực tọa độ và giá trị của tất cả các ô đã gộp trong bảng tính đã cho.

func (f *File) GetMergeCells(sheet string) ([]MergeCell, error)
func (m *MergeCell) GetCellValue() string

GetCellValue trả về giá trị của ô đã gộp.

func (m *MergeCell) GetStartAxis() string

GetStartAxis trả về tọa độ của ô ở phía trên bên trái của khu vực ô đã gộp, ví dụ: C2.

func (m *MergeCell) GetEndAxis() string

GetEndAxis trả về tọa độ của ô ở phía dưới bên phải của khu vực ô đã gộp, ví dụ: D4.

func (f *File) AddComment(sheet string, comment Comment) error

Thêm một comment vào bảng tính, tọa độ ô, và tham số kiểu (tác giả và thông tin văn bản). Thông tin tác giả có chiều dài tối đa là 255 ký tự, và chiều dài nội dung văn bản tối đa là 32512 ký tự. Các ký tự vượt quá giới hạn này sẽ bị bỏ qua. Ví dụ, thêm một comment vào ô Sheet1!$A$3:

Thêm comment vào tài liệu Excel

err := f.AddComment("Sheet1", excelize.Comment{
    Cell:   "A3",
    Author: "Excelize",
    Paragraph: []excelize.RichTextRun{
        {Text: "Excelize: ", Font: &excelize.Font{Bold: true}},
        {Text: "Đây là một comment."},
    },
})
func (f *File) GetComments(sheet string) ([]Comment, error)

Lấy tất cả các comment của ô trong bảng tính đã cho.

func (f *File) DeleteComment(sheet, cell string) error

Xóa comment tại bảng tính và tọa độ ô đã cho. Ví dụ, xóa comment trong ô Sheet1!$A$30:

err := f.DeleteComment("Sheet1", "A30")