Имате работа с 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 и добавяне на подходяща обработка на изключения. Моля, разглеждайте този пример само като демонстрация!