【问题标题】:C# creating Chart from CSV dataC# 从 CSV 数据创建图表
【发布时间】:2014-10-30 08:18:25
【问题描述】:

我尝试读取 CSV 数据并将其显示在 Visual Studio 的图表中。我收到一个 SystemArgument.Exception,它告诉我他找不到名为“Date”的列。

我的代码如下:

private void button1_Click_1(object sender, EventArgs e)
{

string file = "test.csv";
string dir = "C:\\Main";

string ConStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
            dir + ";Extended Properties=\"Text;HDR=No;FMT=Delimited\"";
OleDbConnection myConnection = new OleDbConnection(ConStr);

string mySelectQuery = "Select * from " + file;
OleDbCommand myCommand = new OleDbCommand(mySelectQuery, myConnection);

myCommand.Connection.Open();
OleDbDataReader myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);

chart1.Series["Test"].Points.DataBindXY(myReader, "Date",myReader,"Value");
chart1.Series["Test"].ChartType = SeriesChartType.Line;

myReader.Close();
myConnection.Close();
}

怎么了?我希望有人可以帮助我...... .Csv 数据是: 两列 - 第一列第一行是日期 第二列第一行是值 第一列中的行看起来像 01.04.2010 - 第二列中的行看起来像 234.567

【问题讨论】:

    标签: c# csv charts


    【解决方案1】:

    我很确定Select * from test.csv 不会工作。试试这段代码

    string file = @"C:\Main\test.csv";
    
    string connString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
                file + ";Extended Properties=\"Text;HDR=No;FMT=Delimited\"";
    
    string query = @"select * from sheetName$";
    

    sheetName 是 csv 表的名称,你应该用正确的值替换它!

    注意 csv 是否有列名 HDR 在连接字符串中应该是 YES

    我正在为您提供 xslx 文件的工作示例!

           string file = @"C:\Projects\EverydayProject\test.xlsx";
    
           string connString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
                        file + ";Extended Properties='Excel 12.0 Xml;HDR=YES;'";
    
            OleDbConnection conn = new OleDbConnection(connString);
            conn.Open();
            string query = @"select * from [Table$]";
    
            DataTable tb = new DataTable();
            using(OleDbDataAdapter ad = new OleDbDataAdapter(query, conn))
            {
                ad.Fill(tb);
            }
    
            conn.Close();
    

    sheetName 是 Table,看看我是如何在 sheetName 之后添加 $ 的,这很关键。现在在 tb 你有 excel 数据!

    【讨论】:

    • 好的,我试过了,但没有帮助。我收到了“OleDb.Exception”,因为路径似乎不正确。我做了一些更改,并再次在查询字符串中包含了文件的路径和完整的文件名。现在他没有找到“价值”列。当我更改 "chart1.Series["Test"].Points.DataBindXY(myReader, "Date",myReader,"Value");" 中的 "Value" 时到“”,他绘制了图形,但 Y 轴似乎不正确。
    • @uzi42tmp 使用 DataTable 和 OleDbDataAdapter !
    • 我该怎么做呢?
    • 我在 C# 方面没有太多经验。我应该如何处理数据表以及将哪些值放入轴中以正确显示列?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 2013-12-05
    • 2022-11-03
    • 1970-01-01
    • 2016-09-16
    • 2010-11-23
    相关资源
    最近更新 更多