Skip to main content Skip to footer

How to Import and Export CSV Files Using WinForms C# and VB.NET

Quick Start Guide
What You Will Need
Controls Referenced

Spread.NET - .NET Spreadsheet Component

Documentation Demo Explorer

Tutorial Concept

Learn how to create C#/VB .NET WinForm applications with CSV importing and exporting capabilities offered to the users from the apps UI.  

This post describes importing and exporting your spreadsheets with CSV (Comma Separate Values) files directly in your .NET WinForms applications using the Spread.NET spreadsheet.

We will use the Spread Designer tool in run-time for editing Excel spreadsheet instances inside your running application with just one line of code. Finally, I will show how to create a simple front-end spreadsheet user interface that integrates the FpSpread spreadsheet control with the NameBox and FormulaTextBox controls using splitter panes to create the main user interface, as well as how to implement menu items to handle File - Open, File - Save, and File - Design commands in C# and VB.

Here are the steps for importing and exporting CSV files in C# and VB WinForms:

  1. Create a .NET WinForms Project
  2. Configure the Project
  3. Create the File Menu
  4. Create SplitContainer1
  5. Configure SplitContainer1
  6. Create SplitContainer2
  7. Create the .NET Spreadsheet
  8. Create the NameBox
  9. Create the FormulaTextBox
  10. Create the WinForms Spreadsheet Designer Component
  11. Create Event Handlers for File Menu Items
  12. Add Event Handler Code

Want to try the different features available with Spread.NET? Download Spread.NET Now!

Step 1: Create a .NET WinForms Project

Create a New Project

We can start by creating a new project in Visual Studio 2022 by selecting C#, Windows, and Desktop to filter the projects and then selecting either C# or VB WinForms App.

Step 2: Configure the Project

Configure the Project

Type SpreadWinformsCSVIO for Project Name.

Step 3: Create the File Menu

Now, let’s add a MenuStrip. In the Toolbox window (F4), under the category for Menus & Toolbars and, double-click the MenuStrip component to create a new MenuStrip in the form:

Menu Strip Toolbox

 

Create the menu items for File – OpenFile – SaveFile – Save AsFile – Design, and File – Exit by clicking using the associated shortcut keys:

File Menu 

Note that the File - Save menu item should initially be disabled. The menu separators (use "-" for the menu item text to create a menu separator) and shortcut keys are optional but recommended. We will add code for those menu items in a later step.

Step 4: Create SplitContainer1

Note: Adding splitters isn't strictly necessary to use FpSpread, but the SplitContainer control makes creating a friendly and flexible spreadsheet interface much easier because it automatically handles resizing for the spreadsheet, namebox, and formula text box controls without requiring any code.

In the Toolbox (CTRL+ALT+X), expand the category for Containers, then double-click the SplitContainer control to create splitContainer1:

 Split Container Toolbox

Step 5: Configure SplitContainer1

In the Properties window (F4), for splitContainer1, set Orientation to Horizontal, then set Panel1MinSize and SplitterDistance to 23:

SplitContainer 1 Properties

 The spreadsheet will be in the bottom pane, the formula bar interface will be in the top pane, and the splitter will determine the height of the FormulaTextBox control for showing long formulas that wrap to new lines.

Step 6: Create SplitContainer2

In the Toolbox (CTRL+ALT+X), drag-and-drop a new SplitContainer inside the top pane (Panel1) of splitContainer1 to create splitContainer2:

SplitContainer 2

In the Properties window (F4), for splitContainer2 set Panel1MinSize and SplitterDistance to 150:

SplitContainer2 Properties

Step 7: Create the .NET Spreadsheet

In Solution Explorer, expand the Solution SpreadNetQuickStart and Project SpreadNetQuickStart, then right-click Dependencies and select Manage NuGet Packages… (or press ALT+P+N+N+N+ENTER):

Manage NuGet Packages 

Then, in NuGet Package Manager, select the Browse in the upper-left, then type Spread.WinForms in the search box to find the latest GrapeCity.Spread.WinForms, then click Install:

Spread.NET for WinForms NuGet Package

After installing GrapeCity.Spread.WinForms, go ahead and also install GrapeCity.Spread.WinForms.Design – this package contains the fpSpreadDesigner component for showing the Spread Designer tool in runtime.

Then, in the Toolbox (CTRL+ALT+X), select the FpSpread control:

 FpSpread Toolbox

Finally, draw an instance of FpSpread into the bottom pane (Panel2) of SplitContainer1. The Spread Designer tool may open when you create the control (that is the default behavior) – for now, close the Spread Designer if it appears. 

 FpSpread Form

Using the Property Grid (F4), set the Dock property to Fill:

 FpSpread Dock

Step 8: Create the NameBox

In the Toolbox (CTRL+ALT+X), expand the category for GrapeCity Spread for WinForms and select the NameBox control:

Namebox Toolbox

Draw a new NameBox inside the upper-left Panel1 (SplitContiner2.Panel1):

NameBox Form

In the Properties window (F4), for nameBox1, set Dock to Fill:

NameBox Properties

In the upper-right corner of nameBox1, click the indicator to open the NameBox Tasks, then click the AttachTo drop-down and select fpSpread1 – this will generate code in the form code-behind to attach the NameBox control to the FpSpread control:

 NameBox Attachment

Step 9: Create the FormulaTextBox

In the Toolbox (CTRL+ALT+X), expand Containers and select the Panel control:

Panel Toolbox 

Inside Panel2 (to the right of NameBox1), draw a new Panel:

Panel 2 Form

In the Properties window (F4), for panel1, set BorderStyle to FixedSingle and Dock to Fill:

Panel 1 Properties

In the Toolbox (CTRL+ALT+X), select the FormulaTextBox control:

Formula TextBox Toolbox

Inside panel1 (which is inside splitContainer2.Panel2), draw a new FormulaTextBox control:

Formula TextBox Form

In the Properties window (F4) for formulaTextBox1, set BorderStyle to None and Dock to Fill:

Formula TextBox Properties

In the upper-right corner of formulaTextBox1, click the indicator to open the FormulaTextBox Tasks, then click the AttachTo drop-down and select fpSpread1 – this will generate code in the form code-behind to attach the FormulaTextBox control to the FpSpread control:

Formula TextBox Attachment

Step 10: Create the WinForms Spreadsheet Designer Component

Now, in the Toolbox window (CTRL+ALT+X) under the category GrapeCity Spread Design for WinForms, double-click the FpSpreadDesigner component to create a new FpSpreadDesigner in the form:

FpSpread Designer Toolbox

The fpSpreadDesigner1 component just added should show in the form component tray next to the components menuStrip1 andfpSpread1_Sheet1:

FpSpread Designer Form

Step 11: Create Event Handlers for File Menu Items

File Menu Handlers Design

For each menu item in the File menu, double-click that menu item in the design view until each menu item has an associated menu handler generated in the VB or C# code:

File Menu Handlers

Step 12: Add Event Handler Code

Copy the following code to implement the event handlers:

[C#]

Add Event Handler Code C#

private string mFileName = null;

private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
    OpenFileDialog ofd = new OpenFileDialog();
    ofd.Filter = "CSV file (*.csv)|*.csv| All Files (*.*)|*.*";
    ofd.FilterIndex = 0;
    if (ofd.ShowDialog() == DialogResult.OK)
    {
        mFileName = ofd.FileName;
        fpSpread1.Sheets[0].LoadTextFile(mFileName, FarPoint.Win.Spread.TextFileFlags.None, FarPoint.Win.Spread.Model.IncludeHeaders.None, "", ",", "");
        saveToolStripMenuItem.Enabled = true;
    }
}

private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
    fpSpread1.Sheets[0].SaveTextFile(mFileName, FarPoint.Win.Spread.TextFileFlags.None, FarPoint.Win.Spread.Model.IncludeHeaders.None, "", ",", "");
}

private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
{
    SaveFileDialog sfd = new SaveFileDialog();
    sfd.Filter = "CSV file (*.csv)|*.csv| All Files (*.*)|*.*";
    sfd.FilterIndex = 0;
    sfd.FileName = mFileName;
    if (sfd.ShowDialog() == DialogResult.OK)
    {
        mFileName = sfd.FileName;
        fpSpread1.Sheets[0].SaveTextFile(mFileName, FarPoint.Win.Spread.TextFileFlags.None, FarPoint.Win.Spread.Model.IncludeHeaders.None, "", ",", "");
        saveToolStripMenuItem.Enabled = true;
    }
}

private void designToolStripMenuItem_Click(object sender, EventArgs e)
{
    fpSpreadDesigner1.ShowDialog(fpSpread1);
}

private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
    DialogResult ret = MessageBox.Show("Do you want to save this file before closing?", "Save Spreadsheet", MessageBoxButtons.YesNoCancel);
    if (ret == DialogResult.Cancel)
        return;
    else if (ret == DialogResult.Yes)
        saveToolStripMenuItem_Click(null, EventArgs.Empty);
    Close();
}

[VB]

Add Event Handler Code VB

Private mFileName As String = Nothing

Private Sub OpenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles OpenToolStripMenuItem.Click
    Dim ofd As New OpenFileDialog
    ofd.Filter = "CSV file (*.csv)|*.csv| All Files (*.*)|*.*"
    ofd.FilterIndex = 0
    If ofd.ShowDialog() = DialogResult.OK Then
        mFileName = ofd.FileName
        FpSpread1.Sheets(0).LoadTextFile(mFileName, FarPoint.Win.Spread.TextFileFlags.None, FarPoint.Win.Spread.Model.IncludeHeaders.None, "", ",", "")
        SaveToolStripMenuItem.Enabled = True
    End If
End Sub

Private Sub SaveToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SaveToolStripMenuItem.Click
    FpSpread1.Sheets(0).SaveTextFile(mFileName, FarPoint.Win.Spread.TextFileFlags.None, FarPoint.Win.Spread.Model.IncludeHeaders.None, "", ",", "")
End Sub

Private Sub SaveAsToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SaveAsToolStripMenuItem.Click
    Dim sfd As SaveFileDialog = New SaveFileDialog()
    sfd.Filter = "CSV file (*.csv)|*.csv| All Files (*.*)|*.*"
    sfd.FilterIndex = 0
    sfd.FileName = mFileName
    If sfd.ShowDialog() = DialogResult.OK Then
        mFileName = sfd.FileName
        FpSpread1.Sheets(0).SaveTextFile(mFileName, FarPoint.Win.Spread.TextFileFlags.None, FarPoint.Win.Spread.Model.IncludeHeaders.None, "", ",", "")
        SaveToolStripMenuItem.Enabled = True
    End If
End Sub

Private Sub DesignToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DesignToolStripMenuItem.Click
    FpSpreadDesigner1.ShowDialog(FpSpread1)
End Sub

Private Sub ExitToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ExitToolStripMenuItem.Click
    Dim ret As DialogResult = MessageBox.Show("Do you want to save this file before closing?", "Closing", MessageBoxButtons.YesNoCancel)
    If ret = DialogResult.Cancel Then
        Return
    ElseIf ret = DialogResult.Yes Then
        SaveToolStripMenuItem_Click(Nothing, EventArgs.Empty)
    End If
    Close()
End Sub

The code for File - Open uses the OpenFileDialog to browse for a CSV file, then uses the FpSpread.Sheets.LoadTextFile method to open the selected CSV file. The code for File - Save uses FpSpread.Sheets.SaveTextFile to save the spreadsheet data to a CSV, and the code for File - Save As uses the SaveFileDialog to allow the user to save the file to another location or use another name. This functionality allows for C# or VB.NET CSV file import and export.

The code in File-Design uses the FpSpreadDesigner.ShowDialog method to show the Spread Designer tool in run-time, make changes, and then apply those changes back to the spreadsheet instance in the form. Finally, the code in File - Exit prompts the user whether to save the file and then uses the Close method to close the form.

Ready to Build and Run!

Final Results

The project is ready to build and run. The File-Design menu will open the Spread Designer tool in run-time, as shown above, which can apply changes to the spreadsheet instance running in the form. See how Spread .NET can give you the power to import and export your spreadsheets to CSV with C# or VB.NET within your application.

In another article series, we demonstrate How to Import and Export Excel XLSX in .NET Applications Using C#.

Download the Sample.

Want to try the different features available with Spread.NET? Download Spread.NET Today!

 

comments powered by Disqus