ชีทงาน

กำหนดความปรากฏของคอลัมน์

func (f *File) SetColVisible(sheet, col string, visible bool) error

กำหนดความปรากฏของคอลัมน์ที่กำหนดตามชื่อของชีทและชื่อของคอลัมน์ที่กำหนด ฟังก์ชันนี้สามารถทำงานพร้อมกันได้ ตัวอย่างเช่น เพื่อซ่อนคอลัมน์ D ในชีทที่ชื่อ Sheet1:

err := f.SetColVisible("Sheet1", "D", false)

ซ่อนคอลัมน์ D ถึง F ในชีทที่ชื่อ Sheet1:

err := f.SetColVisible("Sheet1", "D:F", false)

กำหนดความกว้างของคอลัมน์

func (f *File) SetColWidth(sheet, startCol, endCol string, width float64) error

กำหนดความกว้างของหนึ่งหรือมากกว่าคอลัมน์ที่กำหนดตามชื่อของชีท ช่วงคอลัมน์ และค่าความกว้าง ฟังก์ชันนี้สามารถทำงานพร้อมกันได้ ตัวอย่างเช่น เพื่อกำหนดความกว้างของคอลัมน์ A ถึง H ในชีทที่ชื่อ Sheet1 เป็น 20:

err := f.SetColWidth("Sheet1", "A", "H", 20)

กำหนดความสูงของแถว

func (f *File) SetRowHeight(sheet string, row int, height float64) error

กำหนดความสูงของแถวเดียวตามชื่อของชีท หมายเลขแถว และค่าความสูง ตัวอย่างเช่น เพื่อกำหนดความสูงของแถวแรกในชีทที่ชื่อ Sheet1 เป็น 50:

err := f.SetRowHeight("Sheet1", 1, 50)

กำหนดความปรากฏของแถว

func (f *File) SetRowVisible(sheet string, row int, visible bool) error

กำหนดความปรากฏของแถวที่กำหนดตามชื่อของชีท และหมายเลขแถว ตัวอย่างเช่น เพื่อซ่อนแถวที่สองในชีทที่ชื่อ Sheet1:

err := f.SetRowVisible("Sheet1", 2, false)

รับชื่อของชีท

func (f *File) GetSheetName(index int) string

รับชื่อของชีทตามดัชนีของชีทที่กำหนด หากชีทไม่มีอยู่ จะคืนค่าเป็นสตริงว่าง

รับความปรากฏของคอลัมน์

func (f *File) GetColVisible(sheet, column string) (bool, error)

รับความปรากฏของคอลัมน์ที่กำหนดในชีทตามชื่อของชีทและชื่อของคอลัมน์ ค่าที่คืนเป็น true หมายถึงปรากฏ ในขณะที่ false หมายถึงสถานะซ่อน ฟังก์ชันนี้สามารถทำงานพร้อมกันได้ ตัวอย่างเช่น เพื่อรับความปรากฏของคอลัมน์ D ในชีทที่ชื่อ Sheet1:

visible, err := f.GetColVisible("Sheet1", "D")

รับความกว้างของคอลัมน์

func (f *File) GetColWidth(sheet, col string) (float64, error)

รับความกว้างของคอลัมน์ที่กำหนดในชีทตามชื่อของชีทและชื่อของคอลัมน์ ฟังก์ชันนี้สามารถทำงานพร้อมกันได้

รับความสูงของแถว

func (f *File) GetRowHeight(sheet string, row int) (float64, error)

รับความสูงของแถวที่กำหนดในชีทตามชื่อของชีทและหมายเลขแถว ตัวอย่างเช่น เพื่อรับความสูงของแถวแรกในชีทที่ชื่อ Sheet1:

height, err := f.GetRowHeight("Sheet1", 1)

รับความปรากฏของแถว

func (f *File) GetRowVisible(sheet string, row int) (bool, error)

รับความปรากฏของแถวที่กำหนดในชีทตามชื่อของชีทและหมายเลขแถว ตัวอย่างเช่น เพื่อรับความปรากฏของแถวที่สองในชีทที่ชื่อ Sheet1:

visible, err := f.GetRowVisible("Sheet1", 2)

รับดัชนีของชีท

func (f *File) GetSheetIndex(sheet string) (int, error)

รับดัชนีของชีทที่กำหนดตามชื่อของชีท คืนค่าเป็น -1 หากชีทไม่มีอยู่ ดัชนีที่ได้รับสามารถนำมาใช้เป็นพารามิเตอร์เมื่อเรียกใช้ฟังก์ชัน SetActiveSheet() เพื่อกำหนดชีทเริ่มต้นของสมุดงาน

รับการทำแผนที่ของแผ่นงาน

func (f *File) GetSheetMap() map[int]string

รับการทำแผนที่ของแผ่นงานทั้งหมด แผ่นงานกราฟ และแผ่นงานสนทนาในสมุดงาน โดยใช้ ID และชื่อเป็นตัวแทน

f, err := excelize.OpenFile("Book1.xlsx")
if err != nil {
    return
}
defer func() {
    if err := f.Close(); err != nil {
        fmt.Println(err)
    }
}()
for index, name := range f.GetSheetMap() {
    fmt.Println(index, name)
}

รับรายการของแผ่นงาน

func (f *File) GetSheetList() []string

รับรายการของแผ่นงาน รวมถึงแผ่นงาน แผ่นงานกราฟ และแผ่นงานสนทนาตามลำดับเดียวกันกับที่พวกเขาปรากฏในสมุดงาน

ตั้งชื่อของแผ่นงาน

func (f *File) SetSheetName(source, target string) error

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

แทรกคอลัมน์

func (f *File) InsertCols(sheet, col string, n int) error

แทรกคอลัมน์ว่างไว้ก่อนคอลัมน์ที่ระบุตามชื่อแผ่นงาน ชื่อคอลัมน์ และจำนวนของคอลัมน์ที่จะถูกแทรก ตัวอย่างเช่น แทรก 2 คอลัมน์ว่างไว้ก่อนคอลัมน์Cในแผ่นงานที่ชื่อ Sheet1:

err := f.InsertCols("Sheet1", "C", 2)

แทรกแถว

func (f *File) InsertRows(sheet string, row, n int) error

แทรกแถวว่างไว้ก่อนแถวที่ระบุตามชื่อแผ่นงาน เลขแถว และจำนวนของแถวที่จะถูกแทรก ตัวอย่างเช่น แทรก 2 แถวว่างไว้ก่อนแถวที่ 3 ในแผ่นงานที่ชื่อ Sheet1:

err := f.InsertRows("Sheet1", 3, 2)

ทับและคัดลอกแถว

func (f *File) DuplicateRow(sheet string, row int) error

ทับข้อมูลหลังแถวที่ระบุตามชื่อแผ่นงาน ตัวอย่างเช่น คัดลอกแถวที่ 2 ของแผ่นงานที่ชื่อ Sheet1 ไปยังแถวที่ 3:

err := f.DuplicateRow("Sheet1", 2)

กรุณาใช้วิจารณญาณเมื่อใช้วิธีนี้ เนื่องจากมันจะส่งผลกระทบกับการเปลี่ยนแปลงทั้งหมดในสูตรเดิม กราฟ และทรัพยากรการอ้างอิงอื่นในแผ่นงาน หากแผ่นงานมีค่าการอ้างอิงใด ๆ เปิดด้วยแอปพลิเคชัน Excel หลังจากใช้วิธีนี้อาจทำให้มีข้อผิดพลาดของไฟล์ ในปัจจุบัน excelize รองรับเฉพาะการอัปเดตบางส่วนเท่านั้นในแผ่นงาน

คัดลอกแถว

func (f *File) DuplicateRowTo(sheet string, row, row2 int) error

คัดลอกแถวหลังจากแถวที่ระบุตามชื่อแผ่นงานและเลขแถว ตัวอย่างเช่น คัดลอกแถวที่สองของแผ่นงานที่ชื่อ Sheet1 หลังจากแถวที่ 7:

err := f.DuplicateRowTo("Sheet1", 2, 7)

กรุณาใช้วิจารณญาณเมื่อใช้วิธีนี้ เนื่องจากมันจะส่งผลกระทบกับการเปลี่ยนแปลงทั้งหมดในสูตรเดิม กราฟ และทรัพยากรการอ้างอิงอื่นในแผ่นงาน หากแผ่นงานมีค่าการอ้างอิงใด ๆ เปิดด้วยแอปพลิเคชัน Excel หลังจากใช้วิธีนี้อาจทำให้มีข้อผิดพลาดของไฟล์ ในปัจจุบัน excelize รองรับเฉพาะการอัปเดตเฉพาะบางส่วนในแผ่นงาน

ตั้งระดับโครงสร้างของแถว

func (f *File) SetRowOutlineLevel(sheet string, row int, level uint8) error

สร้างกลุ่มตามชื่อแผ่นงาน เลขแถว และพารามิเตอร์ระดับโครงสร้าง ตัวอย่างเช่น สร้างกลุ่มระดับ 1 ที่แถวที่ 2 ของแผ่นงานที่ชื่อ Sheet1.

Set Row Outline Level

err := f.SetRowOutlineLevel("Sheet1", 2, 1)

ตั้งระดับโครงสร้างคอลัมน์

func (f *File) SetColOutlineLevel(sheet, col string, level uint8) error

สร้างกลุ่มโดยใช้ชื่อแผ่นงาน ชื่อคอลัมน์ และพารามิเตอร์ระดับโครงสร้างที่กำหนด ตัวอย่างเช่น สร้างกลุ่มระดับ 2 ในคอลัมน์ D ของแผ่นงานที่ชื่อ Sheet1 โดยใช้โค้ดดังนี้

ตั้งระดับโครงสร้างคอลัมน์

err := f.SetColOutlineLevel("Sheet1", "D", 2)

รับระดับโครงสร้างแถว

func (f *File) GetRowOutlineLevel(sheet string, row int) (uint8, error)

รับระดับโครงสร้างโดยใช้ชื่อแผ่นงานและหมายเลขแถวที่กำหนด ตัวอย่างเช่น รับระดับโครงสร้างของแถวที่สองในแผ่นงานที่ชื่อ Sheet1 ด้วยโค้ดดังนี้

level, err := f.GetRowOutlineLevel("Sheet1", 2)

รับระดับโครงสร้างคอลัมน์

func (f *File) GetColOutlineLevel(sheet, col string) (uint8, error)

รับระดับโครงสร้างโดยใช้ชื่อแผ่นงานและชื่อคอลัมน์ที่กำหนด ตัวอย่างเช่น รับระดับโครงสร้างของคอลัมน์ D ในแผ่นงานที่ชื่อ Sheet1 ด้วยโค้ดดังนี้

level, err := f.GetColOutlineLevel("Sheet1", "D")

ตัววินิจฉัยคอลัมน์

func (f *File) Cols(sheet string) (*Cols, error)

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

cols, err := f.Cols("Sheet1")
if err != nil {
    fmt.Println(err)
    return
}
for cols.Next() {
    col, err := cols.Rows()
    if err != nil {
        fmt.Println(err)
    }
    for _, rowCell := range col {
        fmt.Print(rowCell, "\t")
    }
    fmt.Println()
}

ตัววินิจฉัยคอลัมน์ - รับค่าของคอลัมน์เดี่ยว

func (cols *Cols) Rows(opts ...Options) ([]string, error)

คืนค่าของแถวทั้งหมดในคอลัมน์ปัจจุบัน

ตัววินิจฉัยคอลัมน์ - การเดินทาง

func (cols *Cols) Next() bool

คืนค่า true ถ้ามีค่าในคอลัมน์ถัดไป

ตัววินิจฉัยคอลัมน์ - การจัดการข้อผิดพลาด

func (cols *Cols) Error() error

คืนค่าข้อผิดพลาดเมื่อเกิดข้อผิดพลาดในขณะค้นหาคอลัมน์ถัดไป

ตัววินิจฉัยแถว

func (f *File) Rows(sheet string) (*Rows, error)

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

rows, err := f.Rows("Sheet1")
if err != nil {
    fmt.Println(err)
    return
}
for rows.Next() {
    row, err := rows.Columns()
    if err != nil {
        fmt.Println(err)
    }
    for _, colCell := range row {
        fmt.Print(colCell, "\t")
    }
    fmt.Println()
}
if err = rows.Close(); err != nil {
    fmt.Println(err)
}

ตัววินิจฉัยแถว - การทำงานกับแถวเดียว

func (rows *Rows) Columns(opts ...Options) ([]string, error)

ฟังก์ชันนี้อ่านแบบสตรีมแถวตามแผ่นงานทีละแถว คืนค่าของแต่ละเซลล์ในแถวปัจจุบัน โดยไม่ข้ามแถวว่างที่ถูกต้องที่สุดท้ายของแผ่นงาน

ตัววินิจฉัยแถว - การเดินทาง

func (rows *Rows) Next() bool

คืนค่า true ถ้ามีค่าในแถวถัดไป

ตัววินิจฉัยแถว - การจัดการข้อผิดพลาด

func (rows *Rows) Error() error

คืนค่า error เมื่อเกิดข้อผิดพลาดขณะค้นหาแถวถัดไป

ตัววินิจฉัยแถว - อ่านคุณสมบัติของแถว

func (rows *Rows) GetRowOpts() RowOpts

คืนค่าคุณสมบัติของแถวปัจจุบัน เช่น ความสูงของแถว การมองเห็น และ ID สไตล์

ตัววินิจฉัยแถว - ปิดการโยงข้อมูล

func (rows *Rows) Close() error

ปิดการโยงข้อมูลและทำความสะอาดแคชดิสก์ระบบที่อาจเกิดขึ้นเมื่อเปิดแผ่นงาน

ค้นหาในชีท

func (f *File) SearchSheet(sheet, value string, reg ...bool) ([]string, error)

รับพิกัดโดยขึ้นอยู่กับชื่อ WorkSheet ที่กำหนด, ค่าเซลล์ หรือ regular expression ที่กำหนด. ฟังก์ชันนี้รองรับการค้นหาที่ตรงกันเท่านั้นของตัวเลขและตัวหนังสือ, ไม่รองรับผลลัพธ์การคำนวณ, ตัวเลขที่จัดรูปแบบ, และการค้นหาเงื่อนไข หากผลลัพธ์การค้นหาเป็นเซลล์รวม จะส่งคืนพิกัดของมุมบนซ้ายของพื้นที่ที่รวมเอาไว้.

ตัวอย่างเช่น ค้นหาพิกัดของค่า 100 ในชีทที่ชื่อ Sheet1:

result, err := f.SearchSheet("Sheet1", "100")

ตัวอย่างเช่น ค้นหาพิกัดของค่าตัวเลขในช่วง 0-9 ในชีทที่ชื่อ Sheet1:

result, err := f.SearchSheet("Sheet1", "[0-9]", true)

ป้องกันชีท

func (f *File) ProtectSheet(sheet string, opts *SheetProtectionOptions) error

ป้องกันผู้ใช้อื่นไม่ให้เปลี่ยนแปลง, ย้าย, หรือลบข้อมูลในชีทโดยประมาณ. ฟิลด์ที่เลือกได้ AlgorithmName รองรับการระบุอัลกอริทึมแฮชเช่น XOR, MD4, MD5, SHA-1, SHA-256, SHA-384, หรือ SHA-512. หากไม่ระบุอัลกอริทึมแฮช, จะใช้อัลกอริทึม XOR โดยค่าเริ่มต้น. ตัวอย่างเช่น การตั้งค่าการป้องกันด้วยรหัสผ่านสำหรับชีทที่ชื่อว่า Sheet1 โดยอนุญาตให้เลือกเซลล์ที่ล็อค, เลือกเซลล์ที่ปลดล็อค, และสถานการณ์แก้ไข:

Protect Sheet

err := f.ProtectSheet("Sheet1", &excelize.SheetProtectionOptions{
    AlgorithmName:       "SHA-512",
    Password:            "password",
    SelectLockedCells:   true,
    SelectUnlockedCells: true,
    EditScenarios:       true,
})

SheetProtectionOptions กำหนดค่าตัวเลือกสำหรับป้องกันชีท.

type SheetProtectionOptions struct {
    AlgorithmName       string
    AutoFilter          bool
    DeleteColumns       bool
    DeleteRows          bool
    EditObjects         bool
    EditScenarios       bool
    FormatCells         bool
    FormatColumns       bool
    FormatRows          bool
    InsertColumns       bool
    InsertHyperlinks    bool
    InsertRows          bool
    Password            string
    PivotTables         bool
    SelectLockedCells   bool
    SelectUnlockedCells bool
    Sort                bool
}

ยกเลิกการป้องกันชีท

func (f *File) UnprotectSheet(sheet string, password ...string) error

ยกเลิกการป้องกันชีทตามชื่อชีทที่กำหนด, และระบุพารามิเตอร์รหัสผ่านที่สองเพื่อยกเลิกการป้องกันชีทโดยการตรวจสอบรหัสผ่าน.

ลบคอลัมน์

func (f *File) RemoveCol(sheet, col string) error

ลบคอลัมน์ที่ระบุตามชื่อชีทที่กำหนดและชื่อคอลัมน์. ตัวอย่างเช่น ลบคอลัมน์ C ในชีทที่ชื่อ Sheet1:

err := f.RemoveCol("Sheet1", "C")

โปรดใช้วิธีนี้ด้วยความระมัดระวัง เนื่องจากนี้จะมีผลต่อการเปลี่ยนแปลงของสูตรเดิม, แผนภูมิ, และการอ้างอิงทรัพยากรอื่น ๆ ในชีท. หากชีทมีค่าที่อ้างถึง, การใช้วิธีนี้อาจทำให้เกิดข้อผิดพลาดของไฟล์เมื่อเปิดด้วยโปรแกรม Excel หลังการใช้. Excelize ในปัจจุบันรองรับการอัพเดตบางส่วนเท่านั้นของค่าที่อ้างอิงในชีท.

ลบแถว

func (f *File) RemoveRow(sheet string, row int) error

ลบแถวที่ระบุตามชื่อชีทที่กำหนดและหมายเลขแถว. ตัวอย่างเช่น ลบแถวที่ 3 ในชีทที่ชื่อ Sheet1:

err := f.RemoveRow("Sheet1", 3)

โปรดใช้วิธีนี้ด้วยความระมัดระวัง เนื่องจากนี้จะมีผลต่อการเปลี่ยนแปลงของสูตรเดิม, แผนภูมิ, และการอ้างอิงทรัพยากรอื่น ๆ ในชีท. หากชีทมีค่าที่อ้างถึง, การใช้วิธีนี้อาจทำให้เกิดข้อผิดพลาดของไฟล์เมื่อเปิดด้วยโปรแกรม Excel หลังการใช้. Excelize ในปัจจุบันรองรับการอัพเดตบางส่วนเท่านั้นของค่าที่อ้างอิงในชีท.

กำหนดค่าตามคอลัมน์

func (f *File) SetSheetCol(sheet, cell string, slice interface{}) error

กำหนดค่าตามคอลัมน์ตามชื่อชีทที่กำหนด, พิกัดเริ่มต้น, และอ้างอิงประเภท slice. ตัวอย่างเช่น กำหนดค่าตามคอลัมน์บนคอลัมน์ B ของชีทที่ชื่อ Sheet1, โดยมีเซลล์ B6 เป็นพิกัดเริ่มต้น:

err := f.SetSheetCol("Sheet1", "B6", &[]interface{}{"1", nil, 2})

กำหนดโดยแถว

func (f *File) SetSheetRow(sheet, cell string, slice interface{}) error

กำหนดค่าตามแถวโดยขึ้นอยู่กับชื่อของแผ่นงานที่กำหนดไว้ ตั้งแต่พิกัดเริ่มต้น และการอ้างอิงถึงประเภทของ slice ฟังก์ชันนี้ปลอดภัยสำหรับการใช้งานพร้อมกัน ตัวอย่างเช่น ในแถวที่ 6 ของแผ่นงานที่มีชื่อว่า Sheet1 ค่าสามารถถูกกำหนดโดยแถวตั้งแต่เซลล์ B6:

err := f.SetSheetRow("Sheet1", "B6", &[]interface{}{"1", nil, 2})

แทรกตัวแบ่งหน้า

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

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

ลบตัวแบ่งหน้า

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

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

กำหนดขนาดของแผ่นงาน

func (f *File) SetSheetDimension(sheet string, rangeRef string) error

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

รับขนาดของแผ่นงาน

func (f *File) GetSheetDimension(sheet string) (string, error)

ได้รับพื้นที่ที่ใช้งานของแผ่นงานที่ระบุขึ้นอยู่กับชื่อของแผ่นงานที่กำหนดไว้