将CSV作为数据源提供给图表

时间:2014-09-09 07:02:03

标签: c# csv datagridview charts

在我的应用程序中,我在OpenFileDialog控件的帮助下从用户那里获取了一个CSv文件。在我获得CSV之后,我将它作为数据源提供给datagridview。 以下是获取CSV的代码:

private void btnBrowse_Click(object sender, EventArgs e)
{
    OpenFileDialog openFileDialog = new OpenFileDialog();
    openFileDialog.Filter = "|*.csv";
    DialogResult result = openFileDialog.ShowDialog();
    if (result == DialogResult.OK)
    {
        tbCSVPath.Text = openFileDialog.FileName;
    }
}

这是将CSV作为数据源提供给datagridview的代码:

private void btnCsvUpload_Click(object sender, EventArgs e)
{
    try
    {
        dgCSVData.DataSource = GetDataTableFromCSVFile(tbCSVPath.Text);
        chart1.DataSource = dgCSVData;
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "Import CSV File", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}

private static DataTable GetDataTableFromCSVFile(string csvfilePath)
{
    DataTable csvData = new DataTable();
    using (TextFieldParser csvReader = new TextFieldParser(csvfilePath))
    {
        csvReader.SetDelimiters(new string[] { "," });
        csvReader.HasFieldsEnclosedInQuotes = true;
        string[] colFields = csvReader.ReadFields();
        foreach (string column in colFields)
        {
            DataColumn datecolumn = new DataColumn(column);
            datecolumn.AllowDBNull = true;
            csvData.Columns.Add(datecolumn);
        }
        while (!csvReader.EndOfData)
        {
            string[] fieldData = csvReader.ReadFields();
            for (int i = 0; i < fieldData.Length; i++)
            {
                if (fieldData[i] == "")
                {
                    fieldData[i] = null;
                }
            }
            csvData.Rows.Add(fieldData);
        }
    }
    return csvData;
}

我的CSV文件是BLG文件的转换。我也在我的应用程序中以另一种形式完成这项工作。现在我非常困惑而且无法做到的是我想在图表中显示CSV的值。 CSV将是动态的并且一直在变化,我找不到任何东西,也没有太多关于如何做到这一点的线索。如果有人帮我做这个任务,我会很高兴。谢谢你的帮助

0 个答案:

没有答案