Aprenda como criar e manipular planilhas do Excel através de uma aplicação utilizando C#.
Este texto foi escrito e publicado por Fabiano Felgas em seu blog. Caso tenha dúvidas ou idéias acesse o link ao fim do artigo para entrar em contato com o autor .
Criar e atualizar planilhas Excel com C#
Houve a necessidade de meu sistema atualizar um modelo de planilha de acordo com uma lista de dados. Mas a minha necessidade era apenas para atualizar, então vou mostrar também como criar uma nova planilha Excel através do C#.
Para isto, é necessário fazer referência a Microsoft.Office.Interop.Excel, para isso vá em Solution Explorer -> References -> Add Reference -> .Net -> Microsoft.Office.Interop.Excel;
Agora vamos ao código:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using vExcel = Microsoft.Office.Interop.Excel; namespace WindowsFormsApplication1 { class Excel { public string CriarExcel(string NomeArquivo, DataTable DtConteudo) { try { vExcel.Workbook objBook; vExcel.Worksheet objSheet; // Criando objeto Workbook vExcel.Application ExcelApp = new vExcel.Application(); object misValue = System.Reflection.Missing.Value; objBook = ExcelApp.Workbooks.Add(System.Reflection.Missing.Value); // Criando objeto Workbook objSheet = (vExcel.Worksheet)objBook.Sheets["Plan1"]; // Criando objeto Workbook //objSheet.Name = nomedaAba; //Adicionando o nome a planilha int iLinha = 0; foreach (DataRow Dr in DtConteudo.Rows) { iLinha = iLinha + 1; int iColuna = 0; foreach (DataColumn Dc in DtConteudo.Columns) { iColuna = iColuna + 1; objSheet.Cells[iLinha, iColuna] = Dr[Dc.ColumnName]; } } //Salvando informações objBook.SaveAs(NomeArquivo, vExcel.XlFileFormat.xlWorkbookNormal, misValue, misValue, false, misValue, vExcel.XlSaveAsAccessMode.xlNoChange, misValue, misValue, misValue, misValue, misValue); objBook.Close(true, misValue, misValue); //Eliminando o Excel da memória objSheet = null; objBook = null; ExcelApp.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(ExcelApp); ExcelApp = null; GC.Collect(); ExcelApp = null; } catch (Exception e) { return “Houve um erro na criação do arquivo. Consulte o administrador do sistema. n” + e.Message; } return “”; } public string AtualizarPlanilha(string pNomeArquivo, DataTable pDtConteudo, int pLinhaInicial = 0, int pColunaInicial = 0, string DirSalvarComo = “”) { vExcel.Workbook objBook; vExcel.Worksheet objSheet; vExcel.Application ExcelApp = new vExcel.Application(); object misValue = System.Reflection.Missing.Value; try { objBook = ExcelApp.Workbooks.Open(pNomeArquivo, misValue, false, misValue, misValue, misValue, misValue, misValue, misValue, true, misValue, misValue, misValue, misValue, misValue); objSheet = (vExcel.Worksheet)(objBook.Worksheets[1]); int iLinha = 0; if (pLinhaInicial != 0) iLinha = pLinhaInicial – 1; foreach (DataRow Dr in pDtConteudo.Rows) { iLinha = iLinha + 1; int iColuna = 0; if (pColunaInicial != 0) iColuna = pColunaInicial – 1; foreach (DataColumn Dc in pDtConteudo.Columns) { iColuna = iColuna + 1; objSheet.Cells[iLinha, iColuna] = Dr[Dc.ColumnName]; } } if (DirSalvarComo.Equals(“”)) objBook.Save(); else objBook.SaveAs(DirSalvarComo, vExcel.XlFileFormat.xlWorkbookNormal, misValue, misValue, false, misValue, vExcel.XlSaveAsAccessMode.xlNoChange, misValue, misValue, misValue, misValue, misValue); objSheet = null; objBook = null; ExcelApp.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(ExcelApp); ExcelApp = null; GC.Collect(); } catch (Exception e) { return “Houve um erro na atualização do arquivo. Consulte o administrador do sistema. n” + e.Message; } return “”; } } }
Fonte: felgas.com/?p=65 por Fabiano Felgas
Fabiano e Willian,
Gostaria de perguntar o seguinte: Como faço pra um WorkBook ter mais de um WorkSheet?
Gostaria tbm de ver a chamada desses métodos de dentro de uma aplicação.
Obrigado