Visual Basic.NET - Problema conversión de grid a Excel

 
Vista:

Problema conversión de grid a Excel

Publicado por batserra (1 intervención) el 12/03/2014 12:43:00
Muy buenas,

Tengo un problema con las conversiones de un grid a excel ver si alguien puede echarme una mano

El grid tiene lo siguiente:

0.733333 120.000 20007.047 9365.221 170.263 9305.221 170.219 9425.221 170.667 0.090 0.600
6.731220 50.000 9292.373 9562.563 171.592 9537.563 171.423 9587.563 171.894 0.034 0.538
12.111977 62.627 1250.000 9661.794 172.793 9630.481 172.414 9693.108 171.604 0.392 -5.010

Y el excel me muestra lo siguiente:

0,733333 120 20007,047 9365,221 170,263 9305,221 170,219 9425,221 170,667 0,09 0,6
6,73122 50 9292,373 9562,563 171,592 9537,563 171,423 9587,563 171,894 0,034 0,538
12,111977 62,627 1250 9661,794 172,793 9630,481 172,414 9693,108 171,604 0,392 -5,01

Como ven los fallos están en la segunda columna ,que coge el tanto por mil y lo sustituye como decimal

La primera coluna ya es correcto son valores decimales ,pero la segunda son valores de tanto por mil.
Mi código es el siguiente:


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

If ((DataGridView1.Columns.Count = 0) Or (DataGridView1.Rows.Count = 0)) Then
Exit Sub
End If

'Creating dataset to export
Dim dset As New DataSet
'add table to dataset
dset.Tables.Add()
'add column to that table
For i As Integer = 0 To DataGridView1.ColumnCount - 1
dset.Tables(0).Columns.Add(DataGridView1.Columns(i).HeaderText)
Next
'add rows to the table
Dim dr1 As DataRow
For i As Integer = 0 To DataGridView1.RowCount - 1
dr1 = dset.Tables(0).NewRow
For j As Integer = 0 To DataGridView1.Columns.Count - 1
dr1(j) = DataGridView1.Rows(i).Cells(j).Value
Next
dset.Tables(0).Rows.Add(dr1)
Next

' Dim excel As New Microsoft.Office.Interop.Excel.ApplicationClass
Dim excel As New Microsoft.Office.Interop.Excel.Application
Dim wBook As Microsoft.Office.Interop.Excel.Workbook
Dim wSheet As Microsoft.Office.Interop.Excel.Worksheet

wBook = excel.Workbooks.Add()
wSheet = wBook.ActiveSheet()

Dim dt As System.Data.DataTable = dset.Tables(0)
Dim dc As System.Data.DataColumn
Dim dr As System.Data.DataRow
Dim colIndex As Integer = 0
Dim rowIndex As Integer = 0

For Each dc In dt.Columns
colIndex = colIndex + 1
excel.Cells(1, colIndex) = dc.ColumnName
Next

For Each dr In dt.Rows
rowIndex = rowIndex + 1
colIndex = 0
For Each dc In dt.Columns
colIndex = colIndex + 1
excel.Cells(rowIndex + 1, colIndex) = dr(dc.ColumnName)

Next
Next

wSheet.Columns.AutoFit()

Dim saveFileDialog1 As New SaveFileDialog()
saveFileDialog1.Filter = "Archivo Xls |*.xls"
saveFileDialog1.Title = "Grabar como archivo Excel"
saveFileDialog1.ShowDialog()

' If the file name is not an empty string open it for saving.
If saveFileDialog1.FileName <> "" Then
Dim strFileName As String ' = "C:\Users\llserra\Documents\testexcel2.xls"
strFileName = saveFileDialog1.FileName
Dim blnFileOpen As Boolean = False
Try
Dim fileTemp As System.IO.FileStream = System.IO.File.OpenWrite(strFileName)
fileTemp.Close()
Catch ex As Exception
blnFileOpen = False
End Try

If System.IO.File.Exists(strFileName) Then
System.IO.File.Delete(strFileName)
End If

wBook.SaveAs(strFileName)
excel.Workbooks.Open(strFileName)
excel.Visible = True
End If

End Sub

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


Muchas gracias por toda la ayuda posible...
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