none
Data invertida Ao Exportar Para Excel via C # Windows Forms RRS feed

  • Pergunta

  • Pessoal,

    Estou Fazendo uma Exportação dos Dados do DGV para Excel porem tenho Dois campos de data no DGV, dessa maneira (Dia / Mês / ano) Ao Exportar para o excel aparece assim (mês/ dia / ano) na planilha .

    Alguém sabe me dizer qual é o problema que esta ocorrendo e qual a solução.

    DGV:

    Planilha Excel:

    Codigo:

    if  ( dgvPedidos . RowCount  >  0 ) 
                { 
                    Microsoft . Office . Interop . Excel . Application  XcelApp  =  new  Microsoft . Office . Interop . Excel . Application ();             
                    
                    tente 
                    
                        {XcelApp. Aplicação. Como massas de Trabalho. Adicionar(Tipo. Faltando);
    
                        Pará  (int i = 0; i<dgvPedidos. ColumnCount; i ++) 
                        {string de
                            teste =dgvPedidos. Colunas[Eu]. HeaderText;
    
                            XcelApp. Cells[1, i + 1]  =dgvPedidos. Colunas[Eu]. 
                        HeaderText;}
    
                        for  ( int i =  0 ; i < dgvPedidos . RowCount ; i ++) 
                        { 
                            for  ( int j =  0 ; j < dgvPedidos . ColumnCount ; j ++) 
                            { 
                                if  ( dgvPedidos . Columns [ j ]. HeaderText  ==  "Faturado Em  "||dgvPedidos. Colunas[j]. HeaderText  == "Prazo Limite 60 Dias" ) 
                                {                                
                                    XcelApp . Cells [ i +  2 , j +  1 ]  = dgvPedidos . Rows [ i ]. Cells [ j ]. Value . ToString (). Substring ( 0 ,  10 ); 
                                } 
                                else 
                                { 
                                    XcelApp . Cells [ i +  2 , j +  1 ]  = dgvPedidos . Rows [ i ]. Cells [ j ]. Value . ToString (); 
                                }                             
                            } 
                        }
    
                        XcelApp. Colunas. AutoAjuste ();
    
                        XcelApp. Visible  =                    
                    Verdadeiro;} 
                    prendedor (Exceção ex) 
                    
                        {MessageBox. Mostrar("Erro:"  +ex. Mensagem); 
                        XcelApp. Saia
                    
                ();}} 
                Mais
                
                    {MessageBox. Mostrar ("NÃO EXISTE Dados Para importar PARA O Excel.","  IMPORTANDO PARA EXCEL ", MessageBoxButtons. ESTÁ BEM,  MessageBoxIcon. 
                
            Erro);}}

    Att.

    Thyago



    quinta-feira, 22 de outubro de 2015 12:51

Respostas

  • Thyago, onde você está digitando a data, troque por:

    //Exportação das linhas
    //linha 2 da planilha
    excelApp.Cells[2, 1] = "1";
    excelApp.Cells[2, 2] = "Thyago";
    //DateTime(int Ano, int Mes, int Dia)
    excelApp.Cells[2, 3] = new DateTime(2015, 03, 01);
    excelApp.Cells[2, 4] = "0,1";
    //linha 3 da planilha
    excelApp.Cells[3, 1] = "2";
    excelApp.Cells[3, 2] = "Lais";
    //DateTime(int Ano, int Mes, int Dia)
    excelApp.Cells[3, 3] = new DateTime(2015, 05, 03);
    excelApp.Cells[3, 4] = "0,2";
    Deve resolver!


    Leonardo D'Amato

    • Sugerido como Resposta SimorC quinta-feira, 22 de outubro de 2015 19:23
    • Marcado como Resposta Thyago Gonçalves sexta-feira, 23 de outubro de 2015 11:42
    quinta-feira, 22 de outubro de 2015 19:06

Todas as Respostas

  • Bom dia, Thyago.

    Tente colocar este trecho no seu código, e, também, verifique a configuração de formato de data do seu pc (Troque o [1, 1] pela localização das células que você deseja formatar:

    Range rg = (Range)XcelApp.Cells[1, 1];
    rg.EntireColumn.NumberFormat = "DD/MM/YYYY";

    Caso seja a coluna inteira, pode testar (eu mesmo não testei rs):

    Range rg = (Range)XcelApp.Columns[1];
    Fonte: http://stackoverflow.com/questions/3310800/how-to-make-correct-date-format-when-writing-data-to-excel


    Leonardo D'Amato



    • Sugerido como Resposta Marcos SJ quinta-feira, 22 de outubro de 2015 13:05
    • Editado Leonardo N. D'Amato quinta-feira, 22 de outubro de 2015 13:06
    • Não Sugerido como Resposta Thyago Gonçalves quinta-feira, 22 de outubro de 2015 18:17
    quinta-feira, 22 de outubro de 2015 13:01
  • Leonardo, 

    depois de ficar estudando hoje sobre sua sugestão, consegui compreender melhor o código. Porem permanece com o mesmo problema, percebi que isso acontece com data tipo: 03/01/2015(DD/MM/YYYY) parece que dia menor que 10 ele inverti o dia pelo mês.

    Até fiz um outro exemplo especifico sobre isso. Segue abaixo o código com a data que da problema:

    //Hoje iremos entrar um pouco mais no detalhe,
            //onde mostraremos como recuperar um conjunto de 
            //células e manipular a formatação das mesmas.
            private void button1_Click(object sender, EventArgs e)
            {
                Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
    
                //Objeto que representa um conjunto de células
                Microsoft.Office.Interop.Excel.Range celulas;            
    
                excelApp.Workbooks.Add(Type.Missing);
                
                //Exportação de colunas
                //linha 1 da planilha
                excelApp.Visible = true;
                excelApp.Cells[1, 1] = "Codigo";
                excelApp.Cells[1, 2] = "Nome";
                excelApp.Cells[1, 3] = "Data de Cadastro";
                excelApp.Cells[1, 4] = "Percentual de Desconto";
    
                //Vamos agora centralizar os títulos
                celulas = excelApp.get_Range("A1","D1");
                celulas.HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlCenter;
    
                //Recuperamos o conjunto de células de A1 até D1
                celulas = excelApp.get_Range("A1", "D1");
    
                //Após recuperamos, podemos manipular o conjunto
                //Neste caso mudaremos a cor para cinza
                celulas.Interior.Color = ColorTranslator.ToWin32(Color.LightGray);
    
                //Colocaremos a fonte como negrito
                celulas.Font.Bold = true;
    
                //Inserimos borda na célula
                celulas.Borders.LineStyle = XlLineStyle.xlContinuous;
    
                //Exportação das linhas
                //linha 2 da planilha
                excelApp.Cells[2, 1] = "1";
                excelApp.Cells[2, 2] = "Thyago";
                excelApp.Cells[2, 3] = "03/01/2015";
                excelApp.Cells[2, 4] = "0,1";
                //linha 3 da planilha
                excelApp.Cells[3, 1] = "2";
                excelApp.Cells[3, 2] = "Lais";
                excelApp.Cells[3, 3] = "03/05/2015";
                excelApp.Cells[3, 4] = "0,2";
    
                //Agora vamos formatar a coluna do nosso relatório
                //Para isso precisamos primeiro recuperar as células
                celulas = excelApp.get_Range("C2", "C3");
                celulas.NumberFormat = "DD/MM/YYYY";
    
                celulas = excelApp.get_Range("D2", "D3");
                celulas.NumberFormat = "0,00%";
    
                //Vamos exibir um total, com o numero de registros
                //do relatório, onde aproveitaremos para mesclar 3 células
                excelApp.Cells[4, 1] = "Total de Registros";
                celulas = excelApp.get_Range("A4", "C4");            
                celulas.Merge(Type.Missing);
                excelApp.Cells[4, 4] = "2";
    
                //Vamos agora centralizar uma celula
                celulas = excelApp.get_Range("D4");
                celulas.HorizontalAlignment = Microsoft.Office.Interop.Excel.Constants.xlCenter;
    
                //Após exportar as linhas, podemos AutoAjustar as colunas
                excelApp.Columns.AutoFit();
    
                //Salvamos a planilha passando o caminho como parâmetro
                excelApp.ActiveWorkbook.SaveCopyAs(@"C:\GERCOM\Relatorios\RelatorioPedidos.xls");
    
                //Informamos que nossa planilha foi salva para que não sejamos
                //questionados as fechar a mesma
                excelApp.ActiveWorkbook.Saved = true;
    
                //Fechamos a aplicação
                //excelApp.Quit();
    
            }

    se alguém poder me dizer o que é que esta acontecendo, fico muito agradecido, pois essa exportação foi uma solicitação de um cliente...

    Obrigado por enquanto..

    Att.

    Thyago 

    quinta-feira, 22 de outubro de 2015 18:24
  • Thyago, onde você está digitando a data, troque por:

    //Exportação das linhas
    //linha 2 da planilha
    excelApp.Cells[2, 1] = "1";
    excelApp.Cells[2, 2] = "Thyago";
    //DateTime(int Ano, int Mes, int Dia)
    excelApp.Cells[2, 3] = new DateTime(2015, 03, 01);
    excelApp.Cells[2, 4] = "0,1";
    //linha 3 da planilha
    excelApp.Cells[3, 1] = "2";
    excelApp.Cells[3, 2] = "Lais";
    //DateTime(int Ano, int Mes, int Dia)
    excelApp.Cells[3, 3] = new DateTime(2015, 05, 03);
    excelApp.Cells[3, 4] = "0,2";
    Deve resolver!


    Leonardo D'Amato

    • Sugerido como Resposta SimorC quinta-feira, 22 de outubro de 2015 19:23
    • Marcado como Resposta Thyago Gonçalves sexta-feira, 23 de outubro de 2015 11:42
    quinta-feira, 22 de outubro de 2015 19:06
  • Leonardo, muito obrigado pela ajuda.... perfect... Show!!!

    Abs

    Thyago

    sexta-feira, 23 de outubro de 2015 11:42