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.