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:

Importować odniesienie do programu Excel

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

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.
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 .....
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!
Mam zamiar zapisać ...
w pewnym momencie będzie to przydatne ...
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
Ogromny kod źródłowy. służył mi dobrze. q to było już dawno.
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
Witam Serdecznie dziękujemy! Ten wspaniały!
Ale zastanawiam się gdzie datagrid określa, że stosowane w przypadku, którzy są kilka DataGrid?
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
Mam problem z tym przykładzie zrobić 2 błędy w zmiennych dc i DR, mogę to naprawić?
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.
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
gotowy i udał się na artykuł
http://jaysson.blogspot.com/2010/06/columnas-es-excel.html
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ę.
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!
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
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:! ..
Proszę bardzo. Cieszę się, że służył jako przykład.
witam przepraszam za ProgressBar1 wzrostu? ale staram się zrobić w tym blokie części
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
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
Po uruchomieniu lokalnego funcioana aplikacji poprawnie, ale kiedy przesłać go na stronie internetowej nie generuje programu Excel, ale nie dostaniesz błąd
Szukam haciend uziemiony do mojej sql
nie tak jak robię ale zrobię aja
Potrzebuję pomocy staram się robić to za każdym jakim jesteś tutaj i dostaję błąd wszystko
Ręka, jesteś doskonały maksymalny funca.
[...] [...]
bardzo dobra, gratulacje są w najlepszym postu czytałem i konsultacji
Dziękujemy! To było bardzo pomocne
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
jedno pytanie może mieć bezpośredniego ładowania zapytanie SQL do programu Excel?
wcześniej przez
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.
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ć?
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
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
ktoś proszę wyjaśnić progress1 rosnące?
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
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