dev/etc
CSV write할때 0으로 시작하는 숫자 저장하기 [Go]
crscnt
2020. 11. 18. 21:00
코드를 이용하여 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
}
cf. 코드 기준으로 escape문이 추가된 것이므로 실제 csv 파일에서 작성할때는 ="01012345678"을 적으면 된다.
728x90