C# Classe para importação de arquivo Excel

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;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;

/*
    Importante
    Baixar as dll's NPOI.dll e Ionic.Zip.dll
*/

namespace Jbkr.Utils
{
    ///<summary>
    /// Classe para importar dados de uma planilha do excel.
    /// </summary>
    public class ImportExcel
    {
        /// <summary>
        /// Função de importação de planilha excel.
        /// </summary>
        /// <param name="arquivo">Caminho absoluto da planilha</param>
        /// <returns>Um objeto DataTable contendo as informações da planilha Excel</returns>
        public DataTable Importar(string arquivo)
        {
            FileStream file = new FileStream(arquivo, FileMode.Open, FileAccess.Read);
            HSSFWorkbook hssfworkbook = new HSSFWorkbook(file);

            ISheet sheet = hssfworkbook.GetSheetAt(0);
            System.Collections.IEnumerator rows = sheet.GetRowEnumerator();

            DataTable dt = new DataTable();

            while (rows.MoveNext())
            {
                IRow row = (HSSFRow)rows.Current;
                DataRow dr = dt.NewRow();

                if (row.RowNum == 0)
                {
                    for (int j = 0; j < row.LastCellNum; j++)
                    {
                        dt.Columns.Add(Convert.ToChar(((int)'A') + j).ToString());
                    }
                    continue;
                }

                for (int i = 0; i < row.LastCellNum; i++)
                {
                    ICell cell = row.GetCell(i);

                    if (cell == null)
                    {
                        dr[i] = null;
                    }
                    else
                    {
                        dr[i] = cell.ToString();
                    }
                }
                dt.Rows.Add(dr);
            }
            return dt;
        }
    }
}

Artigos Relacionados:

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *