Importar Planilha Excel no ASP.NET

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; } }

Para importação do arquivo xlsx é preciso estar instalado o AccessDatabaseEngine.exe download no site da microsoft.

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.

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados