package mainimport ( "encoding/json" "errors" "fmt" "github.com/xuri/excelize/v2" "os" "path" "time")// 参考文档:https://www.bookstack.cn/read/excelize-v2.0/spilt.4.1.mdfunc ReadContent(path string, title []string) (*[][]string, error) { //关上文件 f, err := excelize.OpenFile(path) if err != nil { return nil, err } rows, err := f.GetRows("Sheet1") var list [][]string //对sheet1中的内容进行操作 for i, row := range rows { //题目不操作 if i == 0 { list = append(list, title) //continue } list = append(list, row) } fmt.Println(list) return &list, nil}//AppendSaveExcel 追加/* dirPath := "log" fileName := "Book1.xlsx" dataList := [][]interface{}{{"姓名", "电话", "公司", "职位", "退出工夫"}, {1, 2, "刘犇,刘犇,刘犇", "4", "5"}} AppendSaveExcel(dirPath, fileName, &dataList) //会存到log/Book1.xlsx里 文件没有创立并写入,有追加写*/func AppendSaveExcel(dirPath, fileName string, dataList *[][]interface{}) (err error) { if len(*dataList) == 0 { return errors.New("数据不能为空") } //不存在创立目录 _ = CreateFolder(dirPath, true) activeSheetName := "Sheet1" //文件门路 fileNamePath := path.Join(dirPath, fileName) // 从第几行开始写数据 rowNum := 0 // excel最初数据所有行数 lastLineNum := 0 var f *excelize.File // 创立excel //判断文件是否存在,不存在新建 fileExistsBool := FileExists(fileNamePath) if !fileExistsBool { f = excelize.NewFile() } else { // 追加写入excel f, _ = excelize.OpenFile(fileNamePath) rows, _ := f.GetRows(activeSheetName) lastLineNum = len(rows) //找到最初一行 } // Create a new sheet. index, _ := f.NewSheet(activeSheetName) // 设置工作簿的默认工作表 f.SetActiveSheet(index) //设置列宽度为16 var ColAbc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" //须要存入数据的列长度 dataColLen := len((*dataList)[0]) if dataColLen > 26 { err = f.SetColWidth("Sheet1", "A", "Z", 16) } else { err = f.SetColWidth("Sheet1", "A", ColAbc[dataColLen-1:dataColLen], 16) } if err != nil { fmt.Println(err) return errors.New(fmt.Sprintf("f.SetColWidth failed, err:%v", err)) } // 从文件内容尾行写入 rowNum = lastLineNum // 循环按行赋值 for _, list := range *dataList { rowNum += 1 //按行赋值 从aN开始按行赋值 f.SetSheetRow(activeSheetName, fmt.Sprintf("A%d", rowNum), &list) } // 保留excel if err := f.SaveAs(fileNamePath); err != nil { fmt.Println(err) return errors.New(fmt.Sprintf("save file failed, path:(%s)", fileNamePath)) } return nil}func CreateFolder(p string, ignoreExists bool) error { _, FolderExists := os.Stat(p) if FolderExists != nil && ignoreExists == false { err := errors.New("folder exists") return err } if FolderExists == nil { err := os.MkdirAll(p, os.ModePerm) if err != nil { return err } } return nil}func FileExists(filename string) bool { info, err := os.Stat(filename) if os.IsNotExist(err) { return false } if info == nil { return false } return true}func main() { var title = []string{"ip", "保健组", "lables", "大城市"} ll, _ := ReadContent("./data/target.xlsx", title) //fmt.Println(ll) b, _ := json.Marshal(&ll) var aa *[][]interface{} _ = json.Unmarshal(b, &aa) lname := fmt.Sprintf("fftest_%s.xlsx", time.Now().Format("20060102150405")) AppendSaveExcel("./data", lname, aa)}