เซลล์
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`:

```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
:
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")