Importar Planilha Excel no ASP.NET

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (2)  (1)

Veja neste artigo uma função para importar planilha em formato xls e xlsx no asp.net mvc3 razor.

Veja neste artigo como podemos importar uma planilha do Microsoft Excel para o ASP.Net.

Veja baixo o código:

public class ImportExcel
    {
         public DataTable Importar(string arquivo)
        {
            string ext = string.Empty;
            string aspas = "\"";
            string Conexao = string.Empty;

            for (int i = arquivo.Length - 1; i < arquivo.Length; i--)
            {
                if (arquivo[i] != '.')
                {
                    ext += arquivo[i];
                }
                else
                {
                    ext += ".";
                    break;
                }
            }

            ext = StringUtils.Inverter(ext);

            if (ext == ".xls")
            {
                Conexao = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + arquivo + ";" + "Extended Properties=" + aspas + "Excel 8.0;HDR=YES" + aspas;
            }
            if (ext == ".xlsx")
            {
                Conexao = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + arquivo + ";" + "Extended Properties=" + aspas + "Excel 12.0;HDR=YES" + aspas;
            }

            System.Data.OleDb.OleDbConnection Cn = new System.Data.OleDb.OleDbConnection();
            Cn.ConnectionString = Conexao;
            Cn.Open();
            object[] Restricoes = { null, null, null, "TABLE" };
            DataTable DTSchema = Cn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, Restricoes);
            if (DTSchema.Rows.Count > 0)
            {
                string Sheet = DTSchema.Rows[0]["TABLE_NAME"].ToString();
                System.Data.OleDb.OleDbCommand Comando = new System.Data.OleDb.OleDbCommand("SELECT * FROM [" + Sheet + "]", Cn);
                DataTable Dados = new DataTable();
                System.Data.OleDb.OleDbDataAdapter DA = new System.Data.OleDb.OleDbDataAdapter(Comando);
                DA.Fill(Dados);
                Cn.Close();
                return Dados;
            }
            return null;
        }
    }
Importante

Para importação do arquivo xlsx é preciso estar instalado o AccessDatabaseEngine.exe download no site da microsoft (http://www.microsoft.com/download/en/details.aspx?id=13255)

Enquanto a importação está sendo feita o usuário não pode estar com a planilha aberta, assim é importante criar uma cópia desta em uma pasta temporária e passar esse path por parâmetro. (e excluir a temp depois )

Uses:
using System;
using System.Data;
using System.Data.Odbc;
using System.Data.OleDb;
using System.IO;
using System.Reflection;
using System.Text;
using System.Web;

Manipulação do resultado DataTable

 for (int i = 0; i < Dados.Columns.Count; i++)
{
colunas.Add(Dados.Columns[i].ToString());
}

foreach (DataRow DR in Dados.Rows)
{
linha.Add(DR.ItemArray[0].ToString());
linha.Add(DR.ItemArray[1].ToString());
linha.Add(DR.ItemArray[2].ToString());
}

Com isso finalizo este artigo abordando a importação de dados do Excel para o ASP.Net.
 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?