Mostrando postagens com marcador Interop. Mostrar todas as postagens
Mostrando postagens com marcador Interop. Mostrar todas as postagens

terça-feira, 14 de maio de 2013

Excel - Importação de dados


Importar dados de um arquivo Excel é muito simples.

Esse método utiliza a biblioteca  Microsoft.Office.Interop.Excel, que é responsável por manipular arquivo do tipo excel.

Nesse exemplo, independe do número de pasta de trabalho que tenha o arquivo ele irá percorrer todas as pastas de trabalho.

  public void  LeArquivo(string Arquivo)
        {
           

            Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();

 //Cria um objeto do tipo WorkBook com todos os elementos do Excel.
        Workbook workBook = app.Workbooks.Open(Arquivo,
        Type.Missing, true, Type.Missing, Type.Missing,
        Type.Missing, Type.Missing, Type.Missing, Type.Missing,
        Type.Missing, Type.Missing, Type.Missing, Type.Missing,
        Type.Missing, Type.Missing);
          

            int numSheets = workBook.Sheets.Count;
            //esse loop vai percorrer todas as pastas de trabalho do excel.
            for (int sheetNum = 1; sheetNum < numSheets + 1; sheetNum++)
            {
                Worksheet sheet = (Worksheet)workBook.Sheets[sheetNum];
                int numColumns = sheet.Columns.Count;
                int numRows = sheet.Rows.Count;

              
                    Range excelRange = sheet.UsedRange;
                //Pega todo conteúdo de uma linha e transforma e um array de objetos.
                    object[,] Linha = (object[,])excelRange.get_Value(XlRangeValueDataType.xlRangeValueDefault);

                    List<string[]> Linhas = new List<string[]>();
                    int cont_ant = 0;
                //Percorre todas as dimensões do array linha para pegar o conteúdo de cada célula.
                    for (int i = 1; i <= Linha.GetUpperBound(0); i++)
                    {
                        if (i > cont_ant)
                        {
                            cont_ant = i;
                            //pega o total de células preenchidas na linha e cria um array com o número exato de dimensões.
                            string[] celulas = new string[Linha.GetUpperBound(1)];
                            //percorre todas as células atribuindo preenchendo o array.
                            for (int j = 1; j <= Linha.GetUpperBound(1); j++)
                            {
                                if (Linha[i, j] != null)
                                    celulas[j - 1] = Linha[i, j].ToString();
                            }
                           
                            Linhas.Add(celulas);


                        }
                    }
                   

                //Nesse momento o List de string "Linhas" tem todo conteúdo  da pasta de trabalho.


            }
workBook.Close();

           

        }

quarta-feira, 17 de abril de 2013

Gerando Excel - Básico


Criar um arquivo Excel através do C# parece ser um bicho de 7 cabeças. Mas não é.
Basta utilizar a dll da Microsoft chamada “Microsoft.Office.Interop.Excel”. Sua utilização é muito simples, basta entender como o Excel funciona.

O Excel se divide em 3 partes:
  • Workbook – Representa o arquivo Excel
  • Worksheet – Representa uma pasta de trabalho
  • Cell – Pode conter uma informação, texto números, etc.


Um Workbook  pode conter N pastas de trabalhos  e uma pasta de trabalho contem N informações.

Nesse exemplo eu vou demonstrar como criar um arquivo excel e preencher algumas células. 

using Microsoft.Office.Interop.Excel;
namespace ExemploConsole
{
    class Program
    {
        static void Main(string[] args)
        {

            Application excel = new Application();
            Workbook wb = excel.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
            Worksheet ws = (Worksheet)wb.Worksheets.get_Item(1);

            ws.Name = "Nome da Pasta";
            for (int i = 0; i < 10; i++)
            {
                for (int j = 0; j < 10; j++)
                {
                    Microsoft.Office.Interop.Excel.Range ce = (ws.Cells[i + 1, j + 1] as Microsoft.Office.Interop.Excel.Range);
                    int linha = i + 1;
                    int coluna = j + 1;
                    ce.Value2 = "Valor: " + linha + " x " + coluna;
                }

            }
            wb.SaveAs("c:\\temp\\excelTeste.xlsx", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

            excel.Quit();

        }
    }
}




Como pode ser visto no código acima, eu criei um workbook (wb) e um worksheet (ws).  

Fiz dois loops para adicionar informações em 10 linhas e em 10 colunas e por fim, salvei o arquivo. 

Veja o resultado:



Esse exemplo é muito útil para quem deseja criar um relatório simples em Excel.