golang_excel: go处理excel相关数据

这里使用的excelize包
github地址 | 相关文档

excel文件为test_write.xlsx,其中数据如下:

姓名 年龄
狗子1 18
狗子2 19
狗子3
狗子4
狗子5 22
狗子6 23
狗子7 24
狗子8 25
狗子9
狗子10 27

需求
输出错误记录的文件,其中年龄为空的记录留下,正确的那行记录删除。

处理方法
因为读取数据为值传递的原因,使用goto命令进行处理

package main

import (
	"fmt"
	"github.com/360EntSecGroup-Skylar/excelize"
	"log"
)

func main() {
	f, err := excelize.OpenFile("test_write.xlsx")
	if err != nil {
		log.Println("err:", err)
	}

Label:
	rows := f.GetRows("Sheet1")
	for i := 1; i < len(rows); i++ {
		rows = f.GetRows("Sheet1")
		fmt.Println("年龄:", rows[i][1])
		if rows[i][1] == "" {
			continue
		}
		fmt.Println("----", i)
		testRemoveRow(f, i)
		err = f.Save()
		if err != nil {
			log.Println("save err:", err)
		}
		i--
		goto Label
	}

}

func testRemoveRow(f *excelize.File, row int) {
	f.RemoveRow("Sheet1", row)
	fmt.Println("remove row:", row)
}

func create() {
	xlsx := excelize.NewFile()

	index := xlsx.NewSheet("Sheet1")
	xlsx.SetCellValue("Sheet1", "A1", "姓名")
	xlsx.SetCellValue("Sheet1", "B1", "年龄")
	xlsx.SetCellValue("Sheet1", "A2", "狗子")
	xlsx.SetCellValue("Sheet1", "B2", "18")
	// Set active sheet of the workbook.
	xlsx.SetActiveSheet(index)
	// Save xlsx file by the given path.
	err := xlsx.SaveAs("test_write.xlsx")
	if err != nil {
		fmt.Println(err)
	}
}

Output:
姓名 年龄
狗子3
狗子4
狗子9

你可能感兴趣的:(业务,go,excel,golang)