excel一列重复筛选

2020-11-03  本文已影响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)
    }

}




上一篇下一篇

猜你喜欢

热点阅读