Visual Basic.NET - problema al exportar datagrid a excel

 
Vista:

problema al exportar datagrid a excel

Publicado por Leonardo (1 intervención) el 22/04/2008 23:32:50
hola a todos

mi problema es que cuando exporto los datos de mi datagrid a excel, la hoja de excel toma numeros como numeros y me borra los ceros de la izquierda, el problema es que esos ceros los necesito por que son parte de un codigo, incluso tengo una columa con un codigo que son puros numeros y cuando realiza la exportacion los convierte a un codigo extraño que que termina con un E+15 supongo que eso es una cuestion de formato de las celdas de excel pero no encuentro la manera de modificarlo, estoy completamente seguro de que los datos estan bien en el datagrid por que los tomo de una base de datos hecha en sql server, no se si alguien pueda ayudarme

anexo el codigo que estoy usando para la exportacion de los datos, (que incluso tome de esta misma pagina) saludos

Public Sub ExportToExcel()
Dim xlApp As New Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim variable As String
Dim fila, Columna, numcol, x As Integer
Dim myTable As DataTable
Dim FilaExcel As Integer = 2

xlBook = CType(xlApp.Workbooks.Add, Excel.Workbook)
xlSheet = CType(xlBook.Worksheets(1), Excel.Worksheet)
Try
Me.Cursor = Cursors.WaitCursor
myTable = CType(DataGrid.DataSource, DataTable) 'obtengo la estructura del datagrid
numcol = myTable.Columns.Count ' el doc de excel tiene 4 columnas para este ejemplo'''''''''''''''''''
For x = 1 To numcol
xlSheet.Cells(1, x).Font.Bold = True
xlSheet.Cells(1, x).Font.Size = 11
xlSheet.Cells(1, x).Font.Name = "Arial"
Next

For fila = 0 To myTable.Rows.Count - 1 ' numero de filas
For Columna = 0 To myTable.Columns.Count - 1 ' numero de columnas
xlSheet.Cells(1, Columna + 1).value = myTable.Columns(Columna).ColumnName
If IsNumeric(DataGrid.Item(fila, Columna).ToString) Then
variable = Convert.ToString(DataGrid.Item(fila, Columna))
ElseIf IsNumeric(DataGrid.Item(fila, Columna).ToString) Then
variable = Convert.ToString(DataGrid.Item(fila, Columna))
ElseIf IsDate(DataGrid.Item(fila, Columna).ToString) Then
variable = Convert.ToString(Microsoft.VisualBasic.Format(DataGrid.Item(fila, Columna), "Short Date")) ' convierte la fecha en formato 22/11/77
ElseIf IsDBNull(DataGrid.Item(fila, Columna).ToString) Then
variable = ""
Else
variable = Convert.ToString(DataGrid.Item(fila, Columna))
End If
xlSheet.Cells(FilaExcel, Columna + 1).value = variable
Next
FilaExcel += 1
Next
xlSheet.Columns.AutoFit()
'Se exporta la hoja Excel cargada en el objeto oExcel a un archivo .XLS
Dim SaveDialog = New SaveFileDialog
SaveDialog.DefaultExt = "*.xls"
SaveDialog.Filter = "(*.xls)|*.xls"
If SaveDialog.ShowDialog = DialogResult.OK Then
Try
xlSheet.SaveAs(SaveDialog.FileName)
Me.Cursor = Cursors.Default
MessageBox.Show("Documento Guardado Como : " & SaveDialog.FileName, "Información", MessageBoxButtons.OK, MessageBoxIcon.Information)
xlBook.Close()
xlApp.Quit()
xlApp = Nothing
Catch ex As Exception
MessageBox.Show("No se Puede Procesar, El Archivo puede que se encuentre abierto, Verifique")
End Try
End If
Catch ex As System.NullReferenceException
MsgBox(ex.Message)
Me.Cursor = Cursors.Default
Exit Sub
End Try
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder