首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# Lumenworks Csvreader-在读取带有空/空字段的csv文件时消息框中的显示错误

C# Lumenworks Csvreader-在读取带有空/空字段的csv文件时消息框中的显示错误
EN

Stack Overflow用户
提问于 2014-11-01 21:10:13
回答 1查看 544关注 0票数 0

我有这段代码来读取csv文件,并将字段存储在“Record”类的objects_Records列表中。

代码语言:javascript
复制
private String text2,text3,text4,text5,text6;
    private double text7,text8,text9;
    private int text1;
    private int count = 0;
    private void button1_Click(object sender, EventArgs e)
    {
        openFileDialog1.Filter = "CSV files (*.csv)|*.csv";  // Show only .csv files among all the different files        
        DialogResult result = openFileDialog1.ShowDialog(); // Show the dialog.
        if (result == DialogResult.OK) // Test result.
        {
            String file = openFileDialog1.FileName;
            try
            {
                textBoxFilePath.Text = file;
                using (CsvReader csv = new CsvReader(new StreamReader(file), true))
                {
                    int fieldCount = csv.FieldCount;
                    string[] headers = csv.GetFieldHeaders();
                    while (csv.ReadNextRecord())
                    {
                        count += 1;
                            for (int i = 0; i < fieldCount; i++)
                            {                         
                                switch (headers[i].ToLower())
                                {
                                    case "plot":
                                        text1 = int.Parse(csv[i]);
                                        break;
                                    case "local name":
                                        text2 = csv[i];
                                        break;
                                    case "botanical name":
                                        text3 = csv[i];
                                        break;
                                    case "genera":
                                        text4 = csv[i];
                                        break;
                                    case "species":
                                        text5 = csv[i];
                                        break;
                                    case "family":
                                        text6 = csv[i];
                                        break;
                                    case "dbh":
                                        text7 = Double.Parse(csv[i]);
                                        break;
                                    case "ba(sqm)":
                                        text8 = Double.Parse(csv[i]);
                                        break;
                                    case "ba":
                                        text8 = Double.Parse(csv[i]);
                                        break;
                                    case "height":
                                        text9 = Double.Parse(csv[i]);
                                        break;
                                    default:
                                        MessageBox.Show("Please check the column headers of the fields once!");
                                        continue;
                                    }
                            }
                            object_Records.Add(new Records(text1, text2, text3, text4, text5, text6, text7, text8, text9));
                        }
                    }
                    textBox1.Text = count.ToString(); 
            }
            catch (IOException)
            {
            }
        }
    }

对于没有“空/空”字段的csv文件,我的代码运行良好。当遇到包含"NULL“字段的csv文件时,它将抛出一个异常。

代码语言:javascript
复制
A first chance exception of type 'System.FormatException' occurred in mscorlib.dll

附加信息:输入字符串格式不正确。

请务必帮助我解决异常处理机制,可以处理该异常。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-02 13:40:38

正如注释中所建议的那样,您是否尝试过在switch语句中这样做:

代码语言:javascript
复制
switch (headers[i].ToLower())
{
    case "plot":
        int.TryParse(csv[i], out text1);
        break;
    case "local name":
        text2 = csv[i];
        break;
    case "botanical name":
        text3 = csv[i];
        break;
    case "genera":
        text4 = csv[i];
        break;
    case "species":
        text5 = csv[i];
        break;
    case "family":
        text6 = csv[i];
        break;
    case "dbh":
        Double.TryParse(csv[i], out text7);
        break;
    case "ba(sqm)":
        Double.TryParse(csv[i], text8);
        break;
    case "ba":
        Double.TryParse(csv[i], out text8);
        break;
    case "height":
        Double.TryParse(csv[i], out text9);
        break;
    default:
        MessageBox.Show("Please check the column headers of the fields once!");
        continue;
}

如果您尝试了,但它没有工作,您能深入到异常,看看它到底是在哪里抛出吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26693271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档