Quem nunca recebeu uma planilha enorme do Excel, cheia de dados de um cliente? Se ainda não, aguarde, pois ainda vai receber uma.
Para facilitar o trabalho e não ter que adicionar manualmente item a item no banco de dados, ou pior ainda, ter que fazer um update. Podemos usar um OleDbConnection para abrir a planilha e preencher um DataSet.
Abaixo o código:
DataSet ds = XlsxToDataSet(Server.MapPath("~\\import\\import.xlsx"));
public static DataSet XlsxToDataSet(string sFile)
{
DataSet ds = new DataSet();
OleDbDataAdapter MyCommand;
OleDbConnection MyConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + sFile + ";Extended Properties=Excel 12.0;");
MyCommand = new System.Data.OleDb.OleDbDataAdapter("SELECT * FROM [Folha1$]", MyConnection);
MyCommand.TableMappings.Add("Table", "Table");
MyCommand.Fill(ds);
MyConnection.Close();
return ds;
}
Download do exemplo
Caso ocorra este erro:
Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine (Microsoft.ACE.OLEDB.12.0' não está registrado na máquina local)
Baixe e instale o Microsoft Access Database Engine 2010 Redistributable
http://www.microsoft.com/downloads/en/details.aspx?familyid=C06B8369-60DD-4B64-A44B-84B371EDE16D&displaylang=en
Caso ocorra este erro:
Microsoft.Jet.OLEDB.4.0' não está registrado na máquina local
Basta seguir os passoas abaixo.
Vá no IIS, Pools de Aplicativos e selecione o Pool utilizado pelo site. Clique em "Configurações Avançadas" e mude para "True" o "Habilitar Aplicativos 32 Bits".