quarta-feira, 29 de janeiro de 2014

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

Na aplicação que desenvolvi, estava necessitando efetuar a leitura do Excel no meu sistema, efetuando algumas pesquisas cheguei ao código:


DataSet ds = XlsxToDataSet(Server.MapPath("~\\upload\\ upload.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 [Clientes]", MyConnection);
        MyCommand.TableMappings.Add("Table", "Table");
        MyCommand.Fill(ds);
        MyConnection.Close();
       
        return ds;
}

O MapPath, seria a localização do arquivo físico, no meu caso, tenho um upload da planilha onde guardo em uma determina pasta com um código, após isso utilizo este caminho no patch

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

0 comentários:

Postar um comentário