I have created a demo for uploading an Excel file to webserver and then copying data from it to SQL server db. It is working perfectly.
ASPX Design:
<table>
<tr>
<td>
<span style="color: Red">*</span>Attach Excel file
</td>
<td>
<asp:FileUpload ID="fileuploadExcel" runat="server" />
</td>
</tr>
<tr>
<td></td>
<td>
<asp:Button ID="btnSend" runat="server" Text="Export" onclick="btnSend_Click" />
</td>
</tr>
</table>
Code behind:
private String strConnection = "Data Source=Test-PC;Initial Catalog=ExcelMapping;User ID=Test;Password=Test";
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnSend_Click(object sender, EventArgs e)
{
//file upload path
string path = fileuploadExcel.PostedFile.FileName;
fileuploadExcel.SaveAs(Server.MapPath(path));
//Create connection string to Excel work book
string excelConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath(path) + ";Extended Properties=Excel 12.0;Persist Security Info=False";
//Create Connection to Excel work book
OleDbConnection excelConnection = new OleDbConnection(excelConnectionString);
//Create OleDbCommand to fetch data from Excel
OleDbCommand cmd = new OleDbCommand("Select [lat],[long] from [Sheet1$]", excelConnection);
excelConnection.Open();
OleDbDataReader dReader;
dReader = cmd.ExecuteReader();
DataSet ds = new DataSet();
SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection);
//Give your Destination table name
sqlBulk.DestinationTableName = "Test";
sqlBulk.ColumnMappings.Add(0, 1);
sqlBulk.ColumnMappings.Add(1, 2);
sqlBulk.WriteToServer(dReader);
excelConnection.Close();
}
}
But when I use the same code in an existing application. It gives me error while opening the connection with Excel stating
The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine
Please suggest me what to do to resolve this.