Чтение значения из файла xls, но числовое значение не читается должным образом - PullRequest
0 голосов
/ 03 апреля 2019

Числовое значение из файла xls не читается правильно, но строковые значения в порядке

file, _ := xls.Open("test.xls", "utf-8")

    sheet := file.GetSheet(0)
    for r := 0; r <= (int(sheet.MaxRow)); r++ {
      row := sheet.Row(r)
      log.Println("column with numeric value: ", row.Col(0))
      log.Println("column with string value: ", row.Col(1))
    }

test.xls:

123 | test

456 | testing

выход:

column with numeric value: @

column with string value: test

column with numeric value: @

column with string value: testing

Как правильно получить числовое значение?

1 Ответ

0 голосов
/ 03 апреля 2019

На моем Ubuntu 18.04 я могу открыть файл и напечатать содержимое второго столбца

package main

import (
    "fmt"
    "github.com/extrame/xls"
    "log"
)


func main() {
if xlFile, err := xls.Open("test.xls", "utf-8"); err == nil {
    for i := 0; i < xlFile.NumSheets(); i++ {
        sheet := xlFile.GetSheet(i)
        fmt.Println(sheet.Name)
        for r := 0; r <= (int(sheet.MaxRow)); r++ {
                row := sheet.Row(r)
                log.Println("column ", row.Col(1))
        }
    }
}

}

Обратите особое внимание на индексирование Col (1).

Выходные данные

Sheet1
2019/04/03 14:28:29 column  test
2019/04/03 14:28:29 column  testi
2019/04/03 14:28:29 column  testing

Но для числового столбца я получил это

Sheet1
2019/04/03 14:27:46 column  General
2019/04/03 14:27:46 column  General
2019/04/03 14:27:46 column  General

Я сохранил тот же файл, что и xlsx.Это работает с пакетом tealeg / xlsx

import (
    "fmt"
    "github.com/tealeg/xlsx"
)

func main() {
    excelFileName := "test.xlsx"
    xlFile, err := xlsx.OpenFile(excelFileName)
    if err != nil {
        err = fmt.Errorf("can not open file!!!", err)
    return
    }
    for _, sheet := range xlFile.Sheets {
        for _, row := range sheet.Rows {
            for _, cell := range row.Cells {
                text := cell.String()
                fmt.Println(text)
            }
        }
    }
}

Вывод

123
test
788
456
testi
999
789
testing
100
...