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:

Importación de referencia para o 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 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.
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 .....
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!
Eu vou gardar ...
nalgún momento só pode ser útil ...
É 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
O código fonte tremenda. serviu-me ben. q era moi atrasada.
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
Ola Moitas grazas! esta excelente!
Pero eu pregúntome onde datagrid especifica que a utilizada no caso de que son varios Datagrid?
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
Eu teño un problema con este exemplo, eu facer 2 erros en variables DC e DR, podo facer para solucionar isto?
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.
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
preparado e subimos o artigo
http://jaysson.blogspot.com/2010/06/columnas-es-excel.html
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.
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!
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
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: ..
De nada. Estou feliz que serviu de exemplo.
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
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
Cando executo o funcioana aplicación local correctamente, pero cando cargalo nunha web non xera o Excel, pero non recibín erro
Estou buscando haciend á Terra para o meu SQL
non como eu estaba facendo, pero vou facer actúe
Necesito axuda para tentar facelo de toda maneira que están aquí e eu recibín erro todos
Por outra banda, é o máximo funca perfecto.
[...] [...]
moi bo, parabéns están no mellor post que lin e consultados
Grazas! Foi moi útil
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
unha pregunta pode facer subida directo consulta SQL para Excel?
previamente a través
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.
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?
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
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