por Cesar Cassiano Schimanco

Importar Planilha do Excel 12.0/Office 2007 (xlsx) para um DataSet com C#

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".

Comentários

Carregando comentários

Postar um novo comentário



Processando...