Visual Basic.NET - problemas al trabajar con excel

 
Vista:

problemas al trabajar con excel

Publicado por the kat (1 intervención) el 02/11/2011 14:31:27
Tengo este codigo para poder exportar datos de un datagrid a una hoja de excel pero el problema es que necesito poner los datos en una hoja ya creada, no

Dim m_Excel As New Excel.Application
m_Excel.Visible = True
Dim objLibroExcel As Excel.Workbook = m_Excel.Workbooks.Add
Dim objHojaExcel As Excel.Worksheet = objLibroExcel.Worksheets(1)
With objHojaExcel
.Visible = Excel.XlSheetVisibility.xlSheetVisible
.Activate()
'Encabezado

Const primeraLetra As Char = "C"
Const primerNumero As Short = 10
Dim Letra As Char, UltimaLetra As Char
Dim Numero As Integer, UltimoNumero As Integer
Dim cod_letra As Byte = Asc(primeraLetra) - 1
Dim sepDec As String = Application.CurrentCulture.NumberFormat.NumberDecimalSeparator
Dim sepMil As String = Application.CurrentCulture.NumberFormat.NumberGroupSeparator
'Establecer formatos de las columnas de la hija de cálculo
Dim strColumna As String = ""
Dim LetraIzq As String = ""
Dim cod_LetraIzq As Byte = Asc(primeraLetra) - 1
Letra = primeraLetra
Numero = primerNumero
Dim objCelda As Excel.Range
For Each c As DataGridViewColumn In DataGridView1.Columns
If c.Visible Then
If Letra = "Z" Then
Letra = primeraLetra
cod_letra = Asc(primeraLetra)
cod_LetraIzq += 1
LetraIzq = Chr(cod_LetraIzq)
Else
cod_letra += 1
Letra = Chr(cod_letra)
End If
strColumna = LetraIzq + Letra + Numero.ToString
objCelda = .Range(strColumna, Type.Missing)
If c.ValueType Is GetType(Decimal) OrElse c.ValueType Is GetType(Double) Then
objCelda.EntireColumn.NumberFormat = "#" + sepMil + "0" + sepDec + "00"
End If
End If
Next
Dim objRangoEncab As Excel.Range = .Range(primeraLetra + Numero.ToString, LetraIzq + Letra + Numero.ToString)
UltimaLetra = Letra
Dim UltimaLetraIzq As String = LetraIzq

'CARGA DE DATOS
Dim i As Integer = Numero + 1
For Each reg As DataGridViewRow In DataGridView1.Rows
LetraIzq = ""
cod_LetraIzq = Asc(primeraLetra) - 1
Letra = primeraLetra
cod_letra = Asc(primeraLetra) - 1
For Each c As DataGridViewColumn In DataGridView1.Columns
If c.Visible Then
If Letra = "Z" Then
Letra = primeraLetra
cod_letra = Asc(primeraLetra)
cod_LetraIzq += 1
LetraIzq = Chr(cod_LetraIzq)
Else
cod_letra += 1
Letra = Chr(cod_letra)
End If
strColumna = LetraIzq + Letra
' acá debería realizarse la carga
.Cells(i, strColumna) = IIf(IsDBNull(reg.ToString), "", reg.Cells(c.Index).Value)
.Range(strColumna + i, strColumna + i).In()

End If
Next
Dim objRangoReg As Excel.Range = .Range(primeraLetra + i.ToString, strColumna + i.ToString)
objRangoReg.Select()
i += 1
Next
UltimoNumero = i
End With
Return True
m_Excel.Quit()
m_Excel = Nothing
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