DataTable automatski se izvozi u Microsoft Excel

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:

Importar referencia a Excel

Uvoz referenca u Excel

Importar referencia Excel

Uvoz Excel referentni

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

Formulario aplicación para exportar dataset a excel

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.

26 Responses to "DataTable automatski izvozi u Microsoft Excel"

  1. Bitacoras.com kaže:

    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 ... ..

    • Carlos Linares kaže:

      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!

  2. Denko kaže:

    Idem za spremanje ...
    u nekom trenutku će biti koristan ...

  3. Victor kaže:

    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

  4. Ivan kaže:

    Ogromne izvornog koda. me dobro služio. q je odavno.

  5. Ivan kaže:

    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

  6. Jose kaže:

    Pozdrav Puno hvala! ovo super!
    Ali ja pitam koji određuje da se u slučaju DataGrid koji su nekoliko DataGrid?

    • Carlos Linares kaže:

      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

  7. beto je rekao:

    Imam problem s ovom primjeru sam napraviti 2 DC pogreške u varijablama i dr., ja mogu učiniti da to popraviti?

    • Elizej kaže:

      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.

  8. Jason kaže:

    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

  9. Rodrigo kaže:

    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.

  10. Carlos Linares kaže:

    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!

  11. Alexander kaže:

    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

  12. JuanPeople kaže:

    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 !!!:..

  13. TECKNOCK kaže:

    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

    • Elizej kaže:

      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

  14. raysip kaže:

    Našto trčanje aplikacija lokalno funcioana ispravno, ali kad idem na web stranici ne stvara Excel, ali ne bi pogreška

  15. Aderson kaže:

    izgled, radim uzemljenje na My SQL

    Ću ne volim raditi, ali AJA estubo

  16. Pavao kaže:

    Trebam pomoć pokušati učiniti sve obrasce koji su ovdje i ja dobiti greška svih

  17. Ivan kaže:

    Ručni, ti si savršen funkcioniranje maksimum.

  18. neji kaže:

    vrlo dobra, čestitke su u najboljem poslije sam čitati i konzultirati

  19. Patricia kaže:

    Hvala! To je vrlo korisno

Komentar