Golang操作Excel的模块Excelize学习总结-工具函数

时间:2025-03-08 07:52:51
package main import ( "fmt" "/xuri/excelize/v2" ) func main() { // 打开已存在的文件 wb, err := excelize.OpenFile("../excel_files/TMP_06.xlsx") if err != nil { fmt.Println(err) } fmt.Printf(": %v\n", wb.SheetCount) // 新建文件 file := excelize.NewFile() fmt.Printf(": %v\n", file.SheetCount) // 拆分单元格坐标 col, row, err := excelize.SplitCellName("AA10") if err != nil { fmt.Println(err) } fmt.Println(col, row) // 通过行列名称组合单元格坐标 cell, err := excelize.JoinCellName(col, row) if err != nil { fmt.Println(err) } fmt.Printf("cell: %v\n", cell) // 列名转索引 col_n, err := excelize.ColumnNameToNumber("AA") if err != nil { fmt.Println(err) } fmt.Printf("col_n: %v\n", col_n) // 列索引转列名 col_nm, err := excelize.ColumnNumberToName(100) if err != nil { fmt.Println(err) } fmt.Printf("col_nm: %v\n", col_nm) // 坐标字符串转索引 行,列的数字索引 coln, rown, err := excelize.CellNameToCoordinates("A1") if err != nil { fmt.Println(err) } fmt.Printf("rown: %v\n", rown) fmt.Printf("coln: %v\n", coln) // 行列索引转坐标字符串 cell_nm, err := excelize.CoordinatesToCellName(2, 2) if err != nil { fmt.Println(err) } fmt.Printf("cell_nm: %v\n", cell_nm) cell_nm2, err := excelize.CoordinatesToCellName(2, 2, true) if err != nil { fmt.Println(err) } fmt.Printf("cell_nm2: %v\n", cell_nm2) // $C$3 绝对坐标 // 补充一些前面文档遗漏的 // 设置行样式 style_idx, err := wb.NewStyle(`{"border":[{ "type":"top", "color":"#000000", "style":1 },{ "type":"left", "color":"#000000", "style":1 },{ "type":"right", "color":"#000000", "style":1 },{ "type":"bottom", "color":"#000000", "style":1 } ],"font":{ "size":12, "color":"#000000", "family":"仿宋", "bold":true },"fill":{ "type":"gradient", "color":["#00aa00","#00aa00"], "shading":1 },"alignment":{ "horizontal":"center", "vertical":"center" } }`) if err != nil { fmt.Println("创建样式", err) } if err := wb.SetColStyle("Sheet1", "A:G", style_idx); err != nil { fmt.Println(err) } // 设置列宽 if err := wb.SetColWidth("Sheet1", "A", "G", 18); err != nil { fmt.Println(err) } // 设置行高 if err := wb.SetRowHeight("Sheet1", 1, 7); err != nil { fmt.Println(err) } // 创建表格 sheet_idx := wb.NewSheet("Sheet2") wb.SetActiveSheet(sheet_idx) if err := wb.AddTable("Sheet2", "A1", "C10", ""); err != nil { fmt.Println(err) } // 应用样式 table_style 引用excel中的样式 /*table_style 的取值范围 TableStyleLight1 - TableStyleLight21 TableStyleMedium1 - TableStyleMedium28 TableStyleDark1 - TableStyleDark11 */ /* show_row_stripes 是否奇偶行不同颜色显示 show_col_stripes 奇偶列 */ if err := wb.AddTable("Sheet2", "F1", "H10", `{ "table_name":"table", "table_style":"TableStyleMedium2", "show_first_column":true, "show_row_stripes":true }`); err != nil { fmt.Println(err) } // 设置筛选,在已有数据的基础上加上筛选 if err := wb.AutoFilter("Sheet2", "J6", "N20", ``); err != nil { fmt.Println(err) } // 先设置列样式 idx, err := wb.NewStyle(`{"number_format":1}`) if err != nil { fmt.Println(err) } if err := wb.SetColStyle("Sheet1", "Q", idx); err != nil { fmt.Println(err) } // 设置过滤条件 只是会设置筛选条件,但是并不会筛选 if err := wb.AutoFilter("Sheet1", "O1", "T6", `{"column":"Q","expression":"x >= 20 "}`); err != nil { fmt.Println(err) } // 保存 wb.Save() }