Vou agrupar todas as explicações em um único código.
Como foi no post anterior, vou partir do princípio de que o componente para trabalhar com Excel já foi adicionado às referências do projeto.
Se não estiver entendendo absolutamente nada do que está lendo sugiro ver o post Criar planilha do Excel em C#. Lá tem um tutorial para adicionar o componente Microsoft Excel 12.0 Object Library às referências, não que não sirva pra outras versões, mas a que está lá é a 12.0.
No meu primeiro post sobre Excel e C#, o qual eu citei acima, eu coloquei um método para remover linhas do Excel. Recentemente me dei conta de que precisava de um método para adicionar linhas também. Essa vai ser a primeira parte do post. É bem simples: usando um Excel.Range eu defino qualquer célula que pertença à linha onde eu quero inserir uma nova linha e então eu uso o método Insert para inserir uma linha. É possível inserir uma única célula também, mas os detalhes ficam no código.
A segunda parte do código é para mostrar um pouco de formatação de células: como mudar a fonte, o tamanho da fonte, a cor, opções de negrito, sublinhado e itálico, alinhamento do texto, tamanho da célula, cor de fundo da célula e opções de borda.
Basicamente é isso.
Então vamos começar.
Vou fazer do mesmo jeito que fiz no post anterior, vou só abrir um documento que tenho num Form vazio e fazer as alterações no construtor, apenas pra exemplificar, mostrando os métodos responsáveis por cada uma das coisas que citei acima.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
namespace TesteExcel
{
public partial class Form1 : Form
{
private Excel.Application excelApp = null;
private Excel.Workbook arquivoDeTrabalho = null;
private Excel.Worksheet planilha = null;
public Form1()
{
InitializeComponent();
excelApp = new Excel.Application();
excelApp.DisplayAlerts = false;
arquivoDeTrabalho = (Excel.Workbook)excelApp.Workbooks.Open(
excelApp.DisplayAlerts = false;
arquivoDeTrabalho = (Excel.Workbook)excelApp.Workbooks.Open(
"C:\\Teste.xlsx", 0, true, 5, "", "",
true, Excel.XlPlatform.xlWindows, "\t", false,
false, 0, true, null, null);
planilha = (Excel.Worksheet)arquivoDeTrabalho.Sheets[1];
planilha = (Excel.Worksheet)arquivoDeTrabalho.Sheets[1];
excelApp.Visible = true;
try
{
/*Adiciona uma única célula.*/
celulas = planilha.get_Range(planilha.Cells[1, 1],
planilha.Cells[1, 1]);
celulas.Insert(Excel.XlInsertShiftDirection.xlShiftDown,
Excel.XlInsertFormatOrigin.xlFormatFromRightOrBelow);
/*Adiciona uma linha*/
celulas = planilha.get_Range(planilha.Cells[1, 1],
{
/*Adiciona uma única célula.*/
celulas = planilha.get_Range(planilha.Cells[1, 1],
planilha.Cells[1, 1]);
celulas.Insert(Excel.XlInsertShiftDirection.xlShiftDown,
Excel.XlInsertFormatOrigin.xlFormatFromRightOrBelow);
/*Adiciona uma linha*/
celulas = planilha.get_Range(planilha.Cells[1, 1],
planilha.Cells[1, 1]).EntireRow;
celulas.Insert(Excel.XlInsertShiftDirection.xlShiftDown,
Excel.XlInsertFormatOrigin.xlFormatFromRightOrBelow);
/*Define textos para as células usadas.*/
planilha.Cells[1, 1] = "Fonte Verdana";
planilha.Cells[1, 2] = "Fonte tamanho 7,5";
planilha.Cells[1, 3] = "Fonte cor Vermelha";
planilha.Cells[2, 1] =
"Fonte em itálico. Texto centralizado";
planilha.Cells[2, 2] =
"Fonte sublinhada. Texto à esquerda.";
planilha.Cells[2, 3] =
"Fonte em negrito. Texto à direita.";
planilha.Cells[3, 1] =
"Fundo Amarelo. Texto justificado.";
planilha.Cells[3, 2] =
"Célula com tamanho alterado. 20,0x50,0";
planilha.Cells[3, 3] = "Sem quebra de texto automática.";
/*Define um tamanho padrão para as células.*/
celulas = planilha.get_Range(planilha.Cells[1, 1],
planilha.Cells[3, 3]);
celulas.ColumnWidth = 15.0F;
celulas.RowHeight = 45.0F;
celulas.WrapText = true; //Quebra de texto automática.
/*Define a fonte da célula como Verdana*/
celulas = planilha.get_Range(planilha.Cells[1, 1],
planilha.Cells[1, 1]);
celulas.Font.Name = "Verdana";
/*Define o tamanho da fonte como 7,5*/
celulas = planilha.get_Range(planilha.Cells[1, 2],
planilha.Cells[1, 2]);
celulas.Font.Size = 7.5F;
/*Define a cor da fonte como vermelha*/
celulas = planilha.get_Range(planilha.Cells[1, 3],
planilha.Cells[1, 3]);
celulas.Font.Color = Excel.XlRgbColor.rgbRed;
/*Define o texto em itálico e centralizado.*/
celulas = planilha.get_Range(planilha.Cells[2, 1],
planilha.Cells[2, 1]);
celulas.Font.Italic = true;
celulas.HorizontalAlignment =
Excel.XlHAlign.xlHAlignCenter;
/*Define o texto sublinhado e à esquerda.*/
celulas = planilha.get_Range(planilha.Cells[2, 2],
planilha.Cells[2, 2]);
celulas.Font.Underline = true;
celulas.HorizontalAlignment =
Excel.XlHAlign.xlHAlignLeft;
/*Define o texto em negrito e à direita.*/
celulas = planilha.get_Range(planilha.Cells[2, 3],
planilha.Cells[2, 3]);
celulas.Font.Bold = true;
celulas.HorizontalAlignment =
Excel.XlHAlign.xlHAlignRight;
/*Define o fundo amarelo e o texto justificado.*/
celulas = planilha.get_Range(planilha.Cells[3, 1],
planilha.Cells[3, 1]);
celulas.Interior.Color = Excel.XlRgbColor.rgbYellow;
celulas.HorizontalAlignment =
Excel.XlHAlign.xlHAlignJustify;
/*Muda o tamanho da célula e, por consequência, de
toda a linha e de toda a coluna.*/
celulas = planilha.get_Range(planilha.Cells[3, 2],
planilha.Cells[3, 2]);
celulas.ColumnWidth = 20.0F;
celulas.RowHeight = 50.0F;
/*Define célula sem quebra de texto.*/
celulas = planilha.get_Range(planilha.Cells[3, 3],
planilha.Cells[3, 3]);
celulas.WrapText = false;
/*Define células com bordas.*/
celulas = planilha.get_Range(planilha.Cells[1, 1],
planilha.Cells[1, 3]);
celulas.Borders.LineStyle =
Excel.XlLineStyle.xlContinuous;
/*Também é possível remover ou coloca apenas algumas
bordas, a propriedade Borders é indexável.*/
celulas.Insert(Excel.XlInsertShiftDirection.xlShiftDown,
Excel.XlInsertFormatOrigin.xlFormatFromRightOrBelow);
/*Define textos para as células usadas.*/
planilha.Cells[1, 1] = "Fonte Verdana";
planilha.Cells[1, 2] = "Fonte tamanho 7,5";
planilha.Cells[1, 3] = "Fonte cor Vermelha";
planilha.Cells[2, 1] =
"Fonte em itálico. Texto centralizado";
planilha.Cells[2, 2] =
"Fonte sublinhada. Texto à esquerda.";
planilha.Cells[2, 3] =
"Fonte em negrito. Texto à direita.";
planilha.Cells[3, 1] =
"Fundo Amarelo. Texto justificado.";
planilha.Cells[3, 2] =
"Célula com tamanho alterado. 20,0x50,0";
planilha.Cells[3, 3] = "Sem quebra de texto automática.";
/*Define um tamanho padrão para as células.*/
celulas = planilha.get_Range(planilha.Cells[1, 1],
planilha.Cells[3, 3]);
celulas.ColumnWidth = 15.0F;
celulas.RowHeight = 45.0F;
celulas.WrapText = true; //Quebra de texto automática.
/*Define a fonte da célula como Verdana*/
celulas = planilha.get_Range(planilha.Cells[1, 1],
planilha.Cells[1, 1]);
celulas.Font.Name = "Verdana";
/*Define o tamanho da fonte como 7,5*/
celulas = planilha.get_Range(planilha.Cells[1, 2],
planilha.Cells[1, 2]);
celulas.Font.Size = 7.5F;
/*Define a cor da fonte como vermelha*/
celulas = planilha.get_Range(planilha.Cells[1, 3],
planilha.Cells[1, 3]);
celulas.Font.Color = Excel.XlRgbColor.rgbRed;
/*Define o texto em itálico e centralizado.*/
celulas = planilha.get_Range(planilha.Cells[2, 1],
planilha.Cells[2, 1]);
celulas.Font.Italic = true;
celulas.HorizontalAlignment =
Excel.XlHAlign.xlHAlignCenter;
/*Define o texto sublinhado e à esquerda.*/
celulas = planilha.get_Range(planilha.Cells[2, 2],
planilha.Cells[2, 2]);
celulas.Font.Underline = true;
celulas.HorizontalAlignment =
Excel.XlHAlign.xlHAlignLeft;
/*Define o texto em negrito e à direita.*/
celulas = planilha.get_Range(planilha.Cells[2, 3],
planilha.Cells[2, 3]);
celulas.Font.Bold = true;
celulas.HorizontalAlignment =
Excel.XlHAlign.xlHAlignRight;
/*Define o fundo amarelo e o texto justificado.*/
celulas = planilha.get_Range(planilha.Cells[3, 1],
planilha.Cells[3, 1]);
celulas.Interior.Color = Excel.XlRgbColor.rgbYellow;
celulas.HorizontalAlignment =
Excel.XlHAlign.xlHAlignJustify;
/*Muda o tamanho da célula e, por consequência, de
toda a linha e de toda a coluna.*/
celulas = planilha.get_Range(planilha.Cells[3, 2],
planilha.Cells[3, 2]);
celulas.ColumnWidth = 20.0F;
celulas.RowHeight = 50.0F;
/*Define célula sem quebra de texto.*/
celulas = planilha.get_Range(planilha.Cells[3, 3],
planilha.Cells[3, 3]);
celulas.WrapText = false;
/*Define células com bordas.*/
celulas = planilha.get_Range(planilha.Cells[1, 1],
planilha.Cells[1, 3]);
celulas.Borders.LineStyle =
Excel.XlLineStyle.xlContinuous;
/*Também é possível remover ou coloca apenas algumas
bordas, a propriedade Borders é indexável.*/
celulas = planilha.get_Range(planilha.Cells[2, 2],
planilha.Cells[3, 3]);
celulas.Borders.LineStyle =
Excel.XlLineStyle.xlContinuous;
celulas.Borders[
Excel.XlBordersIndex.xlInsideHorizontal].LineStyle =
Excel.XlLineStyle.xlLineStyleNone;
celulas.Borders[
Excel.XlBordersIndex.xlInsideVertical].LineStyle =
Excel.XlLineStyle.xlLineStyleNone;
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
planilha.Cells[3, 3]);
celulas.Borders.LineStyle =
Excel.XlLineStyle.xlContinuous;
celulas.Borders[
Excel.XlBordersIndex.xlInsideHorizontal].LineStyle =
Excel.XlLineStyle.xlLineStyleNone;
celulas.Borders[
Excel.XlBordersIndex.xlInsideVertical].LineStyle =
Excel.XlLineStyle.xlLineStyleNone;
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
MessageBox.Show("Pausa para ver o documento.");
arquivoDeTrabalho.Close(false, "", false);
excelApp.Quit();
excelApp.Quit();
}
}
}
Como podem ver eu coloquei uma MessageBox para fazer uma pausa no construtor.
Repetindo, é só uma exemplificação dos métodos existentes. Normalmente eu crio uma classe para o post, mas dessa vez resolvi deixar apenas essa amostra dos métodos. Além disso assim fica um exemplo um que pode ser compilado e testado diretamente.
A maioria das coisas que está no código eu descobri sozinho, enquanto "desvendava" a classe do Excel, mas a parte da indexação das bordas foi uma coisa que me deu trabalho. É bem óbvio, mas não me passou pela cabeça e então vou dar os créditos merecidos ao local onde achei a solução:
http://www.debugging.com/bug/20758
Outros posts sobre Excel e C#:
Criar planilha do Excel em C#
Excel e C#: Abrir uma planilha e ler células
Por hoje era só.
Qualquer dúvida, é só comentar.
3 comentários:
Parabéns pelo trabalho! visito sempre seu site... Aproveitando, gostaria de indicar o site www.iAulas.com.br lá você vai encontrar mais de 10 mil apostilas para download gratuito dos mais variados assuntos, inclusive são dezenas de apostilas sobre Excel... espero ter ajudado...
Muito obrigado!
Acessei o site e achei bastante coisa interessante. Assim que tiver tempo darei uma olhada nas apostilas.
Obrigado mais uma vez.
ótimo trabalho!
Postar um comentário