Automatycznie eksportu do programu Microsoft Excel DataTable

Dziś chcę pokazać przykład, który służył mi przez długi czas i jeszcze nadal z niego korzystać.
Dołożymy przykład eksportować DataTable do programu Excel Full niezależnie od liczby kolumn i wierszy, które posiadają.

Istnieje wiele sposobów aby to zrobić, ale uważam, że bardzo przydatne, ponieważ ta metoda działa dla dowolnej wersji programu Excel. Dla compatilidad problemów z nowszych wersji programu Excel obsłużyć tylko 256 kolumn.

Pierwszą rzeczą, jaką potrzebujemy, aby dodać odwołanie do Microsoft.Office.Interop.Excel i robimy w następujący sposób:

Importar referencia a Excel

Importować odniesienie do programu Excel

Importar referencia Excel

Import Excel odniesienia

Następnie musimy formularz, Guzik, DataGridView i pasek postępu. Możemy mieć jak widać na obrazku:

Formulario aplicación para exportar dataset a excel

Formularz zgłoszeniowy do eksportu zbioru danych do Excela

Teraz chcę pokazać wszystkim, że kod jest bardzo prosty Najważniejszą rzeczą jest to, że dostosowuje się do każdej tabeli. Będzie można ponownie użyć bez problemów.

  Import System.Data
 System.Data.SqlClient Imports
 Microsoft.Office.Interop import

 Public Class Form1
     Prywatne ds As New DataSet

     Private Sub Form1_Load (ByVal sender Jak System.Object i ByVal e As System.EventArgs) Handles MyBase.Load
         '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
         '/ / Utwórz połączenie i wypełnić DataGridView
         '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
         Dim cnn As New SqlConnection ("Data Source = localhost \ SQLEXPRESS; Initial Catalog = Northwind; Integrated Security = True")
         Dim da As New SqlDataAdapter ("SELECT * od klientów", CNN)
         da.Fill (DS)
         DataGridView1.DataSource DS.Tables = (0)
     End Sub

     BtnExportar_Click Private Sub (ByVal sender Jak System.Object i ByVal e As System.EventArgs) Handles btnExportar.Click
         '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / /
         '/ / Tworzenie obiektu programu Excel
         '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / /
         Dim m_Excel
         Dim objLibroExcel
         Dim objHojaExcel
         m_Excel = CreateObject ("Excel.Application")
         m_Excel.Workbooks.Add objLibroExcel = ()
         objHojaExcel = objLibroExcel.Worksheets (1)
         objHojaExcel.Name = "Klienci"
         objHojaExcel.Visible = Excel.XlSheetVisibility.xlSheetVisible
         objHojaExcel.Activate ()

         '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
         "/ / Zdefiniuj dwie zmienne kontrolować wiersza i kolumny
         '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
         Dim wiersz As Integer = 1
         Dim kolumna As Integer = 1

         '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
         '/ / Ustawiamy zgodnie z nagłówków kolumn
         '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
         objHojaExcel.Range ("A1"). Wybierz ()
         Dla każdego DC IN DS.Tables (0). Kolumny
             objHojaExcel.Range (ColumnName (kolumny) & 1). Value = dc.ColumnName
             kolumna + = 1
         Następny
         wiersz + = 1

         '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
         '/ / My sformatować tytuły wierszy
         '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
         Jako Excel.Range Dim objRango znaku = objHojaExcel.Range ("A1:" & NazwaKolumny (DS.Tables (0) Columns.Count) & "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

         '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
         '/ / Wczytaj wszystkie wiersze w DataTable
         '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
         ProgressBar1.Maximum = DS.Tables (0). Rows.Count
         kolumna = 1
         ProgressBar1.Value = 0
         Dla każdego DR w DS.Tables (0). Wiersze
             kolumna = 1
             Dla każdego DC IN DS.Tables (0). Kolumny
                 objHojaExcel.Range (ColumnName (kolumny) i rząd). Value = dr (dc.ColumnName)
                 kolumna + = 1
             Następny
             wiersz + = 1
             ProgressBar1.Value + = 1
         Następny

         '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
         '/ / Mamy dostosować szerokość automatycznie
         '/ / Od wszystkich kolumn używanych
         '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
         objRango = objHojaExcel.Range ("A1:" & NazwaKolumny (DS.Tables (0) Columns.Count) i DS.Tables (0) Rows.Count.ToString r.).
         objRango.Select ()
         objRango.Columns.AutoFit ()

         '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
         '/ / Mówimy Excel, aby wyświetlić
         '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
         MsgBox ("Eksportuj do Excel Komplet" MsgBoxStyle.Information ". :: Solovb.net ::.")
         m_Excel.Visible = True

     End Sub

     Publiczny NazwaKolumny Funkcja (ByVal liczba As Integer) As String
         Dim kolumny (256) As String

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

         Kolumna Return (liczba)
     End Function
 End Class 

Metoda ta służyła mi dobrze i mam nadzieję, że Ty też ... proszę zostawić swój komentarz.

36 Responses to "automatycznie wyeksportować DataTable do programu Microsoft Excel"

  1. Bitacoras.com mówi:

    Informacje Bitacoras.com ...

    Kurs w Bitacoras.com: Cześć, Dzisiaj chcę pokazać przykład, który służył mi przez długi czas i jeszcze nadal z niego korzystać. Dołożymy przykład eksportować DataTable do programu Excel Full niezależnie od liczby kolumn i wierszy, które Teng .....

    • Carlos Linares mówi:

      Dobre ...

      Doskonała wiadomość! Dziękuję wam pomógł mi pełna, ale mam wątpliwości .. Ponieważ link jest z SQL .. Jak zmienić nazwę kolumny? Bo przynosi nazwę dziedzinach sql ..!

      Mam nadzieję, że i ja zrozumiałem ..

      Dziękujemy!

  2. Denko mówi:

    Mam zamiar zapisać ...
    w pewnym momencie będzie to przydatne ...

  3. Victor mówi:

    Czy to ważne dla programu Excel 2007? Miałem problemy z eksportu do rozwoju, że jest to ważne dla wcześniejszych wersji, ale nie na rok 2007. Dzięki

  4. John mówi:

    Ogromny kod źródłowy. służył mi dobrze. q to było już dawno.

  5. John mówi:

    Chociaż też trzeba ecxel import tabeli danych. ale może być środowisko do datagrid i następnie aktualizowanie DataAdapter i zaakceptowaniu zmian w DataTable będzie zapisany w kw BD ... Mam nadzieję, że mogę pomóc lub znaleźć .. dzięki

  6. Jose mówi:

    Witam Serdecznie dziękujemy! Ten wspaniały!
    Ale zastanawiam się gdzie datagrid określa, że ​​stosowane w przypadku, którzy są kilka DataGrid?

    • Carlos Linares mówi:

      Na stole jesteś na rozmowy ...

      select * from (nazwa tabeli)

      Jeśli chcesz określić, które pola chcesz

      select (pola, pola, pola) * z tabeli
      ejm
      Wybierz samochód, kolor, rok od samochodu

  7. Beto powiedział:

    Mam problem z tym przykładzie zrobić 2 błędy w zmiennych dc i DR, mogę to naprawić?

    • Elizeusz mówi:

      Cześć, spróbuj tego:
      Dla każdego dr As DataRow W DS.Tables (0). Wiersze i DataColumn Dla każdego DC IN DS.Tables jako (0). Kolumny

      Mam nadzieję, że zostanie rozwiązany. Pozdrowienia.

  8. Jason mówi:

    hola.
    to Chevere, ale część nazwy kolumny nie jest bardzo funkcjonalny.
    Będę przesłać na moim blogu o wiele mniejszą ograniczenia rozmiaru kodu i bez

    jaysson.blogspot.com

  9. Rodrigo mówi:

    Dobry artykuł, ale mam problem na moim komputerze z programem Excel 2007 działa sprawnie, ale z komputerów z programu Excel 2003 lub wcześniej nie działa. Ktoś wie czy problem bibliotek, które są importowane, ponieważ sugeruje, że działa dla wszystkich Excel, ale miałem do czynienia z tym problemem.

    Zobaczymy, czy ktoś może rozwiązać wątpliwości.
    Dziękuję.

  10. Carlos Linares mówi:

    Dobre ...

    Doskonała wiadomość! Dziękuję wam pomógł mi pełna, ale mam wątpliwości .. Ponieważ link jest z SQL .. Jak zmienić nazwę kolumny? Bo przynosi nazwę dziedzinach sql ..!

    Mam nadzieję, że i ja zrozumiałem ..

    Dziękujemy!

  11. Alexander mówi:

    Public Sub ExportarDatosExcel (ByVal DataGridView1 jak DataGridView, tytuł ByVal As String)
    As New Excel.Application Dim m_Excel
    m_Excel.Cursor = Excel.XlMousePointer.xlWait
    m_Excel.Visible = True
    Jako Excel.Workbook Dim objLibroExcel znaku = m_Excel.Workbooks.Add
    Jako Excel.Worksheet Dim objHojaExcel znaku = objLibroExcel.Worksheets (1)
    Z objHojaExcel
    . Visible = Excel.XlSheetVisibility.xlSheetVisible
    . Activate ()
    "Header
    . Range ("A1: L1"). Merge ()
    . Range ("A1: L1"). Value = "INSTYTUT ARGENCAF"
    . Range ("A1: L1"). Font.Bold = True
    . Range ("A1: L1"). Font.Size = 15
    "Czub
    . Range ("A2: L2"). Merge ()
    . Range ("A2: L2"). Wartość title =
    . Range ("A2: L2"). Font.Bold = True
    . Range ("A2: L2"). Font.Size = 12

    Const primeraLetra jako char = ""
    Const firstNumber tak krótkim = 3
    Dim list jako char, char jako UltimaLetra
    Dim liczba As Integer, UltimoNumero As Integer
    Dim As bajt = Asc cod_letra ust primeraLetra) - 1
    Dim As String = Application.CurrentCulture.NumberFormat.NumberDecimalSeparator sepDec
    Dim As String = Application.CurrentCulture.NumberFormat.NumberGroupSeparator sepMil
    "Format Zestaw kolumn córki obliczania
    StrColumna Dim As String = ""
    LetraIzq Dim As String = ""
    Dim As bajt = Asc cod_LetraIzq ust primeraLetra) - 1
    Letter = primeraLetra
    = Liczba firstNumber
    Jako Excel.Range Dim objCelda
    Dla każdego w. Jako DataGridViewColumn W DataGridView1.Columns
    Następnie, jeśli c.Visible
    Jeśli List = "Z" Wtedy
    Letter = primeraLetra
    cod_letra = Asc (primeraLetra)
    cod_LetraIzq + = 1
    LetraIzq = Chr (cod_LetraIzq)
    Więcej
    cod_letra + = 1
    Letter = Chr (cod_letra)
    End If
    strColumna = LetraIzq + tekst + Numero.ToString
    objCelda =. Range (strColumna, Type.Missing)
    objCelda.Value = c.HeaderText
    objCelda.EntireColumn.Font.Size = 8
    "ObjCelda.EntireColumn.NumberFormat = c.DefaultCellStyle.Format
    Jeśli c.ValueType Czy GetType (Decimal) OrElse c.ValueType Czy GetType (Dwuosobowy) Następnie
    objCelda.EntireColumn.NumberFormat = "#" + sepMil + "0" + sepDec + "00"
    End If
    End If
    Następny

    Jako Excel.Range Dim objRangoEncab =. Zakres (primeraLetra + Numero.ToString i LetraIzq + Lyrics Numero.ToString +)
    objRangoEncab.BorderAround (1, Excel.XlBorderWeight.xlMedium)
    UltimaLetra = Wyślij
    Dim As String = LetraIzq UltimaLetraIzq

    'Dane LOAD
    Dim i As Integer = liczba + 1

    Dla każdego z wymienionych w wykazie Jako DataGridViewRow DataGridView1.Rows
    LetraIzq = ""
    cod_LetraIzq = Asc (primeraLetra) - 1
    Letter = primeraLetra
    cod_letra = Asc (primeraLetra) - 1
    Dla każdego w. Jako DataGridViewColumn W DataGridView1.Columns
    Następnie, jeśli c.Visible
    Jeśli List = "Z" Wtedy
    Letter = primeraLetra
    cod_letra = Asc (primeraLetra)
    cod_LetraIzq + = 1
    LetraIzq = Chr (cod_LetraIzq)
    Więcej
    cod_letra + = 1
    Letter = Chr (cod_letra)
    End If
    strColumna znaku = LetraIzq + Lyrics
    "Tutaj powinno być obciążenie
    Komórki (I, strColumna) = IIf (IsDBNull (reg.ToString), "", reg.Cells (c.Index). Wartości)
    ". Komórki (I, strColumna) = IIf (IsDBNull (rozporządzenie (c.DataPropertyName)), c.DefaultCellStyle.NullValue, reg (c.DataPropertyName))
    ". Range (strColumna + I, strColumna + i). W ()

    End If
    Następny
    Jako Excel.Range Dim objRangoReg =. Range (primeraLetra + i.ToString, i.ToString strColumna +)
    objRangoReg.Rows.BorderAround ()
    objRangoReg.Select ()
    i + = 1
    Następny
    UltimoNumero = i

    "Narysuj linie kolumn,
    LetraIzq = ""
    cod_LetraIzq = Asc ("A")
    cod_letra = Asc (primeraLetra)
    Letter = primeraLetra
    Dla każdego w. Jako DataGridViewColumn W DataGridView1.Columns
    Następnie, jeśli c.Visible
    . objCelda = Range (LetraIzq + tekst + primerNumero.ToString i LetraIzq + Lyrics + (UltimoNumero - 1). ToString)
    objCelda.BorderAround ()
    Jeśli List = "Z" Wtedy
    Letter = primeraLetra
    cod_letra = Asc (primeraLetra)
    LetraIzq = Chr (cod_LetraIzq)
    cod_LetraIzq + = 1
    Więcej
    cod_letra + = 1
    Letter = Chr (cod_letra)
    End If
    End If
    Następny

    "Narysuj grubej zewnętrznej granicy
    Jako Excel.Range Dim objRango = zakres. (PrimeraLetra + primerNumero.ToString, UltimaLetra UltimaLetraIzq + + (UltimoNumero - 1). ToString)
    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 Jak System.Object i ByVal e As System.EventArgs) Handles ToolStripButton2.Click
    ExportarDatosExcel (DataGridView1 "wywóz")
    End Sub

  12. JuanPeople mówi:

    DOSKONAŁA! .... brat dzięki, i trwało to 3 dni z modułem do importu / eksportu Excel i nic nie działało .... ale z rozwiązaniem widzę znowu gwiazdy ... pozdrowienia od Arequipa:! ..

  13. TECKNOCK mówi:

    Kod ten bardzo mi pomogło, więc współpracować z moich dwóch centów:

    Zoptymalizowali "ColumnName" przyjazd kolumny ahsta ZZ (702 et al.)

    Tutaj daje kod:

    Publiczny NazwaKolumny Funkcja (ByVal liczba As Integer) As String
    Dim kolumny (703) As String

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

    Dim i = 27
    Dla Ltr1 = 1 do 26
    Dla Ltr2 = 1 do 26
    kolumna (i) = kolumna (Ltr1) i kolumna (Ltr2)
    i + = 1
    Następny
    Następny

    Kolumna Return (liczba)
    End Function

    • Elizeusz mówi:

      TECKNOCK, bardzo dziękuję za pomoc! Ale należy pamiętać, że jeśli książka tworzymy jest kompatybilny z kolumn programu Excel 97-2003 maksymalnych dozwolonych jest 256 (IV). Podobnie jak comment wziąć to pod uwagę.

      Elizeusz

  14. raysip mówi:

    Po uruchomieniu lokalnego funcioana aplikacji poprawnie, ale kiedy przesłać go na stronie internetowej nie generuje programu Excel, ale nie dostaniesz błąd

  15. Aderson mówi:

    Szukam haciend uziemiony do mojej sql

    nie tak jak robię ale zrobię aja

  16. Paweł mówi:

    Potrzebuję pomocy staram się robić to za każdym jakim jesteś tutaj i dostaję błąd wszystko

  17. Jan mówi:

    Ręka, jesteś doskonały maksymalny funca.

  18. Neji mówi:

    bardzo dobra, gratulacje są w najlepszym postu czytałem i konsultacji

  19. Patricia mówi:

    Dziękujemy! To było bardzo pomocne

  20. f.delgado mówi:

    Hej kod nie działa na mnie oznacza a błędy da.Fill (DS)

    I zaznaczyć błąd nie został znaleziony SQLException

    możesz mi pomóc

  21. JAV mówi:

    jedno pytanie może mieć bezpośredniego ładowania zapytanie SQL do programu Excel?

    wcześniej przez

  22. Delfino Morales mówi:

    Witaj przyjaciele Przede wszystkim agradesco Twojego wkładu.
    Zauważ, że mam problem nie mogę znaleźć odniesienie można wskazać, mam zainstalowany pakiet Office 2010 i który nie może być mój problem.
    agradeseria kilka rad dla Ciebie.

  23. Ameryka mówi:

    Witam, bardzo dobry wkład jest to, czego szukałem ... ale gdy uruchamiam go z serwera rozwoju działa perfekcyjnie, ale kiedy dostęp do sieci z innego komputera nic nie robi ... nie o błędzie, ale nie rekordowy nic ...

    Ktoś wie jak to naprawić?

  24. Azofeifa Hernan mówi:

    Dziękuję bardzo, pomógł mi Twój przykład jako podstawa do tworzenia funkcję, która generuje mi plik programu Excel, ale bezpośrednio z wartości przechowywanych w sieci jest to, co w przypadku dejor jest przydatna dla kogoś

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / Ustawiamy zgodnie z nagłówków kolumn
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    objHojaExcel.Range ("A1"). Wybierz ()
    Dim I As Integer = 0
    Lncol Dim As Integer = 1
    Dla każdego DC IN dgvSocios.Columns

    Jeśli dgvSocios.Columns.Item (I). Visible = True Następnie
    objHojaExcel.Range (ColumnName (lncol) & 1). Value = dgvSocios.Columns.Item (I). HeaderText
    lncol + = 1
    End If
    I + = 1
    Następny
    wiersz + = 1

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / My sformatować tytuły wierszy
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    Jako Excel.Range Dim objRango znaku = objHojaExcel.Range ("A1:" & NazwaKolumny (lncol) & "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

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / Wczytaj wszystkie wiersze w DataTable
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    ProgressBar1.Maximum = dgvSocios.Rows.Count
    kolumna = 0
    ProgressBar1.Value = 0
    ProgressBar1.Visible = True
    Lnfila Dim As Integer = 0
    I = 1
    Dla każdego DR w dgvSocios.Rows
    kolumna = 0

    Dla każdego DC IN dgvSocios.Columns
    Jeśli dgvSocios.Columns.Item (kolumna). Visible = True Następnie
    objHojaExcel.Range (ColumnName (I) i rząd). Value = dgvSocios.Item (kolumna, lnfila). Value.ToString
    I + = 1
    End If
    kolumna + = 1
    Następny
    lnfila + = 1
    wiersz + = 1
    ProgressBar1.Value + = 1
    Następny

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / Mamy dostosować szerokość automatycznie
    '/ / Od wszystkich kolumn używanych
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    objRango = objHojaExcel.Range ("A1:" & NazwaKolumny (lncol) & (lnfila + 1) ToString).
    objRango.Select ()
    objRango.Columns.AutoFit ()

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / Mówimy Excel, aby wyświetlić
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    MsgBox ("Eksportuj do Excel Komplet" MsgBoxStyle.Information ". :: Solovb.net ::.")
    m_Excel.Visible = True

  25. Pako mówi:

    Przynosząc trochę dla tej funkcji, poniższy kod uniemożliwia wykorzystanie "zasięg" do nie wymagają funkcji "columnName"

    Pozdrawiam,

    Import System.Data
    System.Data.SqlClient Imports
    Import Microsoft.Office.Interop.Excel
    Publiczny mutil Moduł
    Public Sub ExportarDtToExcel (ByVal Pwt Jak System.Data.DataTable, tytuł ByVal As String)
    Jako Excel.Application Dim m_Excel
    Jako Excel.Workbook Dim objLibroExcel
    Jako arkusza Dim objHojaExcel
    Próbować
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / Tworzenie obiektu programu Excel
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    m_Excel = CreateObject ("Excel.Application")
    m_Excel.Workbooks.Add objLibroExcel = ()
    objHojaExcel = objLibroExcel.Worksheets (1)
    objHojaExcel.Name = Tytuł
    objHojaExcel.Visible = Excel.XlSheetVisibility.xlSheetVisible
    objHojaExcel.Activate ()

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    "/ / Zdefiniuj dwie zmienne kontrolować wiersza i kolumny
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    Dim wiersz As Integer = 1
    Dim kolumna As Integer = 1

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / Ustawiamy zgodnie z nagłówków kolumn
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    "ObjHojaExcel.Range (" A1 "). Wybierz ()

    objHojaExcel.Cells (wiersz, kolumna). SELECT ()
    Dla każdego DC IN Dt.Columns
    objHojaExcel.Cells (wiersz, kolumna). Value = dc.ColumnName
    kolumna + = 1
    Następny
    wiersz + = 1

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / My sformatować tytuły wierszy
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    Jako Excel.Range znaku = dim objRango objHojaExcel.Range ust objHojaExcel.Cells (1, 1), objHojaExcel.Cells ust 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

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / Wczytaj wszystkie wiersze w DataTable
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /

    kolumna = 1

    Dla każdego DR w Dt.Rows
    kolumna = 1
    Dla każdego DC IN Dt.Columns
    objHojaExcel.Cells (wiersz, kolumna). Value = dr (dc.ColumnName)
    kolumna + = 1
    Następny
    wiersz + = 1

    Następny

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / Mamy dostosować szerokość automatycznie
    '/ / Od wszystkich kolumn używanych
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    objHojaExcel.Cells objRango = (1, Dt.Columns.Count)
    objRango.Select ()
    objRango.Columns.AutoFit ()

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / Mówimy Excel, aby wyświetlić
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    MsgBox ("Eksportuj do Excel Complete" MsgBoxStyle.Information "Eksport")
    m_Excel.Visible = True

    Złap ex jako wyjątek

    MsgBox (ex.ToString)

    W końcu

    objHojaExcel = Nothing
    objLibroExcel = Nothing
    m_Excel = Nothing

    End Try
    End Sub

    End Module

  26. Pamela mówi:

    ktoś proszę wyjaśnić progress1 rosnące?

  27. Karloz mówi:

    Witam mam przynieść mój wkład w oparciu o ColumnName funkcji, dobrze Mam niewielkie doświadczenie w zakresie rozwoju i kosztowało mnie trochę pracy w celu opracowania, może uda Ci się zrobić z mniejszą ilością linii kodu i mam nadzieję, że przydatne. Zostawiam tam
    Funkcja FtNombreColumna (ByVal liczba As Integer, ByVal totalColumnas As Integer, Opcjonalni wersji ByVal As String = "12") As String
    Dim kolumna () As String
    Dim i As Integer
    Dim j W trzeciej litery Integer '
    Dim k W drugim liście Integer '
    Dim l W pierwszym liście Integer '
    As Integer Dim Jaux
    As Integer Dim kAux
    i = 1
    Jeśli wersja> 11 A
    Kolumna ReDim (totalColumnas)
    j = 65
    k = 65
    l = 65
    Jaux = 65
    kAux = 0
    Dla i = 1 To totalColumnas
    kolumna (i) = ChrW (j)
    j = j + 1
    Jeśli j = 92 Then 'zakończyć trzeci, a następnie ponownego uruchomienia komputera i zaczyna drugą literę
    "Rozpoczyna się drugi list
    Dla j = 65 do 90
    Próbować
    kolumna (i) = ChrW (k) i ChrW (j)
    Następnie, jeśli j = 90
    Już ponowny rozruch komputera trzecią literę i zwiększa drugą literę
    j = 64
    k = k + 1
    End If
    i = i + 1

    "Początek pierwszej litery
    Następnie, jeśli k = 91
    k = 65
    Dla Jaux = 65 do 90
    kolumna (i) = ChrW (l) i ChrW (k) i ChrW (Jaux)
    Jeśli Jaux = 90 A
    "Zmiana trzecią literę
    Jaux = 64
    k = k + 1
    Następnie, jeśli k = 91
    "Zmiana drugi list przez ejmplo: Przełączenie do B, a pierwsze zmiany list
    k = 65 + kAux
    l = l + 1
    End If
    End If
    Następnie, jeśli l = 91
    Wyjście dla 'kończy pierwszą literę
    End If
    i = i + 1
    Następny
    End If

    Następnie, jeśli k = 91
    Wyjście Dla "kończy drugą literę
    End If
    Złap ex jako wyjątek
    End Try
    Następny

    End If
    Następny

    Więcej
    Kolumna ReDim (totalColumnas)
    j = 65
    k = 65
    Dla i = 1 To totalColumnas
    kolumna (i) = ChrW (j)
    j = j + 1
    Następnie, jeśli j = 92
    "Rozpoczyna drugą literę
    Dla j = 65 do 90
    Próbować
    kolumna (i) = ChrW (k) i ChrW (j)
    Następnie, jeśli j = 90
    j = 64
    k = k + 1
    End If
    i = i + 1
    Złap ex jako wyjątek
    End Try
    "Kończy się pierwszy alfabet list
    Następnie, jeśli k = 91
    Wyjdź na
    End If
    Następny

    End If
    Następny
    End If
    Kolumna Return (liczba)
    End Function

  28. Karloz mówi:

    Przepraszam, że się mylę-kod, umieścić poprzednią wersję, to jest ostateczna wersja.
    =)

    FtNombreColumna Funkcja (ByVal numer jako liczbę całkowitą, totalColumnas ByVal As Integer) As String
    Dim kolumna () As String
    Dim i As Integer
    Dim j W trzeciej litery Integer '
    Dim k W drugim liście Integer '
    Dim l W pierwszym liście Integer '
    As Integer Dim Jaux
    As Integer Dim kAux
    i = 1
    "Jeśli wersja> 11 A
    Kolumna ReDim (totalColumnas)
    j = 65
    k = 65
    l = 65
    Jaux = 65
    kAux = 0
    Dla i = 1 To totalColumnas
    kolumna (i) = ChrW (j)
    j = j + 1
    Jeśli j = 92 Then 'zakończyć trzeci, a następnie ponownego uruchomienia komputera i zaczyna drugą literę
    "Rozpoczyna się drugi list
    Dla j = 65 do 90
    Próbować
    kolumna (i) = ChrW (k) i ChrW (j)
    Następnie, jeśli j = 90
    Już ponowny rozruch komputera trzecią literę i zwiększa drugą literę
    j = 64
    k = k + 1
    End If
    i = i + 1

    "Początek pierwszej litery
    Następnie, jeśli k = 91
    k = 65
    Dla Jaux = 65 do 90
    kolumna (i) = ChrW (l) i ChrW (k) i ChrW (Jaux)
    Jeśli Jaux = 90 A
    "Zmiana trzecią literę
    Jaux = 64
    k = k + 1
    Następnie, jeśli k = 91
    "Zmiana drugi list przez ejmplo: Przełączenie do B, a pierwsze zmiany list
    k = 65 + kAux
    l = l + 1
    End If
    End If
    Następnie, jeśli l = 91
    Wyjście dla 'kończy pierwszą literę
    End If
    i = i + 1
    Następny
    End If

    Następnie, jeśli k = 91
    Wyjście Dla "kończy drugą literę
    End If
    Złap ex jako wyjątek
    End Try
    Następny

    End If
    Następny
    Kolumna Return (liczba)
    End Function

Komentarz