从csv文件中提取数据并将其放入golang中给出的模板中

问题描述 投票:0回答:1

有人知道如何根据其列从作为 multipart.file 上传的 CSV 文件中提取数据,然后将数据输入到另一个 CSV 文件(模板)中吗?

我仍然无法在 golang 中找到正确的逻辑来做到这一点。这是 csv 文件,看起来很像:

“公司”,,, 地址 :,,, 林荫大道,,, 服务/办公室 : 021-62318113 / 021-22684901,,, “VGA 有保证”,经销商,建议零售价,保证金 VGA-1,"37,000","38,000","1,000" VGA-2,"27,500","28,500","1,000" 案例、经销商、建议零售价、利润 CASE-1 ,"430,000","480,000","50,000" CASE-2 ,"450,000","500,000","50,000" “铭瑄VGA”,经销商,建议零售价,利润 MVGA-1,"13,300,000","13,800,000","500,000"

这些是我尝试读取的用于检测表头的代码(至少具有“Msrp”列的行):

reader := csv.NewReader(f)
records, err := reader.Read()

var rows []string
columns := []string{"Msrp", "MSRP", "msrp"}

for _, column := range columns {
    for _, columnName := range records {
        for _, cols := range columnName {
            if cols == column {
                row := strings.Join(columnName, " ")
                rows = append(rows, row)
                break
            }
        }
    }

但它只返回表头。我需要获取每一列的值并将其保存到一个新切片中(也许?),以便稍后我可以使用我刚刚从上传的 CSV 文件中提取的值来更新 CSV 模板文件

有没有更好的方法来解决这个问题? 无论如何,我是 golang 和编程新手,请帮助我

非常感谢!

csv go parsing slice csv-parser
1个回答
0
投票

看起来对于

reader := csv.NewReader(f)
的返回可能存在一些混乱。
reader
代表整个表格。 如果循环遍历
reader
,则可以逐行打印。

这样写个测试,打印出数据,你就会有一个清晰的认识了。


reader := csv.NewReader(file)

//the first line data is the titles  
titles, _ = reader.Read() 


// perform a data comparison with columns := []string{"Msrp", "MSRP", "msrp"}
// allocate a container below to store it 
//loop the row

for  {

    records, _ = reader.Read() // the records
    // the records is a var record []string 
    // you should loop that value 
    //there record[1], record[2], record[3] is your col
}

希望这可以帮助你

© www.soinside.com 2019 - 2024. All rights reserved.