Extracting Data from a CSV File Using C#
Have you ever found yourself in a position of wanting to extract data from a CSV file that had way more information than you needed? Here is the code I used to extract a single column and output it into a windows form textbox.
This first chunk contains a partial class of the form class named Form1 in my Windows Form Application. I’ve commented in some explanation of how it works.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; // used for creating and writing text to a file namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { /// This part instantiates the OpenFileDialog object so we can show it on the screen when button1 is clicked /// and use the resulted chosen file OpenFileDialog FileDialog = new OpenFileDialog(); textBox1.Text = ""; richTextBox1.Text = ""; DialogResult result = FileDialog.ShowDialog(); if (result == DialogResult.OK) { // Dump the selected file line by line into the "row" array so that each element of "row" is one line of the file string[] row = File.ReadAllLines(FileDialog.FileName); // Determine the number of rows in the file then outpute it into a text box int numberOfRows = File.ReadAllLines(FileDialog.FileName).Length; textBox1.Text = numberOfRows.ToString(); /// Separate the headings of the CSV file (which which we assume to be in the 1st row) according to our chosen delimiters and place them into the "firstRow" array char[] delimiterChars = { ',', '\t' }; //both comma and tab delimiters are accepted string[] firstRow = row[0].Split(delimiterChars); //some variables string extension = ""; //place the extension values here int columnNumber = 0; //keep track of which column we are in // main logic for extracting data under the "extension" column foreach (string value in firstRow)// sequencially places each item of firstRow into "value" and runs through the logic for each iteration { if (value == "extension" || value == "Extension") //Determine which column the "extension" heading is located in { richTextBox1.Text += "The " + value + " heading is in column " + columnNumber + " and it's values are:\r"; for (int i = 1; i < numberOfRows; i++) // loops through each line and picks out the extension identified by "columnNumber" { string[] lineValue = row[i].Split(delimiterChars); extension = lineValue[columnNumber]; richTextBox1.Text += extension + "\r"; } } columnNumber++; } } } } }
Leave a Reply