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!