作用:工作需要在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)
}
}
网友评论