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

Ruben_Barbosa

Troca de Data

9 mensagens neste tópico

Ola,

O meu problema é o seguinte:

A minha data é um DataTimerP1 que exporta a informação para excel com string e nao como Data.

Agora o meu Problema é o Seguinte quando faco um exporta de informação de VB.NET para excel o que me acontece é

Se a data for inferior a actual ele escreve-me MM/DD/AAAA no  Excel

Se a data for igual ou superior ele Escreve-me DD/MM/AAAA no Excel

Tambem pensei por o meu office ser um 2007 em portugues e o VB.net em ingles mas dps de meter a informação como string devia comer tudo  certo :hmm:.

É esse o meu problema é  Se a data for inferior a actual ele escreve-me MM/DD/AAAA no  Excel e quero que escreve DD/MM/AAAA

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como estás a escrever a data no Excel?

Tens de mostrar os teus métodos de escrita e leitura para que se possa tirar conclusões.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

  'EXTRAIR INFORMACÃO PARA EXCEL
        Try
            Dim objApp As Object
            objApp = CreateObject("Excel.Application")
            Dim xlw As Microsoft.Office.Interop.Excel.Workbook
            Dim i As Integer = 0
            Dim j As Integer = 0
            Dim oldCI As System.Globalization.CultureInfo = _
              System.Threading.Thread.CurrentThread.CurrentCulture
            System.Threading.Thread.CurrentThread.CurrentCulture = _
                New System.Globalization.CultureInfo("en-US")

            xlw = objApp.Workbooks.Add

            xlw.Sheets(1).Select()

            objApp.ActiveSheet.Cells(1, 1) = "ID FOLHAS"
            objApp.ActiveSheet.Cells(1, 2) = "Departamento"
            objApp.ActiveSheet.Cells(1, 3) = "Utilizador"
            objApp.ActiveSheet.Cells(1, 4) = "Data Requisição"
            objApp.ActiveSheet.Cells(1, 5) = "Quantidade Unitária"
            objApp.ActiveSheet.Cells(1, 6) = "Observação"

            objApp.Columns.AutoFit()

            For i = 0 To DataGridView1.Rows.Count - 1       'Numero de Linhas para extrair informação
                objApp.Columns.AutoFit()
                For j = 0 To DataGridView1.Columns.Count - 1 'Numero de Colunas Com os Nomes para a BD
                    xlw.Application.Cells(i + 2, j + 1).value = DataGridView1.Rows(i).Cells(j).Value
                Next
            Next
            'Nex
            objApp.Visible = True
        Catch
            MsgBox("O EXCEL não pode ser iniciado!", vbCritical)
        End Try

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

System.Globalization.CultureInfo("en-US")

DataGridView1.Rows(i).Cells(j).Value

E aposto que o teu campo da base de dados é DateTime.

Estás-lhe a dar uma "culture" diferente da que queres empregar e estás a usar o Value da célula.

Ou seja, com a culture errada, ele vai apanhar a data nesse formato. Depois o value contém o respectivo data type e não string.

Ou alteras o culture info e deve ficar OK, ou tens de adicionar lá em baixo no ciclo uma verificação para ver os nomes das colunas e se o nome da coluna for o campo de data, convertes o value para data e vais extraír os elementos com a ordem que pretendes.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não na minha Base de Dados o meu Campo Data é nvchar (ou seja aceita tudo).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então troca

DataGridView1.Rows(i).Cells(j).Value

para

DataGridView1.Rows(i).Cells(j).Value.ToString

e usa

Debug.Print(DataGridView1.Rows(i).Cells(j).Value.ToString)

para veres o que realmente vem da base de dados, para entendermos onde é que a conversão se está a dar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ribeiro dá-me o seguinte Erro :|.

Não sei pk é que ele nao me aceita a string :|

semttulom.jpg

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

'EXTRAIR INFORMACÃO PARA EXCEL
        Try

            Dim objApp As Object
            objApp = CreateObject("Excel.Application")
            Dim objBook As Microsoft.Office.Interop.Excel.Workbook

            Dim i As Integer = 0
            Dim j As Integer = 0
            Dim oldCI As System.Globalization.CultureInfo = _
              System.Threading.Thread.CurrentThread.CurrentCulture
            System.Threading.Thread.CurrentThread.CurrentCulture = _
                New System.Globalization.CultureInfo("en-US")

            objBook = objApp.Workbooks.Add

            objBook.Sheets(1).Select()
            objApp.ActiveSheet.Cells(1, 1) = "ID FOLHAS"
            objApp.ActiveSheet.Cells(1, 2) = "Departamento"
            objApp.ActiveSheet.Cells(1, 3) = "Utilizador"
            objApp.ActiveSheet.Cells(1, 4) = "Data Requisição"
            objApp.ActiveSheet.Cells(1, 5) = "Quantidade Unitária"
            objApp.ActiveSheet.Cells(1, 6) = "Observação"

            objApp.Columns.AutoFit()
            For i = 0 To DataGridView1.Rows.Count - 1       'Numero de Linhas para extrair informação
                objApp.Columns.AutoFit()
                For j = 0 To DataGridView1.Columns.Count - 1 'Numero de Colunas Com os Nomes para a BD
                    TextBox1.Text = DataGridView1.Rows(i).Cells(j).Value
                    objBook.Application.Cells(i + 2, j + 1).value = TextBox1.Text
                Next
            Next
            'Nex
            objApp.Visible = True
            objApp = Nothing
            objBook = Nothing
        Catch
            MsgBox("O EXCEL não pode ser iniciado!", vbCritical)
        End Try

resolvi assim :P e ocultei a textbox :) e deu :D

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