Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Mengunggah lembar Excel dan mengimpor data ke database SQL Server

Anda berurusan dengan HttpPostedFile; ini adalah file yang "diunggah" ke server web. Anda benar-benar perlu menyimpan file itu di suatu tempat dan kemudian menggunakannya, karena...

... dalam contoh Anda, kebetulan Anda meng-hosting situs web Anda di mesin yang sama dengan tempat file berada, sehingga jalurnya dapat diakses. Segera setelah Anda menerapkan situs Anda ke mesin lain, kode Anda tidak akan berfungsi.

Bagi menjadi dua langkah:

1) Simpan file di suatu tempat - sangat umum untuk melihat ini:

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);

Sekarang Anda memiliki file Anda secara lokal dan pekerjaan sebenarnya dapat dilakukan.

2) Dapatkan data dari file. Kode Anda seharusnya berfungsi apa adanya, tetapi Anda cukup menulis string koneksi dengan cara ini:

string excelConnString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties="Excel 12.0";", filePath);

Anda kemudian dapat berpikir untuk menghapus file yang baru saja Anda unggah dan impor.

Untuk memberikan contoh yang lebih konkret, kami dapat memfaktorkan ulang kode Anda menjadi dua metode:

    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;

    }

Anda cukup memanggil SaveFileToDatabase(GetLocalFilePath(@"C:\temp\uploads", FileUpload1));

Pertimbangkan untuk meninjau Properti yang Diperluas lainnya untuk string koneksi Excel Anda. Mereka berguna!

Perbaikan lain yang mungkin ingin Anda lakukan termasuk memasukkan string koneksi Database Sql Anda ke dalam konfigurasi, dan menambahkan penanganan pengecualian yang tepat. Harap pertimbangkan contoh ini hanya untuk demonstrasi!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya bisa membuat daftar semua kunci asing yang mereferensikan tabel yang diberikan di SQL Server?

  2. Kerangka Entitas:Sudah ada DataReader terbuka yang terkait dengan Perintah ini

  3. Risiko tabrakan UUID menggunakan algoritma yang berbeda

  4. 3 Cara Menghitung Jumlah Tabel Sistem dalam Database SQL Server

  5. Cara tercepat untuk mengkloning baris dalam SQL