• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

André Parreira

Gravar dados em excel

29 mensagens neste tópico

Boas

Estou a fazer um projecto onde introduzo conteúdo em textboxs, depois elas ao clicar num  botão, o conteúdo vá para uma folha de excel. ate aqui já esta resolvido.

Introduzo o conteúdo na textbox, grava, apaga os valores da textbox, volto a introduzir, assim Sucessivamente, e vai gravando, mas o que nao consigo é ke quando quero ir ver o conteudo no excel, a pagina mostrasse vazia

Podem dizer como resolver o progama, o ent dar tutorais??

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

entao...e pk não estás a gravar....

Introduzo o conteúdo na textbox, grava, apaga os valores da textbox, volto a introduzir, assim Sucessivamente, e vai gravando, mas o que nao consigo é ke quando quero ir ver o conteudo no excel, a pagina mostrasse vazia

porque dizes que está a gravar? onde está a gravar? Estás a exportar para o excel? correctamente? tás a salvar o excel?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

esta a exportar para o excel, porque quando meto a linha de codigo para ver o  ficheiro excel no mesmo botao onde ele importa os dados  para o excel, os dados aparecem no excel

mas quando mudo essa linha para outro botao, quando cliko nele, ele abre o excel mas mostra vazio

Espero que agora tenha sido mais esclarecedor, mando aqui o meu codigo.

        
        Dim excel As Object = CreateObject("excel.Application")



        excel.Workbooks.Add()

        excel.Caption = ("Dados Pessoais")

        excel.Range("A1").Value = "Nome"
        excel.Range("B1").Value = "Idade"
        excel.Range("C1").Value = "Morada"
        excel.Range("D1").Value = "Nacionalidade"



        excel.range("A3").value = TextBoxNome.Text
        excel.range("B3").value = TextBoxidade.Text
        excel.range("C3").value = TextBoxmorada.Text
        excel.range("D3").value = TextBoxnacionalidade.Text


        TextBoxNome.Text = ""
        TextBoxnacionalidade.Text = ""
        TextBoxidade.Text = ""
        TextBoxmorada.Text = ""



        excel.Visible = True

Quando mudo essa linha de codigo;    excel.visible=true  ;  para outro botao ele nao da, mesmo tenho a variavel criada onde de para todo o form

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

a linha que citas apenas serve para mostrar/ocultar  o excel.... não faz nada para além disso..

tirando isso devia funcionar....

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, eu queria que ao clicar no botao, ele abrisse o excel, kom o conteudo que introduzia antes. com o codigo acima referido isso akontece, mas se mudar a linha  de codigo para outro botao, ja nao aparece nada.

Devo ter que ir guardando a medida que vou introduzindo os dados. so quando clicar la no botao que ele mostre. mas nao estou a konseguir fazer.

alguem tem algum tutorial ou de alguma ajuda

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

não estou a perceber o que queres... porque o que tu tas a fazer funciona perfeitamente..........

Mas tu querias por a linha de código só para mudar o excel para visível era?

Ou seja carregavas num botão para o criar....e outro para o mostrar? Estou a perceber bem?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim , porque assim, eu so posso criar 1 registo, depois vou logo para o excel.

queria poder criar quantos kiser, depois ao clikar noutro botao ele abrisse o excel.

exprimentei colocar essa linha de codigo  ;excel.Visible = True; em outro botao, mas abriu o excel mas n mostrou nada

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nada disso... na podes fazer nada disso....

aquilo que tu tens que fazer é criar em primeiro lugar um ficheiro do excel (ate podes testar se existe ou não).

Depois abres o ficheiro e em cada acção save vais lá e, ou determinas a última linha que foi utilizada, ou crias uma variável do programa que te diga em que linha vais.... para não subscreveres dados...

Mas isto é um bocado forçado! Pk não usar uma BD... é para isso que elas servem ;-)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ele tem 2 botoes, um para adicionar os registo, e outro para abrir a folha do excell.

Quando ele adiciona um registo, quer que as textboxs fiqem em branco, e que os dados que ele quer sejam enviados para uma folha de excell, mas nao quer que a mesma abra logo.

Ele apenas quer que a folha de excell abra quando ele carregar no botao para essa mesma função por exemplo

Nome: Bruno

Idade: 18

Localidade: Barreiro

(carrega no botao enviar dados, e os dados vão para a folha de excell. As textboxs ficam limpas)

Nome: Jose Lope

Idade: Indeterminada

Localidade: Indeterminada

(carrega no botao enviar dados, e os dados vao para a mesma folha de excell que os dados a cima. As textboxs ficam limpas)

Agora ele carrega no botao para ver a folha de excell, e o programa abre a folha de excell com os dados (meus e teus) que ele introduzira interiormente. Nao é assim andré?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

yah e isso mesmo.

Tenho ke fazer para o excel, porque foi assim pedido :confused:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim..mas para ir escrever duas vezes na mesma folha, as coordenadas so excel têm que ser incrementadas... não é?

por isso... tem que abrir / criar o excel... ir ver qual foi a ultima linha a ser preenchida e adicionar os novos dados.... tudo isto pode ser feito em background mundo o atributo do excel.visible para false. Depois grava e Fecha o excel...

Qaundo carregar no outro botão não há nada a inventar...vai abrir o file que está a usar anteriormente.

Process.Start("caminho do file")

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como e que eu meto para gravar logo ou se nao ouver gravar.

 Dim excel As Object = CreateObject("excel.Application")

Assim so cria, mas nao especifica onde, nem ve se ja esta criado.

Estame a falhar essa linha de codigo tb.

Ja pesquisei, pesquisei, mas nao estou a konseguir meter.

Depois podia fazer um ciclo for para nao incrementar em cima do outro, ir baixando a linha, mas isso ainda falta um bokado para la xegar.

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ja sei como e ke ele vai buscar o excel, agr falta criar se n ouver, e como tb ainda nao consegui meter, abrir o excel, num botao, ke n seja onde meto o codigo, km em cima esta explicado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

 Dim excelApp As New Excel.Application
        Dim x As String = "c:\xpto.xls"
       if System.IO.File.Exists(x) then
        'A linha de baixo obriga a que o ficheiro exista... é mesmo isso que queres?
        Dim excelBook As Excel.Workbook = excelApp.Workbooks.Open(x)
             else
         Dim excelBook As Excel.Workbook = excelApp.Workbooks.add()
            end if
       excelApp.Visible = True

        excelApp.Workbooks.Open(x)
        '   excel.Workbooks.Open()
        excelApp.Caption = ("Dados Pessoais")
        excelApp.Range("A1").Value = "Nome"
        excelApp.Range("B1").Value = "Idade"
        excelApp.Range("C1").Value = "Morada"
        excelApp.Range("D1").Value = "Nacionalidade"

        excelApp.ActiveWorkbook.Save()
        excelApp.ActiveWorkbook.Close()
        excelApp = Nothing

Este codigo verifica se existe, abre o ficheiro ou cria um novo... e escreve e fecha o excel...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

No meu ocorreu 1 erro nesta linha de codigo

Dim excelApp As New Excel.Application

No Excel.Application, e ja adicionei as referencias Microsoft Excel 12.0 Object Librarye a biblioteca de objectos de microsoft excel 5.0

o erro que da no codigo é

'new' cannot be used on a interface

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

devia funcionar.....

Aqui so tenho a referencia ao excel

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

No meu nao da, se deixar o "new" ele diz que A referência de objecto não foi definida como uma instância de um objecto, se deixar o new, da erro.

'new' cannot be used on a interface.

Como e que eu incremento dados no excel ( para nao se subreporem tenho que fazer um ciclo for), mas para ir gravando a medida que incremento, e depois mostrar a pagina do excel, clicando em outro botao.

Uma ajudinha, ou entao deem.me links para eu pesquisar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Qual é o imports que tens ?

Mostra lá o teu código.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Imports Microsoft.Office.Interop

Imports System.Threading.Thread
Imports Excel
Imports Microsoft.Office.Interop.Excel
Imports System.Globalization

Private Sub btenviar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btenviar.Click

        Dim excel As Object = CreateObject("Excel.Application")
        Dim x As String = "C:\Users\utilizador\Favorites\Desktop\exercico.xlsx"
        If System.IO.File.Exists(x) Then

            Dim excelBook As Excel.Workbook = excel.Workbooks.Open(x)
        Else
            Dim excelBook As Excel.Workbook = excel.Workbooks.add()
        End If

        excel.Caption = "Dados Pessoais"

        excel.Range("A1").Value = "Nome"
        excel.Range("B1").Value = "Idade"
        excel.Range("C1").Value = "Morada"
        excel.Range("D1").Value = "Nacionalidade"



        MsgBox("swss", MsgBoxStyle.DefaultButton3, "df")



        excel.range("A3").value = TextBoxNome.Text
        excel.range("B3").value = TextBoxidade.Text
        excel.range("C3").value = TextBoxmorada.Text
        excel.range("D3").value = TextBoxnacionalidade.Text



        TextBoxNome.Text = ""
        TextBoxnacionalidade.Text = ""
        TextBoxidade.Text = ""
        TextBoxmorada.Text = ""


        excel.visible = True

Queria poder abrir o excel, quando clicar num botao como fiz aqui

 
Private Sub Btver_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btver.Click

        excel.visible = True

A variavel ja esta criada para dar para todo o form.

Esse e o codigo que tenho, tabem ainda falta fazer o ciclo for, para os dados nao se subreporem

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Claro que não podes fazer isso.....pk a variavel excel nao esta definida...logo não vai dar...pk ainda nao foi criada...

Aquilo que tu tens que fazer no botao ver abrir o excel directo...nao me faz sentido que apenas jogues com o visible ou invisible

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tentei fazer, mas nao consegui, podem mostrar links onde ja tenham feito, ou kkr koisa do genero.

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tens ponde postar o exemplo pra eu dar uma vista de olhos...senao envia por mail

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Enviar o exemplo do que pretendo fazer no programa?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Este e o codigo que tenho ate agora

Dim excel As Object = CreateObject("Excel.Application")
        Dim x As String = "C:\Users\utilizador\Favorites\Desktop\exercico.xlsx"
        If System.IO.File.Exists(x) Then

            Dim excelBook As Excel.Workbook = excel.Workbooks.Open(x)
        Else
            Dim excelBook As Excel.Workbook = excel.Workbooks.add()
        End If

        excel.Caption = "Dados Pessoais"

        excel.Range("A1").Value = "Nome"
        excel.Range("B1").Value = "Idade"
        excel.Range("C1").Value = "Morada"
        excel.Range("D1").Value = "Nacionalidade"



        MsgBox("swss", MsgBoxStyle.DefaultButton3, "df")



        excel.range("A3").value = TextBoxNome.Text
        excel.range("B3").value = TextBoxidade.Text
        excel.range("C3").value = TextBoxmorada.Text
        excel.range("D3").value = TextBoxnacionalidade.Text



        TextBoxNome.Text = ""
        TextBoxnacionalidade.Text = ""
        TextBoxidade.Text = ""
        TextBoxmorada.Text = ""


        excel.visible = True

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora