เซลล์

RichTextRun กำหนดคุณสมบัติของ Rich Text

type RichTextRun struct {
    Font *Font
    Text string
}

HyperlinkOpts ใช้เพื่อระบุคุณสมบัติลิงก์ทางเลือก เช่น ข้อความที่แสดงและคำแนะนำจอภาพ

type HyperlinkOpts struct {
    Display *string
    Tooltip *string
}

FormulaOpts ใช้เพื่อระบุประเภทสูตรพิเศษในฟังก์ชัน SetCellFormula

type FormulaOpts struct {
    Type *string // ประเภทสูตร
    Ref  *string // การอ้างอิงสูตรที่ใช้ร่วมกัน
}

กำหนดค่าของเซลล์

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

กำหนดค่าของเซลล์โดยขึ้นอยู่กับชื่อชีทและพิกัดเซลล์ที่กำหนด ฟังก์ชันนี้สามารถใช้งานแบบ goroutine-safe พิกัดที่ระบุควรไม่อยู่ในแถวแรกของตาราง และควรใช้ตัวอักษรพหูพจน์สำหรับการตั้งค่าข้อความ

รูปแบบข้อมูลที่รองรับ
int
int8
int16
int32
int64
uint
uint8
uint16
uint32
uint64
float32
float64
string
[]byte
time.Duration
time.Time
bool
nil

โปรดทราบว่าฟังก์ชันนี้จะกำหนดค่าของเซลล์ประเภท time.Time ด้วยรูปแบบตัวเลข m/d/yy h:mm โดยค่าเริ่มต้น และสามารถเปลี่ยนการตั้งค่านี้โดยใช้ SetCellStyle หากคุณต้องการกำหนดวันที่ Excel พิเศษที่ไม่สามารถแทนที่ด้วยชนิดข้อมูล time.Time ใน Go language เช่น มกราคม 0, 1900 หรือ 29 กุมภาพันธ์ 1900 กำหนดค่าของเซลล์เป็น 0 หรือ 60 แล้วกำหนดด้วยสไตล์ที่มีรูปแบบตัวเลขวันที่

กำหนดค่าบูลีน

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

กำหนดค่าของเซลล์บูลีนโดยขึ้นอยู่กับชื่อชีทและพิกัดเซลล์ที่กำหนด

กำหนดค่าเริ่มต้นของสตริง

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

กำหนดค่าของเซลล์สตริงโดยขึ้นอยู่กับชื่อชีทและพิกัดเซลล์ที่กำหนด และตัวอักษรจะไม่ได้รับกระบวนการกรองตัวอักษรพิเศษ

กำหนดค่าของจำนวนเต็ม

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

กำหนดค่าของเซลล์จำนวนเต็มโดยขึ้นอยู่กับชื่อชีทและพิกัดเซลล์ที่กำหนด

กำหนดค่าของทศนิยม

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

กำหนดค่าของเซลล์ทศนิยมโดยขึ้นอยู่กับชื่อชีทและพิกัดเซลล์ที่กำหนด ค่าทศนิยมมูลค่า, ความละเอียดของส่วนทศนิยม, และประเภทของทศนิยม

กำหนดค่าของสตริง

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

กำหนดค่าของเซลล์สตริงโดยขึ้นอยู่กับชื่อชีทและพิกัดเซลล์ที่กำหนด ตัวอักษรจะถูกกรองตัวอักษรพิเศษ และความยาวรวมของสตริงควรไม่เกิน 32767 ตัวอักษรเมื่อเกินจะถูกละเว้นไป

ตั้งค่ารูปแบบเซลล์

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

ตั้งค่าค่าของเซลล์โดยอิงจากชื่อชีทที่กำหนด, พิกัดเซลล์แนวนอน, พิกัดเซลล์แนวตั้ง, และดัชนีของรูปแบบ ฟังก์ชันนี้สามารถทำงานได้พร้อมๆกันหลายตัว ดัชนีของรูปแบบสามารถได้มาจากฟังก์ชัน NewStyle โปรดทราบว่า diagonalDown และ diagonalUp ภายในพิกัดเดียวกันจะต้องบำรุงรักษาสีที่สอดคล้องกัน SetCellStyle จะเขียนทับรูปแบบที่มีอยู่ของเซลล์โดยไม่การ์ดหรือรวมรูปแบบ

  • ตัวอย่างที่ 1: ตั้งรูปแบบเส้นขอบสำหรับเซลล์ D7 ในชีทที่ชื่อ 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)

ตั้งรูปแบบเส้นขอบสำหรับเซลล์

เซลล์ D7 มีการตั้งการรูปแบบขอบที่แตกต่างกันและสีที่เกี่ยวข้องกับพารามิเตอร์ที่ผ่านไปยังฟังก์ชัน NewStyle สำหรับการตั้งรูปแบบที่แตกต่างกันโปรดอ่านเอกสารประกอบในบทนี้

  • ตัวอย่างที่ 2: ตั้งรูปแบบสีไล่สำหรับเซลล์ D7 ในชีทที่ชื่อ 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)

ตั้งรูปแบบสำหรับเซลล์

เซลล์ D7 ถูกเติมด้วยสีไล่ที่เกี่ยวข้องกับพารามิเตอร์ที่ผ่านไปยังฟังก์ชัน NewStyle สำหรับการตั้งรูปแบบที่แตกต่างกันโปรดอ่านเอกสารประกอบในบทนี้

  • ตัวอย่างที่ 3: ตั้งรูปแบบการเติมสีแบบทึบสำหรับเซลล์ D7 ในชีทที่ชื่อ 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)

ตั้งรูปแบบการเติมสีแบบทึบสำหรับเซลล์

เซลล์ D7 ถูกเติมด้วยสีทึบ

  • ตัวอย่างที่ 4: ตั้งระยะห่างของอักษรและมุมการหมุนสำหรับเซลล์ D7 ในชีทที่ชื่อ Sheet1:
f.SetCellValue("Sheet1", "D7", "Style")
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)

ตั้งระยะห่างของอักษรและมุมการหมุน

  • ตัวอย่างที่ 5: วันที่และเวลาใน Excel ถูกแทนที่ด้วยจำนวนจริง เช่น 2017/7/4 12:00:00 PM สามารถถูกแทนด้วยตัวเลข 42920.5 ตั้งรูปแบบเวลาสำหรับเซลล์ D7 ในสมุดงานที่ชื่อ 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)

ตั้งรูปแบบเวลาสำหรับเซลล์

เซลล์ D7 ถูกตั้งรูปแบบเวลา โปรดทราบว่าเมื่อความกว้างของเซลล์ไม่พอจะแสดงเนื้อหาที่สมบูรณ์ มันจะแสดงเป็น #### คุณสามารถปรับความกว้างของคอลัมน์ได้โดยลากหรือโดยการเรียกใช้ฟังก์ชัน SetColWidth เพื่อตั้งความกว้างของคอลัมน์เป็นขนาดที่เหมาะสมสำหรับการแสดงชนิดปกติ

  • ตัวอย่างที่ 6: ตั้งรูปแบบตัวอักษร ขนาดตัวอักษร สี และรูปแบบตัวเอียงสำหรับเซลล์ D7 ในสมุดงานที่ชื่อ 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)

ตั้งรูปแบบตัวอักษร ขนาดตัวอักษร สี และรูปแบบตัวเอียงสำหรับเซลล์

  • ตัวอย่างที่ 7: ล็อคและซ่อนเซลล์ D7 ในสมุดงานที่ชื่อ 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)

เพื่อล็อคหรือซ่อนเซลล์ให้ป้องกันสมุดงาน บนแท็บ "รีวิว" คลิกที่ "ป้องกันแผ่นข้อมูล".

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

ตั้งการเชื่อมโยงเซลล์สำหรับเซลล์จากแผ่นงานและพิกัดเซลล์ที่กำหนด ทรัพยากรเชื่อมโยงมี 2 ประเภท: ที่อยู่เชื่อมโยงภายนอก External และ ที่อยู่เชื่อมโยงตำแหน่งภายในสมุดงาน Location จำนวนสูงสุดของการเชื่อมโยงเซลล์ในแต่ละสมุดงาน จำกัดที่ 65530 วิธีนี้จะตั้งค่าเชื่อมโยงสำหรับเซลล์โดยไม่ส่งผลต่อค่าของเซลล์ ถ้าคุณต้องการตั้งค่าค่าของเซลล์โปรดตั้งค่าแยกต่างหากผ่านฟังก์ชันอย่างเช่น SetCellStyle หรือ SetSheetRow

  • ตัวอย่างที่ 1: เพิ่มการเชื่อมโยงภายนอกไปยังเซลล์ A3 ในสมุดงานที่ชื่อ Sheet1:
display, tooltip := "https://github.com/xuri/excelize", "Excelize บน GitHub"
if err := f.SetCellHyperLink("Sheet1", "A3",
    "https://github.com/xuri/excelize", "External", excelize.HyperlinkOpts{
        Display: &display,
        Tooltip: &tooltip,
    }); err != nil {
    fmt.Println(err)
}
// ตั้งรูปแบบตัวอักษรและรูปแบบขีดเส้นใต้สำหรับเซลล์
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)
  • ตัวอย่างที่ 2: เพิ่มการเชื่อมโยงตำแหน่งไปยังเซลล์ A3 ในสมุดงานที่ชื่อ Sheet1:
err := f.SetCellHyperLink("Sheet1", "A3", "Sheet1!A40", "Location")
func (f *File) SetCellRichText(sheet, cell string, runs []RichTextRun) error

กำหนดรูปแบบ Rich Text สำหรับเซลล์ที่ระบุบนชีทที่กำหนด ด้วยพิกัดเซลล์และรูปแบบ Rich Text ที่ให้มา

ตัวอย่างเช่น กำหนดรูปแบบ Rich Text สำหรับเซลล์ `A1` ในชีทที่ชื่อ `Sheet1`:

![Set Rich Text Format](/storage/20231012/uog6n6jRKVmPjoBa.png)

```go
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: "bold",
            Font: &excelize.Font{
                Bold:   true,
                Color:  "2354E8",
                Family: "Times New Roman",
            },
        },
        // ... (รายการ Rich Text อื่น ๆ)
    }); err != nil {
        fmt.Println(err)
        return
    }
    // ... (การตั้งค่ารูปแบบเซลล์อื่น ๆ และการบันทึก)
}
func (f *File) GetCellRichText(sheet, cell string) ([]RichTextRun, error)

รับรูปแบบ Rich Text ของเซลล์ที่ระบุ ด้วยชีทและพิกัดเซลล์ที่กำหนด

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

รับค่าของเซลล์ที่ระบุ ด้วยชีทและพิกัดเซลล์ที่กำหนด และค่าที่ส่งคืนจะถูกแปลงเป็นประเภท string หากรูปแบบเซลล์สามารถใช้กับค่าเซลล์ ค่าที่ใช้จะถูกส่งคืน; มิฉะนั้น ค่าเริ่มต้นจะถูกส่งคืน ค่าของเซลล์ทุกเซลล์ภายในพื้นที่ผสมจะเหมือนกัน ฟังก์ชันนี้ปลอดภัยต่อความเป็นพร้อมของกัน

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

รับประเภทข้อมูลของเซลล์ที่ระบุ ด้วยชีทและพิกัดเซลล์ที่กำหนด

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

ดึงค่าของเซลล์ทั้งหมดในชีทที่ระบุตามคอลัมน์ และส่งคืนในรูปแบบของอาร์เรย์ทวิตมิติ โดยค่าเซลล์ถูกแปลงเป็นประเภท string หากรูปแบบเซลล์สามารถใช้กับค่าเซลล์ ค่าที่ใช้จะถูกใช้; มิฉะนั้น ค่าเริ่มต้นจะถูกใช้

ตัวอย่างเช่น เพื่อดึงค่าของเซลล์ทั้งหมดในชีทที่ชื่อ Sheet1 ตามคอลัมน์:

cols, err := f.GetCols("Sheet1")
if err != nil {
    fmt.Println(err)
    return
}
for _, col := range cols {
    for _, rowCell := range col {
        fmt.Print(rowCell, "\t")
    }
    fmt.Println()
}
func (f *File) GetRows(sheet string, opts ...Options) ([][]string, error)

ดึงค่าของเซลล์ทั้งหมดในชีทที่ระบุตามแถว และส่งคืนในรูปแบบของอาร์เรย์ทวิตมิติ โดยค่าเซลล์ถูกแปลงเป็นประเภท string หากรูปแบบเซลล์สามารถใช้กับค่าเซลล์ ค่าที่ใช้จะถูกใช้; มิฉะนั้น ค่าเริ่มต้นจะถูกใช้ ฟังก์ชัน GetRows ดึงแถวที่มีเซลล์ที่มีค่าหรือสูตร ส่วนเซลล์เปล่าที่อยู่ที่ปลายแถวจะถูกข้าม และจำนวนเซลล์ในแต่ละแถวอาจแตกต่างกัน

ตัวอย่างเช่น เพื่อดึงค่าของเซลล์ทั้งหมดในชีทที่ชื่อ Sheet1 ตามแถว:

rows, err := f.GetRows("Sheet1")
if err != nil {
    fmt.Println(err)
    return
}
for _, row := range rows {
    for _, colCell := range row {
        fmt.Print(colCell, "\t")
    }
    fmt.Println()
}
func (f *File) GetCellHyperLink(sheet, cell string) (bool, string, error)

ดึงเชื่อมโยงของเซลล์ที่ระบุโดยใช้งานชีทและพิกัดเซลล์ที่กำหนด หากเซลล์มีเชื่อมโยงจะส่งคืน true และที่อยู่ของลิงก์ มิฉะนั้นจะส่งคืน false และที่อยู่ของลิงก์ว่าง

เช่น เพื่อดึงเชื่อมโยงของเซลล์ที่พิกัด H6 ในชีทชื่อ Sheet1:

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

ดึงดัชนีสไตล์ของเซลล์ที่ระบุโดยใช้งานชีทและพิกัดเซลล์ที่กำหนด และดัชนีที่ดึงได้สามารถนำมาใช้เป็นพารามิเตอร์เมื่อเรียกใช้ฟังก์ชัน SetCellStyle เพื่อกำหนดสไตล์ของเซลล์

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

ผสานเซลล์ในช่วงพิกัดเซลล์ที่กำหนดในชีทที่กำหนด มีเพียงค่าของเซลล์มุมบนซ้ายในพื้นที่ที่ผสานแล้วที่จะถูกเก็บไว้และค่าของเซลล์อื่น ๆ จะถูกละเว้น เช่น ผสานเซลล์ในช่วง D3:E9 ในชีทชื่อ Sheet1:

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

หากช่วงพิกัดเซลล์ที่กำหนดทับซ้อนกับเซลล์ที่ผสานมาก่อนหน้านี้ เซลล์ที่ผสานมาก่อนหน้านี้จะถูกลบ

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

ยกเลิกการผสานเซลล์ในช่วงพิกัดเซลล์ที่กำหนดในชีทที่กำหนด เช่น ยกเลิกการผสานเซลล์ในช่วง D3:E9 ในชีทที่ชื่อ Sheet1:

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

หากช่วงพิกัดเซลล์ที่กำหนดมีเซลล์ที่ผสานมากกว่าหนึ่งเซลล์ที่ผสาน เซลล์ที่ผสานทั้งหมดจะถูกยกเลิกการผสาน

ดึงช่วงพิกัดและค่าของเซลล์ที่ผสานทั้งหมดในชีทที่กำหนด

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

GetCellValue คืนค่าของเซลล์ที่ผสาน

func (m *MergeCell) GetStartAxis() string

GetStartAxis คืนค่าพิกัดของเซลล์มุมบนซ้ายของพื้นที่เซลล์ที่ผสาน ตัวอย่างเช่น C2

func (m *MergeCell) GetEndAxis() string

GetEndAxis คืนค่าพิกัดของเซลล์มุมล่างขวาของพื้นที่เซลล์ที่ผสาน ตัวอย่างเช่น D4

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

เพิ่มความคิดเห็นลงในชีทที่กำหนด พิกัดเซลล์ และพารามิเตอร์สไตล์ (ข้อมูลผู้เขียนและข้อความ) ข้อมูลผู้เขียนมีความยาวสูงสุด 255 ตัวอักษร และความยาวของข้อความสูงสุดคือ 32512 ตัวอักษร ตัวอักษรที่เกินขอบเขตนี้จะถูกละเว้น เช่น เพิ่มความคิดเห็นในเซลล์ Sheet1!$A$3:

Add a comment in an Excel document

err := f.AddComment("Sheet1", excelize.Comment{
    Cell:   "A3",
    Author: "Excelize",
    Paragraph: []excelize.RichTextRun{
        {Text: "Excelize: ", Font: &excelize.Font{Bold: true}},
        {Text: "This is a comment."},
    },
})
func (f *File) GetComments(sheet string) ([]Comment, error)

ดึงความคิดเห็นของเซลล์ทั้งหมดในชีทที่กำหนด

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

ลบความคิดเห็นในชีทและพิกัดเซลล์ที่กำหนด เช่น ลบความคิดเห็นในเซลล์ Sheet1!$A$30:

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