Sie sind auf Seite 1von 3

Public Sub ExportarDatosExcel(ByVal DataGridView1 As DataGridView, ByVal titulo As

String)
2 Dim m_Excel As New Excel.Application
3 m_Excel.Cursor = Excel.XlMousePointer.xlWait
4 m_Excel.Visible = True
5 Dim objLibroExcel As Excel.Workbook = m_Excel.Workbooks.Add
6 Dim objHojaExcel As Excel.Worksheet = objLibroExcel.Worksheets(1)
7 With objHojaExcel
8 .Visible = Excel.XlSheetVisibility.xlSheetVisible
9 .Activate()
10 'Encabezado
11 .Range("A1:L1").Merge()
12 .Range("A1:L1").Value = "INSTITUTO ARGENCAF"
13 .Range("A1:L1").Font.Bold = True
14 .Range("A1:L1").Font.Size = 15
15 'Copete
16 .Range("A2:L2").Merge()
17 .Range("A2:L2").Value = titulo
18 .Range("A2:L2").Font.Bold = True
19 .Range("A2:L2").Font.Size = 12
20
21 Const primeraLetra As Char = "A"
22 Const primerNumero As Short = 3
23 Dim Letra As Char, UltimaLetra As Char
24 Dim Numero As Integer, UltimoNumero As Integer
25 Dim cod_letra As Byte = Asc(primeraLetra) - 1
26 Dim sepDec As String =
Application.CurrentCulture.NumberFormat.NumberDecimalSeparator
27 Dim sepMil As String =
Application.CurrentCulture.NumberFormat.NumberGroupSeparator
28 'Establecer formatos de las columnas de la hija de c�lculo
29 Dim strColumna As String = ""
30 Dim LetraIzq As String = ""
31 Dim cod_LetraIzq As Byte = Asc(primeraLetra) - 1
32 Letra = primeraLetra
33 Numero = primerNumero
34 Dim objCelda As Excel.Range
35 For Each c As DataGridViewColumn In DataGridView1.Columns
36 If c.Visible Then
37 If Letra = "Z" Then
38 Letra = primeraLetra
39 cod_letra = Asc(primeraLetra)
40 cod_LetraIzq += 1
41 LetraIzq = Chr(cod_LetraIzq)
42 Else
43 cod_letra += 1
44 Letra = Chr(cod_letra)
45 End If
46 strColumna = LetraIzq + Letra + Numero.ToString
47 objCelda = .Range(strColumna, Type.Missing)
48 objCelda.Value = c.HeaderText
49 objCelda.EntireColumn.Font.Size = 8
50 'objCelda.EntireColumn.NumberFormat =
c.DefaultCellStyle.Format
51 If c.ValueType Is GetType(Decimal) OrElse c.ValueType Is
GetType(Double) Then
52 objCelda.EntireColumn.NumberFormat = "#" + sepMil +
"0" + sepDec + "00"
53 End If
54 End If
55 Next
56
57 Dim objRangoEncab As Excel.Range = .Range(primeraLetra +
Numero.ToString, LetraIzq + Letra + Numero.ToString)
58 objRangoEncab.BorderAround(1, Excel.XlBorderWeight.xlMedium)
59 UltimaLetra = Letra
60 Dim UltimaLetraIzq As String = LetraIzq
61
62 'CARGA DE DATOS
63 Dim i As Integer = Numero + 1
64
65 For Each reg As DataGridViewRow In DataGridView1.Rows
66 LetraIzq = ""
67 cod_LetraIzq = Asc(primeraLetra) - 1
68 Letra = primeraLetra
69 cod_letra = Asc(primeraLetra) - 1
70 For Each c As DataGridViewColumn In DataGridView1.Columns
71 If c.Visible Then
72 If Letra = "Z" Then
73 Letra = primeraLetra
74 cod_letra = Asc(primeraLetra)
75 cod_LetraIzq += 1
76 LetraIzq = Chr(cod_LetraIzq)
77 Else
78 cod_letra += 1
79 Letra = Chr(cod_letra)
80 End If
81 strColumna = LetraIzq + Letra
82 ' ac� deber�a realizarse la carga
83 .Cells(i, strColumna) = IIf(IsDBNull(reg.ToString),
"", reg.Cells(c.Index).Value)
84 '.Cells(i, strColumna) = IIf(IsDBNull(reg.
(c.DataPropertyName)), c.DefaultCellStyle.NullValue, reg(c.DataPropertyName))
85 '.Range(strColumna + i, strColumna + i).In()
86
87 End If
88 Next
89 Dim objRangoReg As Excel.Range = .Range(primeraLetra +
i.ToString, strColumna + i.ToString)
90 objRangoReg.Rows.BorderAround()
91 objRangoReg.Select()
92 i += 1
93 Next
94 UltimoNumero = i
95
96 'Dibujar las l�neas de las columnas
97 LetraIzq = ""
98 cod_LetraIzq = Asc("A")
99 cod_letra = Asc(primeraLetra)
100 Letra = primeraLetra
101 For Each c As DataGridViewColumn In DataGridView1.Columns
102 If c.Visible Then
103 objCelda = .Range(LetraIzq + Letra +
primerNumero.ToString, LetraIzq + Letra + (UltimoNumero - 1).ToString)
104 objCelda.BorderAround()
105 If Letra = "Z" Then
106 Letra = primeraLetra
107 cod_letra = Asc(primeraLetra)
108 LetraIzq = Chr(cod_LetraIzq)
109 cod_LetraIzq += 1
110 Else
111 cod_letra += 1
112 Letra = Chr(cod_letra)
113 End If
114 End If
115 Next
116
117 'Dibujar el border exterior grueso
118 Dim objRango As Excel.Range = .Range(primeraLetra +
primerNumero.ToString, UltimaLetraIzq + UltimaLetra + (UltimoNumero - 1).ToString)

119 objRango.Select()
120 objRango.Columns.AutoFit()
121 objRango.Columns.BorderAround(1, Excel.XlBorderWeight.xlMedium)
122 End With
123
124 m_Excel.Cursor = Excel.XlMousePointer.xlDefault
125 End Sub
126

Das könnte Ihnen auch gefallen