Ir para conteúdo
Fórum Script Brasil
  • 0

(resolvido)Exportar do DBGrid para o Excel


Greed

Pergunta

Boa Tarde Galera do ScriptBrasil

Alguém ai já exportou o conteúdo de um DBGrid para o excel e bloqueo o conteudo para ele não ser auterado?

Estou utilizando o seguinte código para exportar as informações para o excel

var linha, coluna : integer;
    var planilha : variant;
    var valorcampo : string;
    begin
    planilha:= CreateoleObject('Excel.Application');
    planilha.WorkBooks.add(1);
    planilha.caption := 'RELATÓRIO SIB';
    planilha.visible := true;
    DM.QEstoque.ApplyUpdates;
    DM.QEstoque.First;
    for linha := 0 to DM.QEstoque.RecordCount - 1 do
    begin
       for coluna := 1 to DM.QEstoque.FieldCount do
       begin
         valorcampo := DM.QEstoque.Fields[coluna - 1].AsString;
         planilha.cells[linha + 2,coluna] := valorCampo;
       end;
       DM.QEstoque.Next;
    end;
    for coluna := 1 to DM.QEstoque.FieldCount do
    begin
       valorcampo := DM.QEstoque.Fields[coluna - 1].DisplayLabel;
       planilha.cells[1,coluna] := valorcampo;
    end;
    planilha.columns.Autofit;

O meu problema é que preciso bloquear todas colunas e linhas para que elas não sejam alteradas.

O máximo que o usuario pode fazer é apagar alguma coluna que não seja interessante para a impressão, mas alterar algum dado não!

Alguém pode me ajudar?

Grato pela atenção

Editado por Greed
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
O meu problema é que preciso bloquear todas colunas e linhas para que elas não sejam alteradas.

O máximo que o usuario pode fazer é apagar alguma coluna que não seja interessante para a impressão, mas alterar algum dado não!

Voce só poderá fazer, no seu programa, aquilo que consegue fazer no próprio Excel. Assim, ao proteger as células, não será possível alterar nada - inclusive apagar algumas colunas.

Na verdade, você até pode permitir que alguma(s) coluna(s)/linha(s)/área(s) seja(m) modificada(s), desde que as células desta tenham sua propriedade de travamento desmarcada (todas estão marcadas, por padrão).

Como já mencionei em outro tópico, tudo que você precisar saber sobre VBA do MSOffice, você encontrará nos arquivos de ajuda do Office (especificamente em C:\Arquivos de programas\Microsoft Office\Office\1046).

Mas, facilitando um pouco as coisas segue a informação:

- o método do objeto Sheet para bloquear a planilha chama-se Protect(<senha>) (Proteje);

- para referenciar uma coluna inteira, usa-se a propriedade Columns[<nº coluna>] (Colunas) do objeto Sheet;

- para referenciar uma linha inteira, usa-se a propriedade Rows[<nº linha>] (Linhas) do objeto Sheet;

- para referenciar/selecionar uma área, usa-se a propriedade Range (escala, faixa - de valores);

- o bloqueio é habilitado/desabilitado através da propriedade Locked (bloqueado);

Exemplos;

1) bloquear planilha ativa, mas deixar a coluna 1 (A) liberada para alteração:

...
MSExcel.ActiveSheet.Columns[1].Locked := False;
MSExcel.ActiveSheet.Protect('');
MSExcel.ActiveSheet.SaveAs('C:\Teste.xls');
2) bloquear planilha ativa, mas deixar a linha 5 liberada para alteração:
...
MSExcel.ActiveSheet.Rows[5].Locked := False;
MSExcel.ActiveSheet.Protect('');
MSExcel.ActiveSheet.SaveAs('C:\Teste.xls');
3) bloquear planilha ativa, mas deixar a seleção A1 a B4, liberada para alteração:
...
MSExcel.ActiveSheet.Range['A1:B4'].Locked := False;
MSExcel.ActiveSheet.Protect('');
MSExcel.ActiveSheet.SaveAs('C:\Teste.xls');

Deixar a senha nula (como nos exemplos), resulta em qualquer pessoa poder desbloquear a planilha.

O método Protect, aceita mais parâmetros - passar a senha é o mínimo que você precisará fazer. Veja mais detalhes no arquivo de ajuda.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Agora me diz uma coisa.

eu terei de pagar licença para a microsoft?

Greed, não que eu tenha conhecimento.

A princípio, voce está usando um recurso que deve estar disponível no computador do cliente. Se não houver office instalado, seu programa falhará!

Supondo que o recurso seja uma solicitação do cliente, acho que faz sentido que ele é quem se preocupe com a instalação de uma licença válida do Office. Agora, se você é quem está empurrando o recurso para o cara, e ele não estava ciente disto, acho melhor você falar a respeito com ele.

Abraços

Editado por Micheus
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...