Запись в csv идет в одну колонку
Всем привет! Не могу разобраться почему при записи данных из БД в csv файл все пишется в одну колонку, как записать все полученное в разные колонки? Ну и если кто знает как еще проставить заголовки в колонках(нагуглить не смог) - заранее спсибо
делал как написано в документации
В rowQery получаю данные из бд и далее:
введите сюда код
err1 := rowQery.Scan(&Id1, &Id2, &Id3, &Id4)
if err1 != nil {
log.Println(err1.Error())
}
records := [][]string{
{strconv.Itoa(count), Id1, Id2, Id3, Id4},
}
fmt.Println(err1)
count++
w := csv.NewWriter(csvFile)
for _, record := range records {
if err := w.Write(record); err != nil {
log.Fatalln(err)
}
}
w.Flush()
if err := w.Error(); err != nil {
log.Fatal(err)
}
}
Ответы (1 шт):
В русскоязычном excel для формата csv разделителем столбцов является не запятая , а точка с запятой ;.
Особенность локализации.
В документации пакета указано, что разделителем по умолчанию является запятая:
type Writer struct { Comma rune // Field delimiter (set to ',' by NewWriter) UseCRLF bool // True to use \r\n as the line terminator // contains filtered or unexported fields }
https://golang.org/pkg/encoding/csv/
Видно, что у райтера есть публичное поле Comma типа rune, в котором и храниться разделить. Попробуйте поменять его. Никогда не пользовался рунами, но думаю что-то подобное:
w := csv.NewWriter(csvFile)
delimiter, _ := utf8.DecodeRuneInString(";")
w.Comma = delimiter

