2017-09-20 1 views
-3

Googleシートとデータフレームsdkを統合するコードを作成中です:https://github.com/kniren/gotaこのコードは毎回 "df:= dataframe.LoadRecords(値)"でパニックを引き起こします。デバッガを使用すると、パニックが発生します。ウォッチャー内のすべての値は、my [] []文字列内の値を正確に期待どおりに表示します。シートセルを[] []文字列に変換するより良い方法がある場合は、コメントしてください。ゴランの型を避けてマーシャリングとアンマーシャリングまたはオブジェクトの変換を行う方法

package main 

import (
    "bitbucket.org/gosheets" 
    "fmt" 
    "github.com/kniren/gota/dataframe" 
    "reflect" 
) 

func main() { 
    sheetdata := gosheets.Setup() 
    // row1 is column names 
    fmt.Println(reflect.TypeOf(sheetdata.Values)) 
    values := [][]string{} 
    //sheetdata.Values.(*sheets.ValueRange) 
    fmt.Sprintln(sheetdata.Values) 
    for _, row := range sheetdata.Values.Values { 
     sr := []string{} 
     for i, cell := range row { 
      //capping columns at 5 for starters 
      if i >= 5 { 
       break 
      } 
      sr = append(sr, fmt.Sprint(cell)) 
     } 
     fmt.Sprintln(row) 
     values = append(values, sr) 
     //values = append(values, fmt.Sprintln(row)) 
    } 
    //opts := dataframe.LoadOption{detectTypes: false} 
    df := dataframe.LoadRecords(values) 

    //df := dataframe.ReadCSV(sheetdata.Values) 
    //fmt.Println(sheetdata.Values) 
    fmt.Println(df.Names()) 

} 
+2

スタックトレースを含むパニックとは何ですか? –

答えて

0

デバッグが容易なため、実行可能な例を提供してください。これはプライベートコードを使用するように見えますが、gosheets libを使わずにテスト入力で再現できるはずです。

panic: runtime error: index out of range 

github.com/kniren/gota/dataframe.LoadRecords(0xc420058060, 0x2, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) 
github.com/kniren/gota/dataframe/dataframe.go:693 +0xc53 

あなたは、おそらく長いフィールドをヘッダーたデータを持っている:あなたのエラーはこれですので、もし

sheetdata := [][]string{{"1", "2", "3", "4", "5"}, {"1", "2", "3"}} 

https://play.golang.org/p/hJXBlO_40O

:sheetdataはパニックを生産するように、例えば、これをしようと

(それはcsvデータを見ていると仮定します)。この仮定はhereで焼き付けられ、LoadRecordsは本当にパニックではないエラーをチェックして返します。

関連する問題