將其分爲兩個步驟:
1)地方保存文件 - 這是非常普遍的看到這一點:
串saveFolder = @ 「C:\ TEMP \上傳」; //在你的機器上挑選一個文件夾來存儲上傳的文件
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 \上傳」,FileUpload1));
請考慮查看Excel連接字符串的其他擴展屬性。他們進來有用!
您可能想要做的其他改進包括將您的Sql數據庫連接字符串放入配置中,並添加適當的異常處理。請考慮這個例子僅用於演示!
推動這一數據到SQL數據庫表請點擊此鏈接[stackoverflow.com](http://stackoverflow.com/questions/12378705/importing-excel-to-sql-database-using -vb-net-and-asp-net) –
檢查這個答案太http://stackoverflow.com/questions/10447015/uploading-an-excel-sheet-and-importing-the-data-into-sql-server-數據庫 –