Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Качване на Excel лист и импортиране на данните в база данни на SQL Server

Имате работа с HttpPostedFile; това е файлът, който е "качен" на уеб сървъра. Наистина трябва да запишете този файл някъде и след това да го използвате, защото...

...във вашия случай се случи така, че хоствате уебсайта си на същата машина, на която се намира файлът, така че пътят е достъпен. Веднага щом разположите сайта си на друга машина, кодът ви няма да работи.

Разделете това на две стъпки:

1) Запазете файла някъде - много често се вижда това:

string saveFolder = @"C:\temp\uploads"; //Pick a folder on your machine to store the uploaded files

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

FileUpload1.SaveAs(filePath);

Сега имате своя файл локално и истинската работа може да бъде свършена.

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

string excelConnString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties="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 база данни в config и добавяне на подходяща обработка на изключения. Моля, разглеждайте този пример само като демонстрация!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да се присъедините към празна маса

  2. Разделете дял на две в SQL Server (T-SQL)

  3. Моментни снимки на базата данни на SQL Server -1

  4. Синхронизиране на данни между две различни бази данни

  5. Повторете редовете N пъти според стойността на колоната