【Go, golang】 Microsoft Excel에서도 Numbers에서도 csv 파일을 문자화하지 않도록 작성한다.
전치
Go에서 csv를 다루는 기사는 Qiita에서도 여러가지 있습니다만, 반 자신의 메모 대신이라고 하는 것으로.
Microsoft Excel에서도 Numbers에서도 csv 파일을 열 때 깨지지 않는 파일을 만들어 출력하도록 합니다.
샘플은 비교적 본 적도 있는 것이라고 생각합니다.
환경
go version: 1.11.4
os: MacOS
샘플 코드
package main
import (
"encoding/csv"
"os"
"log"
"bufio"
)
func main() {
// ファイルがあれば開く、なければ新しく作成するようにしています。
file, err := os.OpenFile("new_company.csv", os.O_RDWR|os.O_CREATE, 0755)
if err != nil {
log.Fatal(err)
}
// Excelでも見れるようにするには、BOM付きUTF8にする必要があるので、fileの先頭にBOMを付与。
bw := bufio.NewWriter(file)
bw.Write([]byte{0xEF, 0xBB, 0xBF})
// csvデータ
records := [][]string{
{"id", "name", "address"},
{"1", "Softbank", "日本のどこか"},
{"2", "au", "多分日本のどこか"},
{"3", "Docomo", "おそらく日本のどこか"},
}
w := csv.NewWriter(bw)
// w.Writeで1行づつやってもいいですが、一括でデータを取り込みできるので、今回はWriteAllにしました。
// 必要に応じて使ってください。なお、WriteAllの場合、w.Flush()をしなくて良いのでわずかですがコード短縮になる(...?)
w.WriteAll(records)
if err := w.Error(); err != nil {
log.Fatal(err)
}
// 最後にfileを閉じます。
if err := file.Close(); err != nil {
log.Fatal(err)
}
}
개인 포인트
bufio를 사용하여 BOM 부여
htps : // 이 m / t bq - 어 - rs / ms / 03 27 예 b6f46b580525
야
htps : // 핀조ぉ. 기주 b. 이오/2017/03/29/우 tf8-csv ぃ th-보 m 온-고 g. HTML
참고로 시도해 보았습니다.
역시 csv 데이터가 되는 데이터 앞에 BOM을 부여하는 곳일까요?
어떤 느낌이 들었는가
위의 샘플 코드에서 go run main.go
파일을 생성 한 후,
less 명령으로 내용을 보면,
<U+FEFF>id,name,address
1,Softbank,日本のどこか
2,au,多分日本のどこか
3,Docomo,おそらく日本のどこか
new_company.csv (END)
와 같이, 선두에 BOM이 붙어 있는 것을 알 수 있습니다 (cat 커멘드라고 붙어 있는지 모른다).
Cot Editor에서 파일을 열면 ...
엔코팅의 곳이 「Unicode(UTF-8) B…
Mac의 Microsoft Excel에서 열어 보면 먼저 텍스트 파일 마법사 창이 표시되지만,
구분자의 취급 등을 선택하고 「완료」를 누르면,
이런 느낌으로 볼 수 있습니다. ...좋았다.
Reference
이 문제에 관하여(【Go, golang】 Microsoft Excel에서도 Numbers에서도 csv 파일을 문자화하지 않도록 작성한다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/69incat/items/cac062734e6740c43659
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
package main
import (
"encoding/csv"
"os"
"log"
"bufio"
)
func main() {
// ファイルがあれば開く、なければ新しく作成するようにしています。
file, err := os.OpenFile("new_company.csv", os.O_RDWR|os.O_CREATE, 0755)
if err != nil {
log.Fatal(err)
}
// Excelでも見れるようにするには、BOM付きUTF8にする必要があるので、fileの先頭にBOMを付与。
bw := bufio.NewWriter(file)
bw.Write([]byte{0xEF, 0xBB, 0xBF})
// csvデータ
records := [][]string{
{"id", "name", "address"},
{"1", "Softbank", "日本のどこか"},
{"2", "au", "多分日本のどこか"},
{"3", "Docomo", "おそらく日本のどこか"},
}
w := csv.NewWriter(bw)
// w.Writeで1行づつやってもいいですが、一括でデータを取り込みできるので、今回はWriteAllにしました。
// 必要に応じて使ってください。なお、WriteAllの場合、w.Flush()をしなくて良いのでわずかですがコード短縮になる(...?)
w.WriteAll(records)
if err := w.Error(); err != nil {
log.Fatal(err)
}
// 最後にfileを閉じます。
if err := file.Close(); err != nil {
log.Fatal(err)
}
}
개인 포인트
bufio를 사용하여 BOM 부여
htps : // 이 m / t bq - 어 - rs / ms / 03 27 예 b6f46b580525
야
htps : // 핀조ぉ. 기주 b. 이오/2017/03/29/우 tf8-csv ぃ th-보 m 온-고 g. HTML
참고로 시도해 보았습니다.
역시 csv 데이터가 되는 데이터 앞에 BOM을 부여하는 곳일까요?
어떤 느낌이 들었는가
위의 샘플 코드에서 go run main.go
파일을 생성 한 후,
less 명령으로 내용을 보면,
<U+FEFF>id,name,address
1,Softbank,日本のどこか
2,au,多分日本のどこか
3,Docomo,おそらく日本のどこか
new_company.csv (END)
와 같이, 선두에 BOM이 붙어 있는 것을 알 수 있습니다 (cat 커멘드라고 붙어 있는지 모른다).
Cot Editor에서 파일을 열면 ...
엔코팅의 곳이 「Unicode(UTF-8) B…
Mac의 Microsoft Excel에서 열어 보면 먼저 텍스트 파일 마법사 창이 표시되지만,
구분자의 취급 등을 선택하고 「완료」를 누르면,
이런 느낌으로 볼 수 있습니다. ...좋았다.
Reference
이 문제에 관하여(【Go, golang】 Microsoft Excel에서도 Numbers에서도 csv 파일을 문자화하지 않도록 작성한다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/69incat/items/cac062734e6740c43659
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<U+FEFF>id,name,address
1,Softbank,日本のどこか
2,au,多分日本のどこか
3,Docomo,おそらく日本のどこか
new_company.csv (END)
Reference
이 문제에 관하여(【Go, golang】 Microsoft Excel에서도 Numbers에서도 csv 파일을 문자화하지 않도록 작성한다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/69incat/items/cac062734e6740c43659텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)