Convert XLS to SQL Server (via CSV BULK INSERT) using Bytescout Spreadsheet SDK

  • Home
  • /
  • Articles
  • /
  • Convert XLS to SQL Server (via CSV BULK INSERT) using Bytescout Spreadsheet SDK

How to convert XLS to SQL Server data via CSV BULK INSERT using Bytescout Spreadsheet SDK for .NET

These samples shows how to export XLS to SQL Server data via CSV BULK INSERT method in VB and C#.
You can also check out How to convert XLS to SQL Server data tutorial.

Input XLS file:

Sample XLS file to be exported to SQL Server data

Output – CSV data exported to SQL Server:

CSV data exported to SQL Server

Visual Basic .NET

Imports System.IO
Imports Bytescout.Spreadsheet
Imports System.Data.SqlClient

Class Program
    Friend Shared Sub Main(args As String())

        Try
            ' Load XLS document
            Using document As New Spreadsheet("SimpleReport.xls")
                Dim csvFile As String = Path.GetTempPath() & "SimpleReport.csv"

                ' Save the document as CSV file
                document.Workbook.Worksheets(0).SaveAsCSV(csvFile)

                document.Close()

                If File.Exists(csvFile) Then

                    ' MODIFY THE CONNECTION STRING WITH YOUR CREDENTIALS!!!
                    Dim connectionString As String = "Data Source=localhost;Initial Catalog=master;Integrated Security=true;"

                    Using connection As New SqlConnection(connectionString)

                        connection.Open()

                        ' Drop test database if exists
                        ExecuteQueryWithoutResult(connection, "IF DB_ID ('XlsTests') IS NOT NULL DROP DATABASE XlsTests")

                        ' Create empty database
                        ExecuteQueryWithoutResult(connection, "CREATE DATABASE XlsTests")
                        ' Switch to created database
                        ExecuteQueryWithoutResult(connection, "USE XlsTests")

                        ' Create a table for CSV data
                        ExecuteQueryWithoutResult(connection, "CREATE TABLE CsvTest (Name VARCHAR(40), FullName VARCHAR(255))")
                        ' Export CSV data from local file
                        ExecuteQueryWithoutResult(connection, "BULK INSERT CsvTest FROM '" & csvFile & "' WITH ( FIELDTERMINATOR = ';', ROWTERMINATOR = '" & vbLf & "')")

                        ' Check the data successfully exported
                        Using command As New SqlCommand("SELECT * from CsvTest", connection)

                            Dim reader As SqlDataReader = command.ExecuteReader()

                            If reader IsNot Nothing Then

                                Console.WriteLine()
                                Console.WriteLine("Exported CSV data:")
                                Console.WriteLine()

                                While reader.Read()
                                    Console.WriteLine([String].Format("{0}  |  {1}", reader(0), reader(1)))

                                End While
                            End If
                        End Using

                        Console.WriteLine()

                        Console.WriteLine("Press any key.")
                        Console.ReadKey()
                    End Using
                End If

            End Using
        Catch ex As Exception
            Console.WriteLine("Error: " & ex.Message)

            Console.ReadKey()
        End Try
    End Sub

    Private Shared Sub ExecuteQueryWithoutResult(connection As SqlConnection, query As String)

        Using command As New SqlCommand(query, connection)
            command.ExecuteNonQuery()

        End Using
    End Sub
End Class

Visual C#

using System;
using System.IO;
using Bytescout.Spreadsheet;

using System.Data.SqlClient;

namespace ExportToSQLServer
{
    class Program
    {

        static void Main(string[] args)
        {

            try
            {
                // Load XLS document
                using (Spreadsheet document = new Spreadsheet("SimpleReport.xls"))

                {
                    string csvFile = Path.GetTempPath() + "SimpleReport.csv";

                    // Save the document as CSV file
                    document.Workbook.Worksheets[0].SaveAsCSV(csvFile);

                    document.Close();

                    if (File.Exists(csvFile))

                    {
                        // MODIFY THE CONNECTION STRING WITH YOUR CREDENTIALS!!!
                        string connectionString = "Data Source=localhost;Initial Catalog=master;Integrated Security=true;";

                        using (SqlConnection connection = new SqlConnection(connectionString))
                        {

                            connection.Open();

                            // Drop test database if exists
                            ExecuteQueryWithoutResult(connection,

                                                      "IF DB_ID ('XlsTests') IS NOT NULL DROP DATABASE XlsTests");
                            // Create empty database
                            ExecuteQueryWithoutResult(connection, "CREATE DATABASE XlsTests");

                            // Switch to created database
                            ExecuteQueryWithoutResult(connection, "USE XlsTests");
                            // Create a table for CSV data

                            ExecuteQueryWithoutResult(connection, 
                                                      "CREATE TABLE CsvTest (Name VARCHAR(40), FullName VARCHAR(255))");
                            // Export CSV data from local file
                            ExecuteQueryWithoutResult(connection,

                                                      "BULK INSERT CsvTest FROM '" + csvFile + "' " +
                                                      "WITH ( FIELDTERMINATOR = ';', ROWTERMINATOR = 'n')");

                            
                            // Check the data successfully exported
                            using (SqlCommand command = new SqlCommand("SELECT * from CsvTest", connection))

                            {
                                SqlDataReader reader = command.ExecuteReader();

                                if (reader != null)

                                {
                                    Console.WriteLine();
                                    Console.WriteLine("Exported CSV data:");

                                    Console.WriteLine();

                                    while (reader.Read())

                                    {
                                        Console.WriteLine(String.Format("{0}  |  {1}", reader[0], reader[1]));

                                    }
                                }
                            }

                            Console.WriteLine();

                            Console.WriteLine("Press any key.");
                            Console.ReadKey();

                        }
                    }
                }
            }
            catch(Exception ex)

            {
                Console.WriteLine("Error: " + ex.Message);

                Console.ReadKey();
            }
        }

        static void ExecuteQueryWithoutResult(SqlConnection connection, string query)

        {
            using (SqlCommand command = new SqlCommand(query, connection))

            {
                command.ExecuteNonQuery();
            }
        }

    }
}

prev
next