Danas želim pokazati primjer koji mi je služio za dugo vremena, a ja još uvijek koriste.
Mi ćemo učiniti primjer za izvoz u Excel DataTable puni bez obzira na broj stupaca ili redaka koje imate.
Postoji svibanj biti mnogo načina da to učinite, ali ja ga pronaći jako korisno jer ova metoda radi za bilo koju verziju programa Excel. Radi Compatil s novim verzijama programa Excel samo nositi 256 stupaca.
Prva stvar koju trebate je dodati referencu na Microsoft.Office.Interop.Excel i napravite kako slijedi:

Uvoz referenca u Excel

Uvoz Excel referentni
Zatim trebamo oblik, gumb, DataGridView i traku napretka. Mi možemo imati kao što se vidi na slici:

Obrazac zahtjeva za izvoz prijenos podataka u Excel
Sada želim pokazati sve kod je stvarno jednostavan najvažnija stvar je da se prilagođava svakom stolu. Ja ću biti u mogućnosti da se ponovno koristiti bez problema.
Uvoz Uvoz Uvoz System.Data System.Data.SqlClient public class Form1 Private Microsoft.Office.Interop DS kao New DataSet Private Sub Form1_Load (ByVal pošiljatelja Kao System.Object, ByVal e kao System.EventArgs) Ručke MyBase.Load '/ / / /////////////////////////////////////////////// '/ / Mi stvaramo veze i ispunite DataGridView'////////////////////////////////////////// Dim CNN kao novi //////// SqlConnection ("Data Source = localhost \ sqlexpress; Početni Katalog = Northwind, integrirana sigurnost = True") Dim da kao New SqlDataAdapter ("SELECT * od kupaca", CNN) daje. Ispunite (DS) DataGridView1.DataSource = ds.Tables (0) End Sub Private Sub btnExportar_Click (ByVal pošiljatelja Kao System.Object, ByVal e kao System.EventArgs) Ručke btnExportar.Click'/////////// ////////////////// '/ / Stvori objekt Excel'//////////////////////// Dim Dim Dim objLibroExcel ///// objHojaExcel m_Excel m_Excel = CreateObject ("Excel.Application") m_Excel.Workbooks.Add objLibroExcel = () = objLibroExcel.Worksheets objHojaExcel (1) objHojaExcel.Name = "Kupci" objHojaExcel.Visible = Excel . XlSheetVisibility.xlSheetVisible objHojaExcel.Activate ()'//////////////////////////////////////// ///////////////// '/ / define dvije varijable za kontrolu'///////////////////// redaka i stupaca //////////////////////////////////// Dim redu kao Integer = 1 Dim stupac kao Integer = 1 '/ //////////////////////////////////////////////// '/ / Postavili smo skladu s'//////////////////////////////////////// stupaca ///////// objHojaExcel.Range ("A1"). Odaberite () za svaku DC ds.Tables (0). objHojaExcel.Range stupce (ColumnName (stupac) i 1). value = dc.ColumnName stupac + = 1 Slijedeći red + = 1'//////////////////////////////////////// ///// '/ / Mi obliku retka naslova'//////////////////////////////// Kao Excel.Range Dim objRango ///////////// = objHojaExcel.Range ("A1:". & ColumnName (ds.Tables (0) Columns.Count) i "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'//////////////// ////////////////////////// '/ / Load sve retke u datatable'////////////// //////////////////////////// ProgressBar1.Maximum = ds.Tables (0). Rows.Count ProgressBar1.Value stupac = 1 = 0 Za svaki dr. U ds.Tables (0). redaka stupca = 1 za svaki DC ds.Tables (0). objHojaExcel.Range stupce (ColumnName (stupac) i red). value = dr. (dc.ColumnName) stupac + = 1 Sljedeća red + = 1 + = 1 Sljedeća ProgressBar1.Value'//////////////////////////////////// / / '/ / Postavljanje širine automatski / / za sve stupce koriste'//////////////////////////////// ////// objHojaExcel.Range objRango = ("A1:".. i ColumnName (ds.Tables (0) Columns.Count) i ds.Tables (0) Rows.Count.ToString) objRango.Select () objRango . Columns.AutoFit ()'///////////////////////////////////// '/ / reći '///////////////////////////////////// prikaz Excel MsgBox ("Izvoz u Excel Complete" , MsgBoxStyle.Information ":. solovb.net ::.") m_Excel.Visible = True End Sub Public Function ColumnName (ByVal broj kao Integer) Dim kao niz stupaca (256) kao niz Stupac (1) =" " Stupac (2) = "B" stup (3) = "C" stup (4) = "D" stup (5) = "E" stup (6) = "F" stupac (7) = "G" stup ( 8) = "H" stup (9) = "ja" stupcu (10) = "J" stup (11) = "K" stup (12) = "L" stup (13) = "M" stup (14) = "N" stup (15) = "O" stup (16) = stupcu "P" (17) = "Q" stup (18) = "R" stup (19) = "S" stup (20) = " T "stup (21) =" U "stup (22) =" V "stup (23) =" W "stup (24) =" X "stup (25) =" Y "stup (26) =" Z " stupcu (27) = "AA" stup (28) = "AB" stup (29) = "AC" stup (30) = "AD" stup (31) = "AE" stup (32) = "AF" stup ( 33) = "AG" Stupac (34) = "AH" stup (35) = "AI" stup (36) = "AJ" stup (37) = "AK" stup (38) = "NA" stup (39) = "AM" stup (40) = "" stup (41) = "AO" stup (42) = "AP" stup (43) = "AQ" stup (44) = "AR" stup (45) = " AS "stup (46) =" na "stup (47) =" AU "stup (48) =" AV "stup (49) =" AW "stup (50) =" AX "stup (51) =" AY " stupcu (52) = "AZ" stup (53) = "BA" stup (54) = "BB" stup (55) = "BC" stup (56) = "BD" stup (57) = "biti" stup ( 58) = "BF" stup (59) = "BG" stup (60) = "BH" stup (61) = "BI" stup (62) = "BJ" stup (63) = "BK" stup (64) = "BL" stup (65) = "BM" stup (66) = "BN" stup (67) = "BO" stup (68) = "BP" stup (69) = "BQ" stup (70) = " BR "stup (71) =" BS "stup (72) =" BT "stup (73) =" BU "stup (74) =" BV "stup (75) =" BW "stup (76) =" BX " stupcu (77) = "PO" stup (78) = "BZ" stup (79) = "CA" stup (80) = "CB" stup (81) = "CC" stup (82) = "CD-" stup ( 83) = "CE" stup (84) = "CF" stup (85) = "CG" stup (86) = "CH" stup (87) = "CI" stup (88) = "CJ" stup (89) = "CK" stup (90) = "CL" stup (91) = "CM" stup (92) = "CN" stup (93) = "CO" stup (94) = "CP" stup (95) = " CQ "stup (96) =" CR "stup (97) =" CS "stup (98) =" CT "stup (99) =" CU "stup (100) =" CV "stup (101) =" Desno " stupac (102) = "CX" stup (103) = "CY" stup (104) = "CZ" stup (105) = "DA" stup (106) = "DB" stup (107) = "DC" stup ( 108) = "DD" stup (109) = "DE" stup (110) = "DF" stup (111) = "DG" stup (112) = "DH" stup (113) = "ID" stup (114) = "DJ" stup (115) = "DK" stup (116) = "DL" stup (117) = "DM" stup (118) = "DN" stup (119) = "NE" stup (120) = " DP "stup (121) =" DQ "stup (122) =" DR "stup (123) =" DS "stup (124) =" DT "stup (125) =" DU "stup (126) =" DV " stupac (127) = "DW" stup (128) = "DX" stup (129) = "DY" stup (130) = "DZ" stup (131) = "EA" stup (132) = "EB" stup ( 133) = "EZ" stup (134) = "ED" stup (135) = "EE" stup (136) = "EF" stup (137) = "EG" stup (138) = "EH" stup (139) = "EI" stup (140) = "EJ" stup (141) = "EK" stup (142) = "EL" stup (143) = "MS" stup (144) = "IN" stup (145) = " EO "stup (146) =" EP "stup (147) =" EQ "stup (148) =" ER "stup (149) =" ES "stup (150) =" ET "stup (151) =" EU " stupac (152) = "EV" stup (153) = "EW" stup (154) = "EX" stup (155) = "ey" stup (156) = "EZ" stup (157) = "FA" stup ( 158) = "FB" stup (159) = "FC" stup (160) = "FD" stup (161) = "FE" stup (162) = "FF" stup (163) = "FG" stup (164) = "FH" stup (165) = "FI" stup (166) = "FJ" stup (167) = "FK" stup (168) = "FL" stup (169) = "FM" stup (170) = " FN "stup (171) =" ZA "stup (172) =" FP "stup (173) =" CF "stup (174) =" FR "stup (175) =" FS "stup (176) =" FT " stupac (177) = "FU" stup (178) = "FV" stup (179) = "FW" stup (180) = "FX" stup (181) = "FG" stup (182) = "FZ" stup ( 183) = "GA" stup (184) = "HR" stup (185) = "GC" stup (186) = "GD" stup (187) = "GE" stup (188) = "GF" stup (189) = "GG" stup (190) = "GH" stup (191) = "GI" stup (192) = "GJ" stup (193) = "GK" stup (194) = "GL" stup (195) = " GM "stup (196) =" GN "stup (197) =" GO "stup (198) =" GP "stup (199) =" GQ "stup (200) =" GR "stup (201) =" GS " stupac (202) = "GT" stup (203) = "GU" stup (204) = "GV" stup (205) = "GW" stup (206) = "GX" stup (207) = "GY" stup ( 208) = "GZ" stup (209) = "HA" stup (210) = "HB" stup (211) = "HC" stup (212) = "HD" stup (213) = "on" stup (214) = "HF" stup (215) = "HG" stup (216) = "HH" stup (217) = "HI" stup (218) = "HJ" stup (219) = "HK" stup (220) = " HL "stup (221) =" HM "stup (222) =" HN "stup (223) =" HO "stup (224) =" HP "stup (225) =" HQ "stup (226) =" HR " stupac (227) = "HS" stup (228) = "HT" stup (229) = "HU" stup (230) = "HV" stup (231) = "HW" stup (232) = "H" stup ( 233) = "HY" stup (234) = "HZ" stup (235) = "IA" stup (236) = "IB" stup (237) = "IC" stup (238) = "ID" stup (239) = "tj." stupac (240) = "AKO" stupac (241) = "IG" stup (242) = "IH" stup (243) = "II" stup (244) = "IJ" stup (245) = " IK "stup (246) =" Il "stup (247) =" IM "stup (248) =" IN "stup (249) =" IO "stup (250) =" IP "stup (251) =" IQ " stupac (252) = "IR" stup (253) = "JE" stup (254) = "IT" stup (255) = "UI" stup (256) = "IV" Povratak stupcu (broj) Kraj Function End Class Ova metoda me je dobro služio i ja se nadam previše ... molimo vas da ostavite svoje komentare.
Bitacoras.com o ...
Stopa u Bitacoras.com: Pozdrav: Danas želim pokazati primjer koji mi je služio za dugo vremena, a ja još uvijek koriste. Mi ćemo učiniti primjer za izvoz u Excel DataTable puni bez obzira na broj stupaca ili redaka koji su ... ..
Dobro ...
Izvrsno mjesto! Hvala puno mi je pomogao, ali imam veliko pitanje .. Budući da je ovo veza s SQL .. Kako mogu promijeniti ime stupaca! Budući da donosi naziv polja u SQL ..!
Nadajmo se da sam razumio ..
Hvala!
Idem za spremanje ...
u nekom trenutku će biti koristan ...
Je li to dobro za Excel 2007? Imao sam problema s izvozom za razvoj, da je to vrijedi za ranije verzije, ali ne i za 2007. Hvala
Ogromne izvornog koda. me dobro služio. q je odavno.
No, također imaju uvoz ecxel tablice podataka. ambien ali bi moglo biti DataGrid, a zatim ažuriranje DataAdapter i prihvaćanje promjene koje će biti ušteda u datatable Q BD ... Nadam se da ću pomoći ili biti u mogućnosti naći .. hvala
Pozdrav Puno hvala! ovo super!
Ali ja pitam koji određuje da se u slučaju DataGrid koji su nekoliko DataGrid?
Iz tablice koju zovete ...
SELECT * FROM (naziv tablice)
Ako želite odrediti koja polja želite
odaberite (polja, polja, polja) * iz tablice
ejm
odaberite automobil boja, aniona iz vozila
Imam problem s ovom primjeru sam napraviti 2 DC pogreške u varijablama i dr., ja mogu učiniti da to popraviti?
Bok, pokušajte ovo:
Za svaki dr. Kao DataRow U ds.Tables (0). Reci i DataColumn Za svaki DC ds.Tables kao (0). Kolumne
Nadam se da ovo ne riješi. Pozdrav.
halo.
To chevere, ali dio stupca ime nije vrlo funkcionalne.
Ja ću uploadati na moj blog puno manji broj ograničenja veličine i bez
jaysson.blogspot.com
spremni i ode članak
http://jaysson.blogspot.com/2010/06/columnas-es-excel.html
Dobar članak, ali imam problem na mom računalu s programom Excel 2007 radi dobro, ali računala s programom Excel 2003 ili ranije neće raditi. Bilo tko znati ako problem knjižnice koji se uvoze, kao što vam da shvatite da radi za bilo excel, ali sam naišao ovaj problem.
Neka je vidjeti ako netko može riješiti dvojbe.
Hvala Vam.
Dobro ...
Izvrsno mjesto! Hvala puno mi je pomogao, ali imam veliko pitanje .. Budući da je ovo veza s SQL .. Kako mogu promijeniti ime stupaca! Budući da donosi naziv polja u SQL ..!
Nadajmo se da sam razumio ..
Hvala!
Javna Sub ExportarDatosExcel (ByVal DataGridView1 Kao DataGridView, ByVal naslov String)
Kao što je Novi Excel.Application Dim m_Excel
m_Excel.Cursor = Excel.XlMousePointer.xlWait
m_Excel.Visible = True
Kao Excel.Workbook Dim = m_Excel.Workbooks.Add objLibroExcel
Kao Excel.Worksheet Dim = objLibroExcel.Worksheets objHojaExcel (1)
S objHojaExcel
. Vidljivi = Excel.XlSheetVisibility.xlSheetVisible
. Aktiviraj ()
'Zaglavlja
. Range ("A1: L1"). Pisma ()
. Range ("A1: L1"). Value = "Institut ARGENCAF"
. Range ("A1: L1"). Font.Bold = True
. Range ("A1: L1"). Font.Size = 15
'Čuperak
. Range ("A2: L2"). Pisma ()
. Range ("A2: L2"). Value = naslov
. Range ("A2: L2"). Font.Bold = True
. Range ("A2: L2"). Font.Size = 12
Const primeraLetra Kao Char = ""
Const firstNumber kao kratka = 3
Dim pismo kao Char, Char Kao UltimaLetra
Dim broj kao Integer, UltimoNumero kao cijeli broj
Dim Kao Byte = uzlazno cod_letra (primeraLetra) - 1
Dim kao niz = Application.CurrentCulture.NumberFormat.NumberDecimalSeparator sepDec
Dim kao niz = Application.CurrentCulture.NumberFormat.NumberGroupSeparator sepMil
"Postavljanje stupca format kćeri izračuna
StrColumna Dim kao niz = ""
LetraIzq Dim kao niz = ""
Dim Kao Byte = uzlazno cod_LetraIzq (primeraLetra) - 1
Pismo = primeraLetra
Broj = firstNumber
Kao Excel.Range Dim objCelda
Za svaki C kao DataGridViewColumn U DataGridView1.Columns
Zatim, ako c.Visible
Ako je pismo = "Z" Tada
Pismo = primeraLetra
cod_letra = uzlazno (primeraLetra)
cod_LetraIzq + = 1
LetraIzq = Chr (cod_LetraIzq)
Drugo
cod_letra + = 1
Pismo = Chr (cod_letra)
Kraj Ako je
strColumna = LetraIzq + Lyrics + Numero.ToString
objCelda =. Raspon (strColumna, Type.Missing)
objCelda.Value = c.HeaderText
objCelda.EntireColumn.Font.Size = 8
'ObjCelda.EntireColumn.NumberFormat = c.DefaultCellStyle.Format
Ako c.ValueType Je GetType (decimalno) OrElse c.ValueType je GetType (Double) Tada
objCelda.EntireColumn.NumberFormat = "#" + sepMil + "0" + + sepDec "00"
Kraj Ako je
Kraj Ako je
Sljedeći
Kao Excel.Range Dim objRangoEncab =. Range (+ primeraLetra Numero.ToString, LetraIzq + Lyrics + Numero.ToString)
objRangoEncab.BorderAround (1, Excel.XlBorderWeight.xlMedium)
UltimaLetra = Pošalji
Dim kao niz = LetraIzq UltimaLetraIzq
'Učitavanje podataka
Dim ja kao Integer = Broj + 1
Za svaki u popis kao DataGridViewRow DataGridView1.Rows
LetraIzq = ""
cod_LetraIzq = uzlazno (primeraLetra) - 1
Pismo = primeraLetra
cod_letra = uzlazno (primeraLetra) - 1
Za svaki C kao DataGridViewColumn U DataGridView1.Columns
Zatim, ako c.Visible
Ako je pismo = "Z" Tada
Pismo = primeraLetra
cod_letra = uzlazno (primeraLetra)
cod_LetraIzq + = 1
LetraIzq = Chr (cod_LetraIzq)
Drugo
cod_letra + = 1
Pismo = Chr (cod_letra)
Kraj Ako je
strColumna = LetraIzq + Lyrics
'Teret ovdje bi trebao biti
. Stanice (i, strColumna) = IIF (IsDBNull (reg.ToString), "", reg.Cells (c.Index). Vrijednost)
'. Stanice (i, strColumna) = IIF (IsDBNull (Uredba (c.DataPropertyName)), c.DefaultCellStyle.NullValue, reg. (c.DataPropertyName))
'. Range (strColumna + I, strColumna + I). U ()
Kraj Ako je
Sljedeći
Kao Excel.Range Dim objRangoReg =. Range (+ primeraLetra i.ToString, i.ToString strColumna +)
objRangoReg.Rows.BorderAround ()
objRangoReg.Select ()
i + = 1
Sljedeći
UltimoNumero = I
'Crtanje linije stupaca
LetraIzq = ""
cod_LetraIzq = uzlazno ("")
cod_letra = uzlazno (primeraLetra)
Pismo = primeraLetra
Za svaki C kao DataGridViewColumn U DataGridView1.Columns
Zatim, ako c.Visible
objCelda =. Raspon (+ Lyrics + primerNumero.ToString LetraIzq, LetraIzq + Lyrics + (UltimoNumero -. 1) ToString)
objCelda.BorderAround ()
Ako je pismo = "Z" Tada
Pismo = primeraLetra
cod_letra = uzlazno (primeraLetra)
LetraIzq = Chr (cod_LetraIzq)
cod_LetraIzq + = 1
Drugo
cod_letra + = 1
Pismo = Chr (cod_letra)
Kraj Ako je
Kraj Ako je
Sljedeći
'Nacrtaj debele vanjske granice
Kao Excel.Range Dim objRango =. Range (+ primeraLetra primerNumero.ToString, UltimaLetra UltimaLetraIzq + + (UltimoNumero -. 1) ToString)
objRango.Select ()
objRango.Columns.AutoFit ()
objRango.Columns.BorderAround (1, Excel.XlBorderWeight.xlMedium)
Završiti s
m_Excel.Cursor = Excel.XlMousePointer.xlDefault
End Sub
ToolStripButton2_Click_1 Private Sub (ByVal pošiljatelja Kao System.Object, ByVal e kao System.EventArgs) Ručke ToolStripButton2.Click
ExportarDatosExcel (DataGridView1, "izvoz")
End Sub
IZVRSNO! .... hvala brate, imao sam 3 dana s modulom za uvoz / izvoz Excel i ništa radio .... ali sa vaše rješenje vidim opet zvijezde ... Pozdrav iz Arequipa !!!:..
Nema na čemu. Drago mi vas je služio kao primjer.
Ovaj kod mi je puno pomogao, tako da sam raditi sa moja dva centa:
Ja optimiziran "ColumnName" da biste dobili stupac ahsta ZZ (702 stupaca.)
Ovdje ću vam dati kod:
Javnu funkciju ColumnName (ByVal broj kao Integer) kao niz
Dim stupac (703) kao niz
Stupac (1) = ""
Stupac (2) = "B"
stupcu (3) = "C"
Stupac (4) = "D"
Stupac (5) = "E"
stupac (6) = "F"
Stupac (7) = "G"
Stupac (8) = "H"
stupac (9) = "ja"
Stupac (10) = "J"
Stupac (11) = "K"
Stupac (12) = "L"
Stupac (13) = "M"
stupcu (14) = "N"
Stupac (15) = "O"
stupcu (16) = "P"
stupcu (17) = "Q"
Stupac (18) = "R"
stupcu (19) = "S"
Stupac (20) = "T"
stupcu (21) = "U"
stupcu (22) = "V"
stupcu (23) = "W"
stupcu (24) = "X"
stupcu (25) = "Y"
stupcu (26) = "Z"
Dim i = 27
Za Ltr1 = 1 do 26
Za Ltr2 = 1 do 26
stupac (i) = stupac (Ltr1) i stupac (Ltr2)
i + = 1
Sljedeći
Sljedeći
Povratak stupac (broj)
Kraj funkcija
TECKNOCK, puno ti hvala za pomoć!, Ali imajte na umu da, ako je knjiga vjerujem da je kompatibilan s programom Excel 97-2003 stupaca Najveća dopuštena je 256 (do IV). Baš kao komentar pa uzeti u obzir.
Elizej
Našto trčanje aplikacija lokalno funcioana ispravno, ali kad idem na web stranici ne stvara Excel, ali ne bi pogreška
izgled, radim uzemljenje na My SQL
Ću ne volim raditi, ali AJA estubo
Trebam pomoć pokušati učiniti sve obrasce koji su ovdje i ja dobiti greška svih
Ručni, ti si savršen funkcioniranje maksimum.
[...] [...]
vrlo dobra, čestitke su u najboljem poslije sam čitati i konzultirati
Hvala! To je vrlo korisno