Как импортировать файлы Excel другого формата в базу данных SQL Server - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть требование, когда мне нужно импортировать разные файлы Excel разных поставщиков в базу данных SQL Server. Я создал пакет SSRS, для которого мне нужно вручную поместить данные в свой формат, который я создал, а затем импортировать с использованием пакета SSRS. Что было бы лучшим и самым быстрым способом импорта Excels различных форматов в базу данных SQL Server с использованием C #?

1 Ответ

0 голосов
/ 06 сентября 2018

Разбейте это на два шага:

1) Сохраните файл где-нибудь - это очень часто встречается:

string saveFolder = @ "C: \ temp \ uploads"; // Выберите папку на вашем компьютере для хранения загруженных файлов

string filePath = Path.Combine (saveFolder, FileUpload1.FileName);

FileUpload1.SaveAs (Filepath); Теперь у вас есть файл локально, и настоящая работа может быть выполнена.

2) Получить данные из файла. Ваш код должен работать как есть, но вы можете просто написать строку подключения следующим образом:

string excelConnString = String.Format ("Provider = Microsoft.Jet.OLEDB.4.0; Источник данных = {0}; Расширенные свойства =" Excel 12.0 ";", filePath); Затем вы можете подумать об удалении только что загруженного и импортированного файла.

Чтобы привести более конкретный пример, мы можем реорганизовать ваш код в два метода:

private void SaveFileToDatabase(string filePath)
{
    String strConnection = "Data Source=.\\SQLEXPRESS;AttachDbFilename='C:\\Users\\Hemant\\documents\\visual studio 2010\\Projects\\CRMdata\\CRMdata\\App_Data\\Database1.mdf';Integrated Security=True;User Instance=True";

    String excelConnString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0\"", filePath);
    //Create Connection to Excel work book 
    using (OleDbConnection excelConnection = new OleDbConnection(excelConnString))
    {
        //Create OleDbCommand to fetch data from Excel 
        using (OleDbCommand cmd = new OleDbCommand("Select [ID],[Name],[Designation] from [Sheet1$]", excelConnection))
        {
            excelConnection.Open();
            using (OleDbDataReader dReader = cmd.ExecuteReader())
            {
                using(SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection))
                {
                    //Give your Destination table name 
                    sqlBulk.DestinationTableName = "Excel_table";
                    sqlBulk.WriteToServer(dReader);
                }
            }
        }
    } 
}


private string GetLocalFilePath(string saveDirectory, FileUpload fileUploadControl)
{


    string filePath = Path.Combine(saveDirectory, fileUploadControl.FileName);

    fileUploadControl.SaveAs(filePath);

    return filePath;

}

Затем можно просто вызвать SaveFileToDatabase (GetLocalFilePath (@ "C: \ temp \ uploads", FileUpload1));

Рассмотрите возможность просмотра других расширенных свойств для строки подключения Excel. Они полезны!

Другие улучшения, которые вы, возможно, захотите сделать, включают добавление строки конфигурации базы данных Sql в конфигурацию и добавление надлежащей обработки исключений. Пожалуйста, рассмотрите этот пример только для демонстрации!

...