美文网首页
excel一列重复筛选

excel一列重复筛选

作者: 又增加了奇奇怪怪的知识 | 来源:发表于2020-11-03 01:21 被阅读0次

    作用:工作需要在excel中对一列数据进行重复筛查。自己写的逻辑,操作excel使用的第三方的库。

    package main
    
    import (
        "bufio"
        "fmt"
        "github.com/Luxurioust/excelize"
        "os"
        "strconv"
        "strings"
    )
    
    func main() {
        fmt.Println("start....")
        // 打开excel文件
        f, err := excelize.OpenFile("instance.xlsx")
        if err != nil {
            fmt.Println(err)
        }
    
        //读取表头
        var table_head string
        for {
            reader := bufio.NewReader(os.Stdin)
            fmt.Print("请输入操作的列号:(如A)")
            in, _ := reader.ReadString('\n')
            in = strings.Replace(in, "\n", "", -1)
            value, err := f.GetCellValue("永顺机器", in+(strconv.Itoa(1)))
            if err != nil {
                fmt.Println(err)
            }
            if value != "" {
                fmt.Println(value)
                fmt.Print("是否选择此列请确认操作:y 确认 / r 重选")
                sur, _ := reader.ReadString('\n')
                sur = strings.Replace(sur, "\n", "", -1)
                if sur == "y" {
                    table_head = in
                    break
                }
            }else {
                fmt.Println("抱歉这行未发现数据")
            }
        }
    
    
        //读取该列数据
        var data [1385] string
        for i := 1; i < 1385; i++ {
            value, err := f.GetCellValue("永顺机器", table_head+(strconv.Itoa(i)))
            if value == "" {
                fmt.Printf("当前一共操作了:%d行", (i - 1))
                return
            }
            data[i-1] = value
            if err != nil {
                fmt.Println(err)
            }
        }
    
        //对数组开始遍历和查找所有重复母鸡
        re_num := 0
        for i:=0; i<len(data); i++ {
            if strings.Contains(data[i], "母机"){
                continue
            }
            for j:=i; j<len(data)-1; j++ {
                if strings.Contains(data[j+1], "母机"){
                    continue
                }
    
                if data[i] == data[j+1] {
                    data[j+1] = "母机实例"+(strconv.Itoa(i))
                    re_num += 1
                }
    
                if j == len(data)-2 {
                    data[i] = "母机实例"+(strconv.Itoa(i))
                }
            }
        }
        // 写入母机数据
        for i:=0; i<len(data); i++ {
            res := f.SetCellValue("永顺机器", "M"+(strconv.Itoa(i+1)),data[i])
            if res !=nil  {
                fmt.Println(res)
            }
        }
        err = f.SaveAs("./instance.xlsx")
        if err != nil {
            fmt.Println(err)
        }
    
    }
    
    
    
    
    

    相关文章

      网友评论

          本文标题:excel一列重复筛选

          本文链接:https://www.haomeiwen.com/subject/ucpvyktx.html