123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257 |
- package main
- import (
- "encoding/json"
- "fmt"
- "github.com/tealeg/xlsx"
- "strings"
- )
- //
- var origin_file = "C:\\Users\\tangs\\Desktop\\表1_教师招聘_国考合并_替换代码2\\表2_国考_20190322192526接受替换.xlsx"
- var reference_file = "C:\\Users\\tangs\\Desktop\\表1_教师招聘_国考合并_替换代码2\\表1_国考_代号转换表.xlsx"
- var result_file = "./result2.xlsx"
- //var origin_file = "C:\\Users\\tangs\\Desktop\\表1_教师招聘_国考合并_替换代码\\表2_招聘3-20180204145207_接受替换.xlsx"
- //var reference_file = "C:\\Users\\tangs\\Desktop\\表1_教师招聘_国考合并_替换代码\\表1_教师招聘_国考合并_替换代码.xlsx"
- //var result_file = "./result.xlsx"
- func compose_reference_file(reference_file string) map[string]map[string]string {
- r_f, err := xlsx.OpenFile(reference_file)
- if err != nil {
- panic(err)
- }
- var result = map[string]map[string]string{}
- sheet := r_f.Sheets[0]
- for row_index, row := range sheet.Rows {
- if row_index == 0 {
- continue
- }
- var key = ""
- for cell_index, cell := range row.Cells {
- value := strings.TrimSpace(cell.Value)
- value = strings.Replace(value, "—", "-", -1)
- //value = strings.Replace(value, ",", ",", -1)
- if cell_index == 0 {
- key = value
- if _, ok := result[key]; !ok {
- result[key] = map[string]string{}
- }
- continue
- }
- if cell_index == 1 {
- result[key]["first"] = value
- continue
- }
- if cell_index == 2 {
- result[key]["second"] = value
- continue
- }
- }
- }
- return result
- }
- func compose_reference_file2(reference_file string) map[string]string {
- o_f, err := xlsx.OpenFile(reference_file)
- if err != nil {
- panic(err)
- }
- sheet := o_f.Sheets[0]
- var result = map[string]string{}
- for row_index, row := range sheet.Rows {
- if row_index == 0 {
- continue
- }
- var key = ""
- //fmt.Println("first", row.Cells[0].Value, row.Cells[1].Value)
- for cell_index, cell := range row.Cells {
- value := strings.TrimSpace(cell.Value)
- if cell_index == 0 {
- fmt.Println("key ---- " + value)
- key = value
- continue
- }
- if cell_index == 1 {
- fmt.Println("keeeey --- " + key + " --- " + value)
- result[key] = value
- }
- }
- }
- return result
- }
- func swap(origin_file, reference_file string) {
- //
- //reference := compose_reference_file(reference_file)
- reference := compose_reference_file2(reference_file)
- bys, _ := json.Marshal(reference)
- fmt.Println(string(bys))
- o_f, err := xlsx.OpenFile(origin_file)
- if err != nil {
- panic(err)
- }
- sheet := o_f.Sheets[0]
- for row_index, row := range sheet.Rows {
- if row_index == 0 {
- continue
- }
- for cell_index, cell := range row.Cells {
- if cell_index != 9 {
- continue
- }
- value := strings.TrimSpace(cell.Value)
- value = strings.Replace(value, "—", "-", -1)
- value = strings.Replace(value, ",", ",", -1)
- new_value := value
- //new_value = real_swap(value, reference, true)
- //new_value = real_swap(new_value, reference, false)
- new_value = real_swap2(value, reference)
- fmt.Println(new_value)
- cell.Value = new_value
- }
- }
- err = o_f.Save(result_file)
- if err != nil {
- panic(err)
- }
- }
- func real_swap2(value string, reference map[string]string) string {
- multi := strings.Split(value, ",")
- temp_value := ""
- for _, single_value := range multi {
- ref, ok := reference[single_value]
- if !ok {
- temp_value = temp_value + single_value + ","
- continue
- }
- temp_value = temp_value + ref + ","
- }
- return strings.TrimSuffix(temp_value, ",")
- }
- func real_swap(value string, reference map[string]map[string]string, is_log bool) string {
- multi := strings.Split(value, ",")
- swap_value := value
- temp_value := ""
- for _, single_value := range multi {
- ref, ok := reference[single_value]
- if !ok {
- if is_log {
- fmt.Println(single_value + "===" + value)
- }
- single_value = add_prefix_zero(single_value)
- temp_value = temp_value + single_value + ","
- continue
- }
- if reference[single_value]["second"] != "" {
- temp_value = temp_value + ref["second"] + ","
- continue
- }
- if reference[single_value]["first"] != "" {
- temp_value = temp_value + ref["first"] + ","
- continue
- }
- }
- if temp_value != "" {
- swap_value = strings.TrimSuffix(temp_value, ",")
- }
- return swap_value
- }
- func add_prefix_zero(value string) string {
- multi := strings.Split(value, "-")
- var first = ""
- var second = ""
- var last = ""
- if len(multi) == 2 {
- first = multi[0]
- second = multi[1]
- if len(first) == 2 {
- first = "0" + first
- }
- if len(first) == 1 {
- first = "00" + first
- }
- if len(second) == 1 {
- second = "0" + second
- }
- if len(second) == 0 {
- second = "00" + second
- }
- last = first + "-" + second
- } else if len(multi) == 1 {
- if strings.Index(value, "-") > 0 {
- first = multi[0]
- if len(first) == 2 {
- first = "0" + first
- }
- if len(first) == 1 {
- first = "00" + first
- }
- last = first + "-00"
- }
- } else {
- last = value
- }
- return last
- }
- func check_reference_file(reference_file string) {
- r_f, err := xlsx.OpenFile(reference_file)
- if err != nil {
- panic(err)
- }
- sheet := r_f.Sheets[0]
- var mark = map[string]int{}
- var length = 0
- for index, row := range sheet.Rows {
- if index == 0 {
- continue
- }
- for cell_index, cell := range row.Cells {
- if cell_index != 0 {
- break
- }
- value := strings.TrimSpace(cell.Value)
- if value == "" {
- continue
- }
- length++
- mark[value] = mark[value] + 1
- }
- }
- fmt.Printf("xlsx length: %v, mark length: %v", length, len(mark))
- for k, v := range mark {
- if v > 1 {
- fmt.Println(k, v)
- }
- }
- }
- func main() {
- // check data in reference_file
- check_reference_file(reference_file)
- swap(origin_file, reference_file)
- }
|