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:
Output – 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(); } } } }