티스토리 뷰

코드를 이용하여 CSV 파일을 작성할때 전화번호와 같이 0으로 시작하는 숫자를 CSV파일 또는 엑셀에 write하는 경우 맨앞의 0이 사라지는 경우가 발생한다.

예를 들어 "01012345678"을 저장하고 싶을 때, 저장 후 CSV파일을 열어보면 "1012345678"가 입력되어 있는 경우가 있는데,

이 경우 "=\"01012345678\"" 형식으로 저장하면 원하는 값을 저장할 수 있다.

package main

import (
	"encoding/csv"
	"log"
	"os"
	"path"
	"time"
)

func main() {
	csvFilename := "result_" + time.Now().Format("2006-01-02_15_04_05") + ".csv"
	csvPath := path.Join("./" + csvFilename)
	os.Remove(csvPath)
	tmpXlxsFile, err := os.Create(csvPath)
	if err != nil {
		log.Println("file created error occured : ", err)
		return
	}

	csvWriter := csv.NewWriter(tmpXlxsFile)

	if err := csvBaseFormat(csvWriter); err != nil {
		log.Println("csv base format writer error occured : ", err)
		return
	}

	// row := []string{"01012345678"} => csv 저장결과: 1012345678
	row := []string{"=\"01012345678\""} // csv 저장결과: 01012345678
	csvWriter.Write(row)
	csvWriter.Flush()
}

func csvBaseFormat(writer *csv.Writer) (err error) {
	baseFormat := []string{"PhoneNumber"}
	err = writer.Write(baseFormat)
	return
}

"01012345678"을 저장한 경우
"=\"01012345678\"을 저장한 경우

 

cf. 코드 기준으로 escape문이 추가된 것이므로 실제 csv 파일에서 작성할때는 ="01012345678"을 적으면 된다. 

728x90
댓글