Browse Source

脚本按照顺序拼接,旧文件按照 utf8 格式清空

master
viviman 3 years ago
parent
commit
a1f66a84d0
  1. 110
      golang_learn/data_office/get_hy_sql/main.go

110
golang_learn/data_office/get_hy_sql/main.go

@ -1,118 +1,12 @@
package main
/*
思路:
首先:配置文件,若不存在生成配置文件,生成配置文件
其次:通过配置获取数据库链接 ,并链接和查询语句
最后:将查询语句生成excel
思路: 脚本按照顺序拼接旧文件按照 utf8 格式清空
*/
import (
"database/sql"
"fmt"
"strconv"
"strings"
"time"
"github.com/360EntSecGroup-Skylar/excelize"
_ "github.com/go-sql-driver/mysql"
)
import ()
//存在所有对象信息 - 集合
func main() {
db, _ := sql.Open("mysql", "root:admin@tcp(127.0.0.1:35017)/hy_qggwy?charset=utf8")
// QuerySQL(db, "select A0824 学位名称,count(1) 数量 from a08 where A0824 is not null and A0824 <> '' group by A0824")
QuerySQL(db, "select (select code_name from code_value where CODE_VALUE=A0827 and CODE_TYPE='GB16835') 学位名称,count(1) 数量 from a08 where A0827 is not null and A0827 <> '' group by A0827")
}
// 获取表数据
func QuerySQL(db *sql.DB, sqlStr string) {
xlsx := excelize.NewFile()
rows, _ := db.Query(sqlStr)
defer rows.Close()
cloumns, _ := rows.Columns()
values := make([]sql.RawBytes, len(cloumns))
scanArgs := make([]interface{}, len(values))
for i := range values {
scanArgs[i] = &values[i]
}
isFrist := true
rowAfter := 1
colBefor := ""
colAfter := ""
for rows.Next() {
colBefor = ""
_ = rows.Scan(scanArgs...)
var value string
for i, col := range values {
if col == nil {
value = "NULL"
} else {
value = string(col)
}
colBefor = strings.Replace(ASCIINext(colBefor), " ", "", -1)
colAfter = colBefor + strconv.Itoa(rowAfter)
if isFrist {
colAfter = colBefor + "1"
xlsx.SetCellValue("Sheet1", colAfter, cloumns[i])
colAfter = colBefor + "2"
xlsx.SetCellValue("Sheet1", colAfter, value)
rowAfter = 2
} else {
xlsx.SetCellValue("Sheet1", colAfter, value)
}
//fmt.Print(cloumns[i], ": ", value) //输出字段名 - 值
}
isFrist = false
rowAfter += 1
}
var path string
path = "./查询结果-" + time.Now().Format("2006102150405") + ".xlsx"
errExcel := xlsx.SaveAs(path)
if errExcel != nil {
fmt.Println(errExcel)
}
}
// 获取行向单元格的下格子
func ASCIINext(strFrist string) string {
if strFrist == "" {
return "A"
}
switch len(strFrist) {
case 1:
if strFrist == "Z" {
return "AA"
} else {
return string(strFrist[0] + 1)
}
case 2:
if strFrist == "ZZ" {
return "AAA"
} else {
if strFrist[1:] == "Z" {
return string(strFrist[0]+1) + "A"
} else {
return strFrist[:1] + string(strFrist[1]+1)
}
}
case 3:
if strFrist == "ZZZ" {
return "AAAA"
} else {
if strFrist[2:] == "Z" {
if strFrist[1:2] == "Z" {
return string(strFrist[0]+1) + "AA"
} else {
return strFrist[:1] + string(strFrist[1]+1) + "A"
}
} else {
return strFrist[:2] + string(strFrist[2]+1)
}
}
default:
return "A"
}
}

Loading…
Cancel
Save