Exporta automaticamente para o Microsoft Excel DataTable

Hoxe quero mostrar un exemplo que me serviu durante moito tempo e aínda así eu usalo.
Imos facer un exemplo para exportar un DataTable para Excel completa independencia do número de columnas ou liñas que teñen.

Pode haber moitas formas de facelo, pero creo que é realmente útil, xa que este método funciona para calquera versión de Excel. Por cuestións compatilidad con versións máis recentes de Excel só tratar con 256 columnas.

O primeiro que necesitamos é engadir unha referencia para Microsoft.Office.Interop.Excel e facemos do seguinte xeito:

Importar referencia a Excel

Importación de referencia para o Excel

Importar referencia Excel

Importación Excel referencia

Entón necesitamos dun formulario, un botón, dataGridView ea barra de progreso. Podemos ter como ver na figura:

Formulario aplicación para exportar dataset a excel

Formulario de inscrición para exportar conxunto de datos para Excel

Agora quero mostrar todo o código é moi simple cousa máis importante é que se adapta a calquera mesa. Será capaz de reutilizar sen problemas.

  Imports System.Data
 Imports System.Data.SqlClient
 Microsoft.Office.Interop importacións

 Public class Form1
     Ds As New DataSet privadas

     Private Sub Form1_Load (ByVal Sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
         '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
         '/ / Crea a conexión e encher o DataGridView
         '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
         Din CNN As New SqlConnection ("Data Source = localhost \ SQLExpress; Initial Catalog = Northwind; Integrated Security = True")
         Da Din SqlDataAdapter Novo ("Select * from clientes", CNN)
         da.Fill (ds)
         DataGridView1.DataSource ds.Tables = (0)
     End Sub

     BtnExportar_Click Private Sub (ByVal Sender As System.Object, ByVal e As System.EventArgs) Handles btnExportar.Click
         '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / /
         '/ / Crear o obxecto de Excel
         '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / /
         Din m_Excel
         Din objLibroExcel
         Din objHojaExcel
         m_Excel = CreateObject ("Excel.Application")
         m_Excel.Workbooks.Add objLibroExcel = ()
         objHojaExcel = objLibroExcel.Worksheets (1)
         objHojaExcel.Name = "clientes"
         objHojaExcel.Visible = Excel.XlSheetVisibility.xlSheetVisible
         objHojaExcel.Activate ()

         '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
         '/ / Define dúas variables para controlar a fila e columna
         '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
         Din liña As Enteiros = 1
         Din columna As Enteiros = 1

         '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
         '/ / Definimos a liña cos títulos das columnas
         '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
         objHojaExcel.Range ("A1"). Select ()
         Para cada dc En ds.Tables (0). Columnas
             objHojaExcel.Range (ColumnName (columna) & 1) Valor. = dc.ColumnName
             columna + = 1
         Seguinte
         liña + = 1

         '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
         '/ / Nós formatar os títulos de liñas
         '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
         Como Excel.Range Din objRango = objHojaExcel.Range ("A1:" & ColumnName (ds.Tables (0) Columns.Count) e "1".)
         objRango.Font.Bold = True
         objRango.Cells.Interior.ColorIndex = 35

         objRango.Cells.Borders (Excel.XlBordersIndex.xlDiagonalDown). LineStyle = Excel.XlLineStyle.xlLineStyleNone
         objRango.Cells.Borders (Excel.XlBordersIndex.xlDiagonalUp). LineStyle = Excel.XlLineStyle.xlLineStyleNone
         objRango.Cells.Borders (Excel.XlBordersIndex.xlEdgeLeft). LineStyle = Excel.XlLineStyle.xlLineStyleNone
         objRango.Cells.Borders (Excel.XlBordersIndex.xlEdgeRight). LineStyle = Excel.XlLineStyle.xlContinuous
         objRango.Cells.Borders (Excel.XlBordersIndex.xlEdgeTop). LineStyle = Excel.XlLineStyle.xlContinuous
         objRango.Cells.Borders (Excel.XlBordersIndex.xlEdgeBottom). LineStyle = Excel.XlLineStyle.xlContinuous

         '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
         '/ / Carga todas as liñas na táboa de datos
         '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
         ProgressBar1.Maximum = ds.Tables (0). Rows.Count
         columna = 1
         ProgressBar1.Value = 0
         Para cada DR En ds.Tables (0). Liñas
             columna = 1
             Para cada dc En ds.Tables (0). Columnas
                 objHojaExcel.Range (ColumnName (columna) e liña) valor. = dr (dc.ColumnName)
                 columna + = 1
             Seguinte
             liña + = 1
             ProgressBar1.Value + = 1
         Seguinte

         '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
         '/ / Nós axustar o ancho automaticamente
         '/ / De todas as columnas utilizadas
         '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
         objRango = objHojaExcel.Range ("A1:" & ColumnName (ds.Tables (0) Columns.Count) & ds.Tables (0). Rows.Count.ToString.)
         objRango.Select ()
         objRango.Columns.AutoFit ()

         '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
         '/ / Dicimos Excel para amosar
         '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
         MsgBox ("Exportar a Excel Completa", MsgBoxStyle.Information ". :: Solovb.net ::.")
         m_Excel.Visible = True

     End Sub

     ColumnName Función Pública (número ByVal As Enteiros) As cadea
         Din columna (256) As cadea

         Columna (1) = "A"
         columna (2) = "B"
         columna (3) = "C"
         columna (4) = "D"
         columna (5) = "E"
         columna (6) = "F"
         columna (7) = "G"
         columna (8) = "H"
         columna (9) = "I"
         columna (10) = "J"
         columna (11) = "K"
         columna (12) = "L"
         columna (13) = "M"
         columna (14) = "N"
         columna (15) = "O"
         columna (16) = "P"
         columna (17) = "Q"
         columna (18) = "R"
         columna (19) = "S"
         columna (20) = "T"
         columna (21) = "U"
         columna (22) = "V"
         columna (23) = "W"
         columna (24) = "X"
         columna (25) = "Y"
         columna (26) = "Z"
         columna (27) = "AA"
         columna (28) = "AB"
         columna (29) = "AC"
         columna (30) = "AD"
         columna (31) = "AE"
         columna (32) = "AF"
         columna (33) = "AG"
         columna (34) = "AH"
         columna (35) = "AI"
         columna (36) = "AJ"
         columna (37) = "AK"
         columna (38) = "AL"
         columna (39) = "AM"
         columna (40) = "un"
         columna (41) = "AO"
         columna (42) = "AP"
         columna (43) = "AQ"
         columna (44) = "ar"
         columna (45) = "AS"
         columna (46) = "AT"
         columna (47) = "UA"
         columna (48) = "AV"
         columna (49) = "AW"
         columna (50) = "AX"
         columna (51) = "AY"
         columna (52) = "Z"
         columna (53) = "BA"
         columna (54) = "BB"
         columna (55) = "BC"
         columna (56) = "BD"
         columna (57) = "BE"
         columna (58) = "BF"
         columna (59) = "BG"
         columna (60) = "BH"
         columna (61) = "DNI"
         columna (62) = "BJ"
         columna (63) = "BK"
         columna (64) = "BP"
         columna (65) = "BM"
         columna (66) = "BN"
         columna (67) = "BO"
         columna (68) = "BP"
         columna (69) = "BQ"
         columna (70) = "Ubuntu"
         columna (71) = "BS"
         columna (72) = "BT"
         columna (73) = "BU"
         columna (74) = "BV"
         columna (75) = "BW"
         columna (76) = "bx"
         columna (77) = "por"
         columna (78) = "BZ"
         columna (79) = "CA"
         columna (80) = "CB"
         columna (81) = "CC"
         columna (82) = "CD"
         columna (83) = "CE"
         columna (84) = "CF"
         columna (85) = "CG"
         columna (86) = "CH"
         columna (87) = "CI"
         columna (88) = "CJ"
         columna (89) = "CK"
         columna (90) = "CL"
         columna (91) = "CM"
         columna (92) = "CN"
         columna (93) = "CO"
         columna (94) = "CP"
         columna (95) = "CQ"
         columna (96) = "CR"
         columna (97) = "CS"
         columna (98) = "CT"
         columna (99) = "CU"
         columna (100) = "CV"
         columna (101) = "CW"
         columna (102) = "CX"
         columna (103) = "CY"
         columna (104) = "cz"
         columna (105) = "da"
         columna (106) = "DB"
         columna (107) = "DC"
         columna (108) = "DD"
         columna (109) = "DE"
         columna (110) = "DF"
         columna (111) = "DG"
         columna (112) = "DH"
         columna (113) = "ID"
         columna (114) = "DJ"
         columna (115) = "DK"
         columna (116) = "DL"
         columna (117) = "DM"
         columna (118) = "DN"
         columna (119) = "do"
         columna (120) = "DP"
         columna (121) = "DQ"
         columna (122) = "DR"
         columna (123) = "DS"
         columna (124) = "DT"
         columna (125) = "DU"
         columna (126) = "DV"
         columna (127) = "DW"
         columna (128) = "DX"
         columna (129) = "DY"
         columna (130) = "DZ"
         columna (131) = "EA"
         columna (132) = "EB"
         columna (133) = "CE"
         columna (134) = "ED"
         columna (135) = "EE"
         columna (136) = "EF"
         columna (137) = "EG"
         columna (138) = "EH"
         columna (139) = "EI"
         columna (140) = "EJ"
         columna (141) = "ek"
         columna (142) = "on"
         columna (143) = "MS"
         columna (144) = "EN"
         columna (145) = "eo"
         columna (146) = "PE"
         columna (147) = "EQ"
         columna (148) = "ER"
         columna (149) = "ES"
         columna (150) = "ET"
         columna (151) = "EU"
         columna (152) = "EV"
         columna (153) = "EW"
         columna (154) = "EX"
         columna (155) = "ey"
         columna (156) = "EZ"
         columna (157) = "FA"
         columna (158) = "FB"
         columna (159) = "FC"
         columna (160) = "FD"
         columna (161) = "FE"
         columna (162) = "FF"
         columna (163) = "FG"
         columna (164) = "FH"
         columna (165) = "FI"
         columna (166) = "FJ"
         columna (167) = "FK"
         columna (168) = "FL"
         columna (169) = "FM"
         columna (170) = "FN"
         columna (171) = "fo"
         columna (172) = "FP"
         columna (173) = "CF"
         columna (174) = "FR"
         columna (175) = "FS"
         columna (176) = "FT"
         columna (177) = "FU"
         columna (178) = "PV"
         columna (179) = "FW"
         columna (180) = "FX"
         columna (181) = "FY"
         columna (182) = "FZ"
         columna (183) = "GA"
         columna (184) = "GB"
         columna (185) = "GC"
         columna (186) = "GD"
         columna (187) = "GE"
         columna (188) = "GF"
         columna (189) = "GG"
         columna (190) = "GH"
         columna (191) = "GI"
         columna (192) = "GJ"
         columna (193) = "GK"
         columna (194) = "GL"
         columna (195) = "GM"
         columna (196) = "GN"
         columna (197) = "GO"
         columna (198) = "GP"
         columna (199) = "GQ"
         columna (200) = "GR"
         columna (201) = "GS"
         columna (202) = "GT"
         columna (203) = "GU"
         columna (204) = "GV"
         columna (205) = "GW"
         columna (206) = "GX"
         columna (207) = "Gy"
         columna (208) = "GZ"
         columna (209) = "hai"
         columna (210) = "HB"
         columna (211) = "HC"
         columna (212) = "HD"
         columna (213) = "el"
         columna (214) = "HF"
         columna (215) = "HG"
         columna (216) = "HH"
         columna (217) = "HI"
         columna (218) = "HJ"
         columna (219) = "HK"
         columna (220) = "HL"
         columna (221) = "HM"
         columna (222) = "HN"
         columna (223) = "HO"
         columna (224) = "HP"
         columna (225) = "HQ"
         columna (226) = "HR"
         columna (227) = "HS"
         columna (228) = "HT"
         columna (229) = "HU"
         columna (230) = "HV"
         columna (231) = "HW"
         columna (232) = "H"
         columna (233) = "Hy"
         columna (234) = "HZ"
         columna (235) = "IA"
         columna (236) = "IB"
         columna (237) = "IC"
         columna (238) = "ID"
         columna (239) = "IE"
         columna (240) = "SE"
         columna (241) = "IG"
         columna (242) = "IH"
         columna (243) = "II"
         columna (244) = "IJ"
         columna (245) = "IK"
         columna (246) = "IL"
         columna (247) = "IM"
         columna (248) = "IN"
         columna (249) = "IO"
         columna (250) = "IP"
         columna (251) = "coeficiente intelectual"
         columna (252) = "R"
         columna (253) = "IS"
         columna (254) = "IT"
         columna (255) = "IU"
         columna (256) = "IV"

         Columna de retorno (número)
     End Función
 End Class 

Este método serviu-me ben e eu espero que tamén ... por favor, deixe os seus comentarios.

32 Respostas para "exportar automaticamente DataTable para Microsoft Excel"

  1. Información Bitacoras.com ...

    Taxa en Bitacoras.com: Ola, Hoxe quero mostrar un exemplo que me serviu durante moito tempo e aínda así eu usalo. Imos facer un exemplo para exportar un DataTable para Excel completa independencia do número de columnas ou liñas que Teng .....

    • Carlos Linares di:

      Bo ...

      Excelente artigo! Grazas axudoume completo, pero teño unha dúbida .. Como a conexión é con SQL .. ¿Como eliminar as columnas? Porque leva o nome dos campos de SQL ..!

      Eu espero e eu entendín ..

      Grazas!

  2. Denko di:

    Eu vou gardar ...
    nalgún momento só pode ser útil ...

  3. Victor di:

    É válido para o Excel 2007? Eu tiven problemas con as exportacións para desenvolver, que é válido para as versións anteriores, pero non para 2007. Grazas

  4. Xoán di:

    O código fonte tremenda. serviu-me ben. q era moi atrasada.

  5. Xoán di:

    Aínda que tamén precisa ecxel a importación dunha táboa de datos. pero podería ser ambiental para un datagrid e logo actualizar os DataAdapter e aceptar cambios na táboa de datos serían gardados no BD q ... Eu espera que eu poida axudar ou para atopar .. grazas

  6. jose di:

    Ola Moitas grazas! esta excelente!
    Pero eu pregúntome onde datagrid especifica que a utilizada no caso de que son varios Datagrid?

    • Carlos Linares di:

      Sobre a mesa está na chamada ...

      SELECT * FROM (nome da táboa)

      Se desexa especificar os campos que quere

      seleccione (campos, campos, campos) * dos táboa
      EJM
      seleccionar coche, cor ano, en coche

  7. Beto dixo:

    Eu teño un problema con este exemplo, eu facer 2 erros en variables DC e DR, podo facer para solucionar isto?

    • Eliseu di:

      Ola, proba o seguinte:
      Para cada dr As DataRow En ds.Tables (0). Liñas e DataColumn para cada dc En ds.Tables como (0). Columnas

      Esperamos que este sexa resolto. Saúdos.

  8. Jason di:

    Hola.
    este chevere, pero parte do nome da columna non é moi funcional.
    Eu vou facer a carga para o meu blog algunhas limitacións de tamaño moito menor e sen código

    jaysson.blogspot.com

  9. Rodrigo di:

    Bo artigo, pero eu teño un problema no meu ordenador co Excel 2007 funciona sen problemas, pero cos ordenadores co Excel 2003 ou anterior non funciona. Alguén sabe se o problema de bibliotecas que son de importación, sempre que o que significa que funciona para calquera Excel, pero eu atope este problema.

    A ver se alguén pode resolver a dúbida.
    Grazas.

  10. Carlos Linares di:

    Bo ...

    Excelente artigo! Grazas axudoume completo, pero teño unha dúbida .. Como a conexión é con SQL .. ¿Como eliminar as columnas? Porque leva o nome dos campos de SQL ..!

    Eu espero e eu entendín ..

    Grazas!

  11. Alexander di:

    Public Sub ExportarDatosExcel (ByVal DataGridView1 Como DataGridView título, ByVal As String)
    As New Excel.Application Din m_Excel
    m_Excel.Cursor = Excel.XlMousePointer.xlWait
    m_Excel.Visible = True
    Como Excel.Workbook Din objLibroExcel = m_Excel.Workbooks.Add
    Como Excel.Worksheet Din objHojaExcel = objLibroExcel.Worksheets (1)
    Con objHojaExcel
    . Visible = Excel.XlSheetVisibility.xlSheetVisible
    . Activate ()
    "Encabezado
    . Range ("A1: L1"). Merge ()
    . Range ("A1: L1") Valor = "INSTITUTO ARGENCAF".
    . Range ("A1: L1"). Font.Bold = True
    . Range ("A1: L1"). Font.Size = 15
    "Topete
    . Range ("A2: L2"). Merge ()
    . Range ("A2: L2"). Valor title =
    . Range ("A2: L2"). Font.Bold = True
    . Range ("A2: L2"). Font.Size = 12

    Consta primeraLetra As Char = "A"
    FirstNumber Consta As Short = 3
    Carta Din Char, Char Como UltimaLetra
    Número Din As Enteiros, UltimoNumero As Enteiros
    Din As Byte = Asc cod_letra (primeraLetra) - 1
    Din cadea = Application.CurrentCulture.NumberFormat.NumberDecimalSeparator sepDec
    Din cadea = Application.CurrentCulture.NumberFormat.NumberGroupSeparator sepMil
    'Formato definido das columnas da filla de cálculo
    StrColumna Din cadea = ""
    LetraIzq Din cadea = ""
    Din As Byte = Asc cod_LetraIzq (primeraLetra) - 1
    = Carta primeraLetra
    FirstNumber = número
    Como Excel.Range Din objCelda
    Para cada c Como DataGridViewColumn En DataGridView1.Columns
    Entón, se c.Visible
    A carta = "Z" Entón
    = Carta primeraLetra
    cod_letra = Asc (primeraLetra)
    cod_LetraIzq + = 1
    LetraIzq = Chr (cod_LetraIzq)
    Outro
    cod_letra + = 1
    Carta = Chr (cod_letra)
    End If
    strColumna = LetraIzq + Lyrics + Numero.ToString
    objCelda = Range. (strColumna, Type.Missing)
    objCelda.Value = c.HeaderText
    objCelda.EntireColumn.Font.Size = 8
    "ObjCelda.EntireColumn.NumberFormat = c.DefaultCellStyle.Format
    Se c.ValueType É GetType (decimal) OrElse c.ValueType É GetType (Double) A continuación,
    objCelda.EntireColumn.NumberFormat = "#" + sepMil + "0" + sepDec + "00"
    End If
    End If
    Seguinte

    Como Excel.Range Din objRangoEncab = Range. (PrimeraLetra + Numero.ToString e LetraIzq + Lyrics Numero.ToString +)
    objRangoEncab.BorderAround (1, Excel.XlBorderWeight.xlMedium)
    UltimaLetra = Enviar
    Din cadea = LetraIzq UltimaLetraIzq

    De Load
    I As Enteiros Din Number = + 1

    Para cada lista en Como DataGridViewRow DataGridView1.Rows
    LetraIzq = ""
    cod_LetraIzq = Asc (primeraLetra) - 1
    = Carta primeraLetra
    cod_letra = Asc (primeraLetra) - 1
    Para cada c Como DataGridViewColumn En DataGridView1.Columns
    Entón, se c.Visible
    A carta = "Z" Entón
    = Carta primeraLetra
    cod_letra = Asc (primeraLetra)
    cod_LetraIzq + = 1
    LetraIzq = Chr (cod_LetraIzq)
    Outro
    cod_letra + = 1
    Carta = Chr (cod_letra)
    End If
    strColumna = LetraIzq + Lyrics
    "Aquí debe ser a carga
    Células. (I, strColumna) = IIf (IsDBNull (reg.ToString), "", reg.Cells (c.Index) valor.)
    '. Cells (i, strColumna) = IIf (IsDBNull (Reg (c.DataPropertyName)), c.DefaultCellStyle.NullValue, reg (c.DataPropertyName))
    'Intervalo. (StrColumna + i, strColumna + i). En ()

    End If
    Seguinte
    Como Excel.Range Din objRangoReg = Range. (PrimeraLetra + i.ToString, i.ToString strColumna +)
    objRangoReg.Rows.BorderAround ()
    objRangoReg.Select ()
    i + = 1
    Seguinte
    UltimoNumero = i

    "Deseñar liñas das columnas
    LetraIzq = ""
    cod_LetraIzq = Asc ("A")
    cod_letra = Asc (primeraLetra)
    = Carta primeraLetra
    Para cada c Como DataGridViewColumn En DataGridView1.Columns
    Entón, se c.Visible
    objCelda = Range. (LetraIzq + Lyrics + primerNumero.ToString e LetraIzq + Lyrics + (UltimoNumero -. 1) ToString)
    objCelda.BorderAround ()
    A carta = "Z" Entón
    = Carta primeraLetra
    cod_letra = Asc (primeraLetra)
    LetraIzq = Chr (cod_LetraIzq)
    cod_LetraIzq + = 1
    Outro
    cod_letra + = 1
    Carta = Chr (cod_letra)
    End If
    End If
    Seguinte

    "Debuxar bordo grosa exterior
    Como Excel.Range Din objRango = Range. (PrimeraLetra + primerNumero.ToString, UltimaLetra UltimaLetraIzq + + (UltimoNumero - ToString 1).)
    objRango.Select ()
    objRango.Columns.AutoFit ()
    objRango.Columns.BorderAround (1, Excel.XlBorderWeight.xlMedium)
    End With

    m_Excel.Cursor = Excel.XlMousePointer.xlDefault
    End Sub

    ToolStripButton2_Click_1 Private Sub (ByVal Sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton2.Click
    ExportarDatosExcel (DataGridView1, "exportación")
    End Sub

  12. JuanPeople di:

    EXCELENTE! .... grazas irmán, e levou 3 días cun módulo para importación / exportación Excel e nada funcionou .... pero coa solución que eu vexo de novo as estrelas ... Saúdos de Arequipa: ..

  13. TECKNOCK di:

    Este código me axudou moito, entón eu colaborar cos meus dous centavos:

    Ter optimizado a "ColumnName" para chegar ahsta columna ZZ (702 et al.)

    Aquí eu dou-lle o código:

    ColumnName Función Pública (número ByVal As Enteiros) As cadea
    Din columna (703) As cadea

    Columna (1) = "A"
    columna (2) = "B"
    columna (3) = "C"
    columna (4) = "D"
    columna (5) = "E"
    columna (6) = "F"
    columna (7) = "G"
    columna (8) = "H"
    columna (9) = "I"
    columna (10) = "J"
    columna (11) = "K"
    columna (12) = "L"
    columna (13) = "M"
    columna (14) = "N"
    columna (15) = "O"
    columna (16) = "P"
    columna (17) = "Q"
    columna (18) = "R"
    columna (19) = "S"
    columna (20) = "T"
    columna (21) = "U"
    columna (22) = "V"
    columna (23) = "W"
    columna (24) = "X"
    columna (25) = "Y"
    columna (26) = "Z"

    Din i = 27
    Para Ltr1 = 1 a 26
    Para Ltr2 = 1 a 26
    columna (a) columna = (Ltr1) e columna (Ltr2)
    i + = 1
    Seguinte
    Seguinte

    Columna de retorno (número)
    End Función

    • Eliseu di:

      TECKNOCK, moitas grazas pola axuda!, Pero teña en conta que o libro que creamos é compatible con Excel 97-2003 columnas máximas permitidas e 256 (a IV). Así como un comentario a ter en conta.

      Eliseu

  14. raysip di:

    Cando executo o funcioana aplicación local correctamente, pero cando cargalo nunha web non xera o Excel, pero non recibín erro

  15. Aderson di:

    Estou buscando haciend á Terra para o meu SQL

    non como eu estaba facendo, pero vou facer actúe

  16. Galicia di:

    Necesito axuda para tentar facelo de toda maneira que están aquí e eu recibín erro todos

  17. JOÃO di:

    Por outra banda, é o máximo funca perfecto.

  18. Neji di:

    moi bo, parabéns están no mellor post que lin e consultados

  19. Patricia di:

    Grazas! Foi moi útil

  20. f.delgado di:

    Hey o código non funciona en min unha marca erros da.Fill (ds)

    Eu marco o erro non se atopou SqlException

    que me pode axudar

  21. JAV di:

    unha pregunta pode facer subida directo consulta SQL para Excel?

    previamente a través

  22. Delfino Morales di:

    Ola amigos en primeiro lugar ten agradesco súa contribución.
    Teña en conta que eu teño un problema eu non podo atopar a referencia que indique, eu teño instalado o Office 2010 e que non pode ser o meu problema.
    agradeseria algúns consellos para ti.

  23. América di:

    Ola, contribución moi bo é o que eu estaba a buscar ... mais cando executa-lo a partir do servidor de desenvolvemento funciona perfecto, pero cando acceder á web dende outro PC non fai nada ... ningún erro, pero non fai nada marca ...

    Alguén sabe como solucionar isto?

  24. Azofeifa Hernán di:

    Moitas grazas, me axudou o seu exemplo como base para xerar unha función que xera me un arquivo de Excel, pero directamente a partir dos valores almacenados nunha reixa é o caso dejor é útil para alguén

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / Definimos a liña cos títulos das columnas
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    objHojaExcel.Range ("A1"). Select ()
    Eu Din As Enteiros = 0
    Lncol Din As Enteiros = 1
    Para cada dc En dgvSocios.Columns

    Se dgvSocios.Columns.Item (I). Visible = True THEN
    objHojaExcel.Range (ColumnName (lncol) e 1). Valor = dgvSocios.Columns.Item (I). HeaderText
    lncol + = 1
    End If
    I + = 1
    Seguinte
    liña + = 1

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / Nós formatar os títulos de liñas
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    Como Excel.Range Din objRango = objHojaExcel.Range ("A1:" & ColumnName (lncol) e "1")
    objRango.Font.Bold = True
    objRango.Cells.Interior.ColorIndex = 35

    objRango.Cells.Borders (Excel.XlBordersIndex.xlDiagonalDown). LineStyle = Excel.XlLineStyle.xlLineStyleNone
    objRango.Cells.Borders (Excel.XlBordersIndex.xlDiagonalUp). LineStyle = Excel.XlLineStyle.xlLineStyleNone
    objRango.Cells.Borders (Excel.XlBordersIndex.xlEdgeLeft). LineStyle = Excel.XlLineStyle.xlLineStyleNone
    objRango.Cells.Borders (Excel.XlBordersIndex.xlEdgeRight). LineStyle = Excel.XlLineStyle.xlContinuous
    objRango.Cells.Borders (Excel.XlBordersIndex.xlEdgeTop). LineStyle = Excel.XlLineStyle.xlContinuous
    objRango.Cells.Borders (Excel.XlBordersIndex.xlEdgeBottom). LineStyle = Excel.XlLineStyle.xlContinuous

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / Carga todas as liñas na táboa de datos
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    ProgressBar1.Maximum = dgvSocios.Rows.Count
    columna = 0
    ProgressBar1.Value = 0
    ProgressBar1.Visible = True
    Lnfila Din As Enteiros = 0
    I = 1
    Para cada dr Na dgvSocios.Rows
    columna = 0

    Para cada dc En dgvSocios.Columns
    Se dgvSocios.Columns.Item (columna). Visible = True THEN
    objHojaExcel.Range (ColumnName (I) e liña) valor. = Value.ToString dgvSocios.Item (columna, lnfila).
    I + = 1
    End If
    columna + = 1
    Seguinte
    lnfila + = 1
    liña + = 1
    ProgressBar1.Value + = 1
    Seguinte

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / Nós axustar o ancho automaticamente
    '/ / De todas as columnas utilizadas
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    objRango = objHojaExcel.Range ("A1:" & ColumnName (lncol) & (lnfila + 1) ToString.)
    objRango.Select ()
    objRango.Columns.AutoFit ()

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / Dicimos Excel para amosar
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    MsgBox ("Exportar a Excel Completa", MsgBoxStyle.Information ". :: Solovb.net ::.")
    m_Excel.Visible = True

  25. Pako di:

    Traendo un pouco para esta función, o seguinte código impide o uso de "Range" para non esixir a función "ColumnName"

    Saúdos,

    Imports System.Data
    Imports System.Data.SqlClient
    Importacións Microsoft.Office.Interop.Excel
    Mutil Módulo Público
    Public Sub ExportarDtToExcel (ByVal Dt Como System.Data.DataTable título ByVal, As String)
    Como Excel.Application Din m_Excel
    Como Excel.Workbook Din objLibroExcel
    Como Worksheet Din objHojaExcel
    Intentar
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / Crear o obxecto de Excel
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    m_Excel = CreateObject ("Excel.Application")
    m_Excel.Workbooks.Add objLibroExcel = ()
    objHojaExcel = objLibroExcel.Worksheets (1)
    objHojaExcel.Name = Título
    objHojaExcel.Visible = Excel.XlSheetVisibility.xlSheetVisible
    objHojaExcel.Activate ()

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / Define dúas variables para controlar a fila e columna
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    Din liña As Enteiros = 1
    Din columna As Enteiros = 1

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / Definimos a liña cos títulos das columnas
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    "ObjHojaExcel.Range (" A1 "). Select ()

    objHojaExcel.Cells (liña, columna). SELECT ()
    Para cada dc En Dt.Columns
    objHojaExcel.Cells (liña, columna) valor. = dc.ColumnName
    columna + = 1
    Seguinte
    liña + = 1

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / Nós formatar os títulos de liñas
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    Como Excel.Range = din objRango objHojaExcel.Range (objHojaExcel.Cells (1, 1), objHojaExcel.Cells (1, Dt.Columns.Count))
    objRango.Font.Bold = True
    objRango.Cells.Interior.ColorIndex = 35

    objRango.Cells.Borders (Excel.XlBordersIndex.xlDiagonalDown). LineStyle = Excel.XlLineStyle.xlLineStyleNone
    objRango.Cells.Borders (Excel.XlBordersIndex.xlDiagonalUp). LineStyle = Excel.XlLineStyle.xlLineStyleNone
    objRango.Cells.Borders (Excel.XlBordersIndex.xlEdgeLeft). LineStyle = Excel.XlLineStyle.xlLineStyleNone
    objRango.Cells.Borders (Excel.XlBordersIndex.xlEdgeRight). LineStyle = Excel.XlLineStyle.xlContinuous
    objRango.Cells.Borders (Excel.XlBordersIndex.xlEdgeTop). LineStyle = Excel.XlLineStyle.xlContinuous
    objRango.Cells.Borders (Excel.XlBordersIndex.xlEdgeBottom). LineStyle = Excel.XlLineStyle.xlContinuous

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / Carga todas as liñas na táboa de datos
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /

    columna = 1

    Para cada dr Na dt.Rows
    columna = 1
    Para cada dc En Dt.Columns
    objHojaExcel.Cells (liña, columna) valor. = dr (dc.ColumnName)
    columna + = 1
    Seguinte
    liña + = 1

    Seguinte

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / Nós axustar o ancho automaticamente
    '/ / De todas as columnas utilizadas
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    objHojaExcel.Cells objRango = (1, Dt.Columns.Count)
    objRango.Select ()
    objRango.Columns.AutoFit ()

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / Dicimos Excel para amosar
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    MsgBox ("Exportar a Excel Complete" MsgBoxStyle.Information, "Export")
    m_Excel.Visible = True

    Catch ex As Exception

    MsgBox (ex.ToString)

    Finalmente

    objHojaExcel = Nothing
    objLibroExcel = Nothing
    m_Excel = Nothing

    End Try
    End Sub

    End Module

Comentar