Usuário com melhor resposta
Data invertida Ao Exportar Para Excel via C # Windows Forms

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
- Editado Thyago Gonçalves quinta-feira, 22 de outubro de 2015 12:56
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
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
-
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
-
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
-