如何从CSV文件中选择前4列并运行查询

时间:2012-03-06 15:13:59

标签: c# c#-4.0 csv datagridview datatable

我有一个方法,我想查询我的CSV文件中的第3列但是我只想显示前四列。我希望做一些像

这样的事情
SELECT * FROM Table WHERE User-Name='%PERSON%'

但将其应用于我的CSV文件。

    public static DataTable ParseCSV(string path, String pattern)
    {
        if (!File.Exists(path))
            return null;
        string full = Path.GetFullPath(path);
        string file = Path.GetFileName(full);
        string dir = Path.GetDirectoryName(full);
        string connString = "Provider=Microsoft.Jet.OLEDB.4.0;"
            + "Data Source=\"" + dir + "\\\";"
            + "Extended Properties=\"text;HDR=No;FMT=Delimited\"";
        string query = "SELECT F1, F2, F3 FROM " + file;
        DataTable dTable = new DataTable();
        OleDbDataAdapter dAdapter = new OleDbDataAdapter(query, connString);
        try
        {
            dAdapter.Fill(dTable);
        }
        catch (InvalidOperationException ioe)
        {
            Console.WriteLine(ioe.Message.ToString());
        }
        dAdapter.Dispose();
        return dTable;
    }


    private void buttonSearch_Click(object sender, EventArgs e)
    {
        path = textBoxFilePath.Text.ToString().Trim();
        //BindingSource to sync DataTable and DataGridView
        BindingSource bSource = new BindingSource();
        //set the BindingSource DataSource
        bSource.DataSource = ParseCSV(path, pattern);
        dataGridView1.DataSource = bSource;
    }

此外,我的CSV文件有一个标题行,我想成为我的DataGridView的标题行。

由于

1 个答案:

答案 0 :(得分:1)

将您的select语句更改为:

query = "select F3 from " + file;

检索第三列。如果要添加标题,请更改连接字符串以包含HDR = YES,并按照与普通查询相同的方式按名称引用列:

query = "select mycolumn from " + file;