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