Jump to content
Sportsman18

Problema no código para extrair do DGV para Excel.

Recommended Posts

Sportsman18

Boas, este é o meu primeiro tópico neste fórum. Então é o seguinte, numa fase final do processo do correr do meu programa, tenho uma datagridview com dados e quando carrego no botão , passa os dados da DGV para o excel. O código que uso é este:

        If DataGridView1.Rows.Count > 0 Then
            Dim wapp As Microsoft.Office.Interop.Excel.Application
            Dim wsheet As Microsoft.Office.Interop.Excel.Worksheet
            Dim wbook As Microsoft.Office.Interop.Excel.Workbook
            wapp = New Microsoft.Office.Interop.Excel.Application

            wapp.Visible = True
            wbook = wapp.Workbooks.Add()
            wsheet = wbook.ActiveSheet

            Dim iX As Integer
            Dim iY As Integer
            Dim iC As Integer

            For iC = 0 To DataGridView1.Columns.Count - 1
                wsheet.Cells(1, iC + 1).Value = DataGridView1.Columns(iC).HeaderText
                wsheet.Cells(1, iC + 1).Font.Bold = True
            Next
            For iX = 0 To DataGridView1.Rows.Count - 1
                For iY = 0 To DataGridView1.Columns.Count - 1
                    wsheet.Cells(iX + 2, iY + 1).value = DataGridView1(iY, iX).Value
                Next
            Next

            wsheet.Columns.AutoFit()
        End If

Onde o erro aparece é nesta parte do código:

(...)
            For iX = 0 To DataGridView1.Rows.Count - 1
                For iY = 0 To DataGridView1.Columns.Count - 1
                    wsheet.Cells(iX + 2, iY + 1).value = DataGridView1(iY, iX).Value  <-- É nesta linha que dá erro.
                Next
            Next
(...)

Mensagem do erro.

----------------------

Aproveito este tópico para perguntar se alguém sabe como faço com que dados apareçam por baixo e não ao lado como aparece nesta imagem?

O código usado para guardar o dado no ficheiro texto é este:

(...)
		If CB_tercaadicionar.Checked Then
            My.Computer.FileSystem.WriteAllText("D:\Terca_Feira.txt", TB_Adicionarhora.Text, True)
            My.Computer.FileSystem.WriteAllText("D:\numhora_Terca_Feira.txt", TB_numhora.Text, True)
        End If
(...)

Obrigado!

Share this post


Link to post
Share on other sites
miglaranjeira

Olá

Pelo que percebi do erro, necessitas de esperar que o IDE de receção de dados esteja pronto a recebe-los.

Sugestão:

1º Para teres a certeza que é este o problema, separa o código em dois botoes e aguarda um pouco até executar a função de escrita

2º Se for assim, sugiro a dupla de Async, Await.

Cumprimentos

 

Share this post


Link to post
Share on other sites
Sportsman18
Em 01/07/2018 às 10:02, miglaranjeira disse:

Olá

Pelo que percebi do erro, necessitas de esperar que o IDE de receção de dados esteja pronto a recebe-los.

Sugestão:

1º Para teres a certeza que é este o problema, separa o código em dois botoes e aguarda um pouco até executar a função de escrita

2º Se for assim, sugiro a dupla de Async, Await.

Cumprimentos

 

Boas, só agora vi a mensagem, entretanto encontrei outro código e funciona a 100%. O único problema que falta resolver é a parte do ficheiro texto. 

Quando no programa adiciono dados, esses dados aparecem assim:

dadodado

e não assim:

dado
dado

No primeiro post coloquei o código que uso para adicionar dados.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.