การส่งออกโดยอัตโนมัติไปยัง Microsoft Excel DataTable

วันนี้ผมต้องการที่จะแสดงตัวอย่างที่มีหน้าที่ฉันเป็นเวลานานและยังฉันยังคงใช้มัน
เราจะทำให้เป็นตัวอย่างในการส่งออก DataTable ไปยัง Excel เต็มโดยไม่คำนึงถึงจำนวนของคอลัมน์หรือแถวที่มี

อาจมีหลายวิธีที่จะทำเช่นนี้ แต่ฉันคิดว่ามันมีประโยชน์จริงๆตั้งแต่วิธีการนี้ใช้ได้กับรุ่นของ Excel ใด ๆ สำหรับปัญหาที่เกี่ยวกับ compatilidad รุ่นใหม่ของ Excel เท่านั้นจัดการ 256 คอลัมน์

สิ่งแรกที่เราต้องการก็คือการเพิ่มการอ้างอิงถึง Microsoft.Office.Interop.Excel และเราจะทำดังต่อไปนี้:

Importar referencia a Excel

นำเข้าการอ้างอิงไปยัง Excel

Importar referencia Excel

การอ้างอิงและนำเข้าของ Excel

แล้วเราต้องใช้แบบฟอร์มปุ่ม, dataGridView และแถบความคืบหน้า เราสามารถมีเท่าที่เห็นในภาพ:

Formulario aplicación para exportar dataset a excel

แบบฟอร์มใบสมัครเพื่อส่งออกเป็นชุดข้อมูลไปยัง Excel

สิ่งที่สำคัญที่สุดง่ายจริงๆคือตอนนี้ผมต้องการที่จะแสดงรหัสทั้งหมดคือมันจะปรับไปใช้ตารางใด ๆ คุณจะสามารถนำมาใช้ใหม่ได้โดยไม่มีปัญหา

 Imports System.Data นำเข้าระดับสาธารณะ System.Data.SqlClient Form1 นำเข้า ds เอกชนในฐานะที่เป็นชุดข้อมูล Microsoft.Office.Interop เอกชนย่อยใหม่ Form1_Load (ByVal เป็นผู้ส่ง System.Object, ByVal e เป็น System.EventArgs) จัดการ MyBase.Load '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / สร้างการเชื่อมต่อและกรอก DataGridView '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / Dim cnn As SqlConnection ใหม่ ("Data Source = localhost \ SQLEXPRESS; รายการสินค้าเริ่มต้นของ Northwind =; แบบบูรณาการการรักษาความปลอดภัย = True") da มซำเป็นนิ SqlDataAdapter ("* เลือกจากลูกค้า", CNN) ให้ เติม (DS) DataGridView1.DataSource ds.Tables = (0) End Sub Private Sub btnExportar_Click (ByVal ผู้ส่งเป็น System.Object, ByVal e เป็น System.EventArgs) จัดการ btnExportar.Click '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / สร้างวัตถุ Excel '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / มซำซำ m_Excel objLibroExcel มซำ objHojaExcel m_Excel = CreateObject ("Excel.Application") m_Excel.Workbooks.Add objLibroExcel = () = objLibroExcel.Worksheets objHojaExcel (1) objHojaExcel.Name = "ลูกค้า" objHojaExcel.Visible = Excel . XlSheetVisibility.xlSheetVisible objHojaExcel.Activate () '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / กำหนดตัวแปรทั้งสองในการควบคุมของแถวและคอลัมน์ '/ / / / / / / / / / / / / / / / / / / / / / แถว / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / Dim As Integer = คอลัมน์ 1 Dim As Integer = 1 '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / เราตั้งสายที่มีหัวคอลัมน์ '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / objHojaExcel.Range ("A1"). เลือก () สำหรับ DC ในแต่ละ ds.Tables (0). คอลัมน์ objHojaExcel.Range (ColumnName (คอลัมน์) และ 1) คุ้มค่า. = dc.ColumnName คอลัมน์ + = 1 แถวถัดไป + = 1 '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / เราจัดรูปแบบแถวชื่อ '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / มซำเป็น Excel.Range = objHojaExcel.Range objRango ("A1". ColumnName (ds.Tables (0) Columns.Count) & "1") objRango.Font . Bold = True objRango.Cells.Interior.ColorIndex = 35 objRango.Cells.Borders (Excel.XlBordersIndex.xlDiagonalDown). LineStyle = objRango.Cells.Borders Excel.XlLineStyle.xlLineStyleNone (Excel.XlBordersIndex.xlDiagonalUp). LineStyle = Excel XlLineStyle.xlLineStyleNone objRango.Cells.Borders (Excel.XlBordersIndex.xlEdgeLeft). LineStyle = objRango.Cells.Borders Excel.XlLineStyle.xlLineStyleNone (Excel.XlBordersIndex.xlEdgeRight). LineStyle = objRango.Cells.Borders Excel.XlLineStyle.xlContinuous (Excel . XlBordersIndex.xlEdgeTop). LineStyle = objRango.Cells.Borders Excel.XlLineStyle.xlContinuous (Excel.XlBordersIndex.xlEdgeBottom). LineStyle Excel.XlLineStyle.xlContinuous = '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / โหลดแถวทั้งหมดใน DataTable '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / = ProgressBar1.Maximum ds.Tables (0). คอลัมน์ Rows.Count ProgressBar1.Value = 1 = 0 สำหรับแต่ละ Dr ใน ds.Tables (0). คอลัมน์แถวคุ้มค่าคอลัมน์ = 1 สำหรับ DC ในแต่ละ ds.Tables (0). objHojaExcel.Range (ColumnName (คอลัมน์) และแถว). = คอลัมน์ DR (dc.ColumnName) + = 1 แถวถัดไป + = 1 + 1 = ถัดไป ProgressBar1.Value '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / '/ / เราปรับความกว้างโดยอัตโนมัติ' / / สำหรับคอลัมน์ทั้งหมดที่ใช้ '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / = objRango objHojaExcel.Range ("A1".. ColumnName (ds.Tables (0) Columns.Count) ds.Tables & (0) Rows.Count.ToString) objRango.Select () objRango Columns.AutoFit. () '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / เราบอก Excel ที่จะแสดง '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / MsgBox ("ส่งออกไปยัง Excel Complete" , MsgBoxStyle.Information, ". :: solovb.net ::.") m_Excel.Visible = True End Sub Function ColumnName สาธารณะ (จำนวน ByVal As Integer) As String Dim คอลัมน์ (256) ขณะที่คอลัมน์ String (1) = "" คอลัมน์ (2) = "B" เสาหลัก (3) = "C" คอลัมน์ (4) = "D" เสาหลัก (5) = "E" คอลัมน์ (6) = "F" คอลัมน์ (7) = คอลัมน์ "G" ( 8) = คอลัมน์ "H" (9) = "ฉัน" คอลัมน์ (10) = คอลัมน์ "J" (11) = คอลัมน์ "K" (12) = คอลัมน์ "L" (13) = คอลัมน์ "M" (14) = คอลัมน์ "N" (15) = คอลัมน์ "W" (16) = คอลัมน์ "P" (17) = คอลัมน์ "Q" (18) = "R" คอลัมน์ (19) = คอลัมน์ "S" (20) = " T "คอลัมน์ (21) =" "คอลัมน์ (22) =" U "คอลัมน์ (23) =" V "คอลัมน์ (24) =" W X คอลัมน์ "(25) =" "คอลัมน์ (26) =" Y Z " คอลัมน์ (27) = คอลัมน์ "AA" (28) = คอลัมน์ "AB" (29) = คอลัมน์ "AC" (30) = "AD" คอลัมน์ (31) = คอลัมน์ "AE" (32) = คอลัมน์ "AF" ( 33) = คอลัมน์ "AG" (34) = "AH" คอลัมน์ (35) = "จำนวนคอลัมน์" (36) = คอลัมน์ "AJ" (37) = คอลัมน์ "อลาสกา" (38) = "TO" คอลัมน์ (39) = คอลัมน์ "AM" (40) = คอลัมน์ "NA" (41) = คอลัมน์ "AO" (42) = คอลัมน์ "AP" (43) = คอลัมน์ "AQ" (44) = คอลัมน์ "RA" (45) = " AS "คอลัมน์ (46) =" "คอลัมน์ (47) =" AT "คอลัมน์ (48) =" AU "คอลัมน์ (49) =" AV AW คอลัมน์ "(50) =" "คอลัมน์ (51) =" AX AY " คอลัมน์ (52) = คอลัมน์ "อาริโซน่า" (53) = คอลัมน์ "BA" (54) = คอลัมน์ "บีบี" (55) = คอลัมน์ "BC" (56) = คอลัมน์ "BD" (57) = "พ.ศ. " คอลัมน์ ( 58) = คอลัมน์ "BF" (59) = คอลัมน์ "BG" (60) = คอลัมน์ "BH" (61) = คอลัมน์ "BI" (62) = คอลัมน์ "BJ" (63) = คอลัมน์ "BK" (64) = คอลัมน์ "BL" (65) = คอลัมน์ "BM" (66) = "BN" คอลัมน์ (67) = คอลัมน์ "Bo" (68) = คอลัมน์ "BP" (69) = คอลัมน์ "BQ" (70) = " BR คอลัมน์ "(71) =" "คอลัมน์ (72) =" BS "คอลัมน์ (73) =" BT "คอลัมน์ (74) =" BU "คอลัมน์ (75) =" BV คอลัมน์ "(76) =" BW BX " คอลัมน์ (77) = คอลัมน์ "โดย" (78) = คอลัมน์ "BZ" (79) = คอลัมน์ "CA" (80) = คอลัมน์ "CB" (81) = คอลัมน์ "ซีซี" (82) = คอลัมน์ "ซีดี" ( 83) = คอลัมน์ "CE" (84) = คอลัมน์ "CF" (85) = คอลัมน์ "CG" (86) = คอลัมน์ "CH" (87) = คอลัมน์ "CI" (88) = คอลัมน์ "CJ" (89) = คอลัมน์ "CK" (90) = คอลัมน์ "CL" (91) = "CM" คอลัมน์ (92) = "CN" คอลัมน์ (93) = คอลัมน์ "โคโลราโด" (94) = คอลัมน์ "CP" (95) = " CQ คอลัมน์ "(96) =" "คอลัมน์ (97) =" CR "คอลัมน์ (98) =" CS "คอลัมน์ (99) =" CT "คอลัมน์ (100) =" CU คอลัมน์ "(101) =" CV CW " คอลัมน์ (102) = คอลัมน์ "CX" (103) = คอลัมน์ "CY" (104) = คอลัมน์ "CZ" (105) = คอลัมน์ "DA" (106) = คอลัมน์ "DB" (107) = คอลัมน์ "ซี" ( 108) = คอลัมน์ "DD" (109) = "DE" คอลัมน์ (110) = คอลัมน์ "DF" (111) = คอลัมน์ "DG" (112) = คอลัมน์ "DH" (113) = คอลัมน์ "ID" (114) = คอลัมน์ "ดีเจ" (115) = คอลัมน์ "DK" (116) = คอลัมน์ "DL" (117) = คอลัมน์ "DM" (118) = คอลัมน์ "DN" (119) = คอลัมน์ "ทำ" (120) = " DP คอลัมน์ "(121) =" "คอลัมน์ (122) =" DQ "คอลัมน์ (123) =" DR "คอลัมน์ (124) =" DS "คอลัมน์ (125) =" DT "คอลัมน์ (126) =" DU DV " คอลัมน์ (127) = คอลัมน์ "DW" (128) = คอลัมน์ "DX" (129) = คอลัมน์ "DY" (130) = คอลัมน์ "DZ" (131) = คอลัมน์ "EA" (132) = คอลัมน์ "EB" ( 133) = คอลัมน์ "EC" (134) = คอลัมน์ "ED" (135) = คอลัมน์ "EE" (136) = คอลัมน์ "EF" (137) = "EG" คอลัมน์ (138) = "EH" คอลัมน์ (139) = คอลัมน์ "EI" (140) = คอลัมน์ "EJ" (141) = คอลัมน์ "EK" (142) = คอลัมน์ "EL" (143) = คอลัมน์ "MS" (144) = คอลัมน์ "IN" (145) = " EO คอลัมน์ "(146) =" "คอลัมน์ (147) =" EP "คอลัมน์ (148) =" EQ "คอลัมน์ (149) =" ER "คอลัมน์ (150) =" ES ET คอลัมน์ "(151) =" อียู " คอลัมน์ (152) = คอลัมน์ "EV" (153) = คอลัมน์ "EW" (154) = คอลัมน์ "EX" (155) = คอลัมน์ "EY" (156) = คอลัมน์ "EZ" (157) = คอลัมน์ "เอฟเอ" ( 158) = คอลัมน์ "FB" (159) = คอลัมน์ "FC" (160) = คอลัมน์ "FD" (161) = คอลัมน์ "เฟ" (162) = คอลัมน์ "FF" (163) = คอลัมน์ "FG" (164) = คอลัมน์ "FH" (165) = คอลัมน์ "ไฟ" (166) = "FJ คอลัมน์" (167) = คอลัมน์ "FK" (168) = คอลัมน์ "ฟลอริด้า" (169) = คอลัมน์ "เอฟเอ็ม" (170) = " FN "คอลัมน์ (171) =" "คอลัมน์ (172) =" FO "คอลัมน์ (173) =" FP "คอลัมน์ (174) =" CF "คอลัมน์ (175) =" FR "คอลัมน์ (176) =" FS FT " คอลัมน์ (177) = คอลัมน์ "FU" (178) = คอลัมน์ "FV" (179) = คอลัมน์ "FW" (180) = คอลัมน์ "FX" (181) = คอลัมน์ "ปีงบประมาณ" (182) = คอลัมน์ "FZ" ( 183) = คอลัมน์ "GA" (184) = คอลัมน์ "GB" (185) = คอลัมน์ "GC" (186) = คอลัมน์ "GD" (187) = คอลัมน์ "GE" (188) = คอลัมน์ "GF" (189) = คอลัมน์ "GG" (190) = คอลัมน์ "GH" (191) = คอลัมน์ "GI" (192) = คอลัมน์ "GJ" (193) = คอลัมน์ "GK" (194) = คอลัมน์ "GL" (195) = " จีเอ็ม "คอลัมน์ (196) =" "คอลัมน์ (197) =" GN "คอลัมน์ (198) =" GO "คอลัมน์ (199) =" GP "คอลัมน์ (200) =" GQ "คอลัมน์ (201) =" GR GS " คอลัมน์ (202) = คอลัมน์ "GT" (203) = คอลัมน์ "GU" (204) = คอลัมน์ "GV" (205) = คอลัมน์ "GW" (206) = คอลัมน์ "GX" (207) = คอลัมน์ "GY" ( 208) = "GZ" คอลัมน์ (209) = คอลัมน์ "HA" (210) = คอลัมน์ "HB" (211) = คอลัมน์ "HC" (212) = คอลัมน์ "HD" (213) = "ฯพณฯ " คอลัมน์ (214) = คอลัมน์ "HF" (215) = คอลัมน์ "HG" (216) = คอลัมน์ "HH" (217) = คอลัมน์ "HI" (218) = คอลัมน์ "ฮยอนจุง" (219) = คอลัมน์ "HK" (220) = " HL คอลัมน์ "(221) =" "คอลัมน์ (222) =" HM "คอลัมน์ (223) =" HN "คอลัมน์ (224) =" HO "คอลัมน์ (225) =" เอชพี "คอลัมน์ (226) =" HQ HR " คอลัมน์ (227) = คอลัมน์ "HS" (228) = คอลัมน์ "HT" (229) = คอลัมน์ "HU" (230) = คอลัมน์ "HV" (231) = คอลัมน์ "HW" (232) = คอลัมน์ "H" ( 233) = คอลัมน์ "HY" (234) = คอลัมน์ "HZ" (235) = คอลัมน์ "IA" (236) = คอลัมน์ "IB" (237) = คอลัมน์ "IC" (238) = คอลัมน์ "ID" (239) = คอลัมน์ "IE" (240) = "IF" คอลัมน์ (241) = คอลัมน์ "IG" (242) = คอลัมน์ "IH" (243) = คอลัมน์ "II" (244) = คอลัมน์ "IJ" (245) = " IK คอลัมน์ "(246) =" "คอลัมน์ (247) =" อิลลินอยส์คอลัมน์ "(248) =" IM "คอลัมน์ (249) =" ในคอลัมน์ "(250) =" IO "คอลัมน์ (251) =" IP IQ " คอลัมน์ (252) = "R" คอลัมน์ (253) = "ที่เป็น" คอลัมน์ (254) = "ไอที" คอลัมน์ (255) End Function = คอลัมน์ "UI" (256) = คอลัมน์ "IV" ย้อนกลับ (จำนวน) ระดับ End 

วิธีการนี​​้จะมีหน้าที่ฉันดีและฉันหวังว่าคุณจะทำมากเกินไป ... โปรดออกความคิดเห็นของคุณ

32 Responses to "โดยอัตโนมัติการส่งออก DataTable ไปยัง Microsoft Excel"

  1. Bitacoras.com ข้อมูล ...

    อัตราใน Bitacoras.com: Hi, วันนี้ฉันต้องการที่จะแสดงตัวอย่างที่มีหน้าที่ฉันเป็นเวลานานและยังฉันยังคงใช้มัน เราจะทำให้เป็นตัวอย่างในการส่งออก DataTable ไปยัง Excel เต็มโดยไม่คำนึงถึงจำนวนของคอลัมน์หรือแถวที่เต็ง .....

    • คาร์ลอลีนาเรสพูดว่า:

      ดี ...

      โพสต์ดีเลิศ! ขอบคุณที่ช่วยให้ฉันเต็ม แต่ผมมีข้อสงสัย .. ในฐานะที่เป็นลิงค์อยู่กับ SQL .. ฉันจะเปลี่ยนชื่อคอลัมน์วิธี! เพราะมันจะทำให้ชื่อของเขตข้อมูลของ SQL .. !

      และฉันหวังว่าฉันได้เข้าใจ ..

      ขอขอบคุณ!

  2. Denko says:

    ฉันจะบันทึก ...
    ในบางจุดก็จะเป็นประโยชน์ ...

  3. วิกเตอร์พูดว่า:

    มันถูกต้องสำหรับ Excel 2007? ฉันมีปัญหากับการส่งออกในการพัฒนาว่ามันถูกต้องสำหรับรุ่นก่อนหน้านี้ แต่ไม่สำหรับ 2007 ขอบคุณ

  4. จอห์น says:

    รหัสที่มาอันยิ่งใหญ่ หน้าที่ฉันดี q มันเป็นหนี้ที่ค้างชำระนาน

  5. จอห์น says:

    แม้ว่ายังต้องนำเข้าจาก ecxel ตารางข้อมูล แต่อาจจะเป็นสิ่งแวดล้อมเพื่อ DataGrid และจากนั้นการปรับปรุง DataAdapter และยอมรับการเปลี่ยนแปลงใน DataTable จะถูกบันทึกไว้ใน q BD ... ฉันหวังว่าฉันสามารถช่วยหรือหา .. ขอบคุณ

  6. jose says:

    สวัสดีขอบคุณมาก! ที่ยอดเยี่ยมนี้!
    แต่ผมแปลกใจที่ใน datagrid ระบุว่าใช้ในกรณีที่มีหลาย Datagrid?

    • คาร์ลอลีนาเรสพูดว่า:

      เกี่ยวกับตารางที่คุณกำลังเรียกร้อง ...

      * เลือกจาก (ชื่อตาราง)

      ถ้าคุณต้องการระบุเขตข้อมูลที่คุณต้องการ

      เลือก (เขต, เขต, เขต) * จากตาราง
      ejm
      เลือกรถสีปีจากรถ

  7. Beto กล่าวว่า

    ฉันมีปัญหากับตัวอย่างนี้ผมทำ 2 ข้อผิดพลาดในตัวแปร DC และดรผมสามารถทำได้เพื่อแก้ไขมันได้หรือไม่

    • เอลีชา says:

      สวัสดีครับลองนี้:
      สำหรับแต่ละ Dr ในฐานะที่เป็น DataRow ใน ds.Tables (0). แถวและ DataColumn สำหรับ DC ในแต่ละ ds.Tables เป็น (0) คอลัมน์.

      ฉันหวังว่านี้ได้รับการแก้ไข อาศิรพจน์

  8. เจสันพูดว่า:

    Hola
    Chevere นี้ แต่ส่วนหนึ่งของชื่อคอลัมน์ไม่ได้เป็นทำงานมาก
    ฉันจะอัปโหลดไปยังบล็อกของฉันมีข้อ จำกัด มากน้อยขนาดรหัสและไม่มี

    jaysson.blogspot.com

  9. เจสันพูดว่า:

    พร้อมและก็ขึ้นไปที่บทความ

    http://jaysson.blogspot.com/2010/06/columnas-es-excel.html

  10. โรดริโก says:

    บทความดี แต่ฉันมีปัญหาที่เกิดขึ้นบนคอมพิวเตอร์ของฉันกับ Excel 2007 ผลงานได้อย่างราบรื่น แต่ด้วยเครื่องคอมพิวเตอร์ที่มี Excel 2003 หรือก่อนหน้านี้ไม่ทำงาน อยากทราบว่าปัญหาของห้องสมุดที่มีการนำเข้าเนื่องจากคุณหมายความว่าการทำงานสำหรับ excel ใด ๆ แต่ฉันได้พบปัญหานี้

    ลองดูถ้ามีคนจะสามารถแก้ข้อสงสัย
    ขอบคุณ

  11. คาร์ลอลีนาเรสพูดว่า:

    ดี ...

    โพสต์ดีเลิศ! ขอบคุณที่ช่วยให้ฉันเต็ม แต่ผมมีข้อสงสัย .. ในฐานะที่เป็นลิงค์อยู่กับ SQL .. ฉันจะเปลี่ยนชื่อคอลัมน์วิธี! เพราะมันจะทำให้ชื่อของเขตข้อมูลของ SQL .. !

    และฉันหวังว่าฉันได้เข้าใจ ..

    ขอขอบคุณ!

  12. อเล็กซานเด says:

    Public Sub ExportarDatosExcel (ByVal DataGridView1 เป็น DataGridView ชื่อ ByVal, As String)
    ในฐานะที่เป็น Excel.Application มซำใหม่ m_Excel
    m_Excel.Cursor = Excel.XlMousePointer.xlWait
    m_Excel.Visible = True
    ในฐานะที่เป็น Excel.Workbook มซำ objLibroExcel = m_Excel.Workbooks.Add
    ในฐานะที่เป็น Excel.Worksheet มซำ objHojaExcel = objLibroExcel.Worksheets (1)
    ด้วย objHojaExcel
    . เห็น = Excel.XlSheetVisibility.xlSheetVisible
    เปิดใช้งาน. ()
    ส่วนหัว '
    Range ("A1: L1").. ผสาน ()
    Range ("A1: L1"). Value = "สถาบัน ARGENCAF".
    Range ("A1: L1").. Font.Bold = True
    Range ("A1: L1").. Font.Size = 15
    'ปอย
    Range ("A2: L2").. ผสาน ()
    Range ("A2: L2").. คุ้มค่า title =
    Range ("A2: L2").. Font.Bold = True
    Range ("A2: L2").. Font.Size = 12

    Const primeraLetra เป็น Char = ""
    firstNumber Const สั้น = 3
    จดหมายมซำเป็น Char, Char เป็น UltimaLetra
    จำนวนมซำเป็นจำนวนเต็ม UltimoNumero As Integer
    มซำเป็น Byte = Asc cod_letra (primeraLetra) - 1
    มซำ As String = Application.CurrentCulture.NumberFormat.NumberDecimalSeparator sepDec
    มซำ As String = Application.CurrentCulture.NumberFormat.NumberGroupSeparator sepMil
    รูปแบบชุดของคอลัมน์ของลูกสาวของการคำนวณ
    StrColumna มซำ As String = ""
    LetraIzq มซำ As String = ""
    มซำเป็น Byte = Asc cod_LetraIzq (primeraLetra) - 1
    จดหมาย primeraLetra =
    จำนวน firstNumber =
    ในฐานะที่เป็น Excel.Range มซำ objCelda
    สำหรับ C แต่ละ DataGridViewColumn ใน DataGridView1.Columns
    แล้วถ้า c.Visible
    ถ้าจดหมาย = "Z" จากนั้น
    จดหมาย primeraLetra =
    cod_letra = Asc (primeraLetra)
    cod_LetraIzq + = 1
    LetraIzq = Chr (cod_LetraIzq)
    อื่น
    cod_letra + = 1
    จดหมาย = Chr (cod_letra)
    End If
    strColumna = LetraIzq + + เพลง Numero.ToString
    ช่วง objCelda =. (strColumna, Type.Missing)
    objCelda.Value = c.HeaderText
    objCelda.EntireColumn.Font.Size = 8
    'ObjCelda.EntireColumn.NumberFormat = c.DefaultCellStyle.Format
    หาก c.ValueType เป็น GetType (ทศนิยม) OrElse c.ValueType เป็น GetType (เตียงคู่) จากนั้น
    objCelda.EntireColumn.NumberFormat = "#" + + sepMil "0" + + sepDec "00"
    End If
    End If
    ต่อไป

    ในฐานะที่เป็น Excel.Range มซำ objRangoEncab = กลาง. (primeraLetra + Numero.ToString, LetraIzq เพลง + Numero.ToString +)
    objRangoEncab.BorderAround (1, Excel.XlBorderWeight.xlMedium)
    ส่ง UltimaLetra =
    มซำ As String = LetraIzq UltimaLetraIzq

    'โหลดข้อมูล
    Dim i As Integer = จำนวน + 1

    สำหรับแต่ละรายการในขณะที่ DataGridViewRow DataGridView1.Rows
    LetraIzq = ""
    cod_LetraIzq = Asc (primeraLetra) - 1
    จดหมาย primeraLetra =
    cod_letra = Asc (primeraLetra) - 1
    สำหรับ C แต่ละ DataGridViewColumn ใน DataGridView1.Columns
    แล้วถ้า c.Visible
    ถ้าจดหมาย = "Z" จากนั้น
    จดหมาย primeraLetra =
    cod_letra = Asc (primeraLetra)
    cod_LetraIzq + = 1
    LetraIzq = Chr (cod_LetraIzq)
    อื่น
    cod_letra + = 1
    จดหมาย = Chr (cod_letra)
    End If
    strColumna = LetraIzq เพลง +
    "ที่นี่ควรจะเป็นภาระ
    เซลล์. (i, strColumna) = IIf (IsDBNull (reg.ToString), "", reg.Cells (c.Index) มูลค่า.)
    '. Cells (i, strColumna) = IIf (IsDBNull (reg. (c.DataPropertyName)), c.DefaultCellStyle.NullValue, reg (c.DataPropertyName))
    'ช่วง. (strColumna + i, strColumna + i). ใน ()

    End If
    ต่อไป
    ในฐานะที่เป็น Excel.Range มซำ objRangoReg = กลาง. (primeraLetra + i.ToString, i.ToString strColumna +)
    objRangoReg.Rows.BorderAround ()
    objRangoReg.Select ()
    ฉัน + = 1
    ต่อไป
    ฉัน UltimoNumero =

    "เส้นวาดของคอลัมน์
    LetraIzq = ""
    cod_LetraIzq = Asc ("")
    cod_letra = Asc (primeraLetra)
    จดหมาย primeraLetra =
    สำหรับ C แต่ละ DataGridViewColumn ใน DataGridView1.Columns
    แล้วถ้า c.Visible
    ช่วง objCelda =. (LetraIzq + + เพลง primerNumero.ToString, LetraIzq เนื้อเพลง + + (UltimoNumero - ToString 1).)
    objCelda.BorderAround ()
    ถ้าจดหมาย = "Z" จากนั้น
    จดหมาย primeraLetra =
    cod_letra = Asc (primeraLetra)
    LetraIzq = Chr (cod_LetraIzq)
    cod_LetraIzq + = 1
    อื่น
    cod_letra + = 1
    จดหมาย = Chr (cod_letra)
    End If
    End If
    ต่อไป

    'วาดเส้นขอบด้านนอกหนา
    ในฐานะที่เป็น Excel.Range มซำ objRango = กลาง. (primeraLetra + primerNumero.ToString, UltimaLetra UltimaLetraIzq + + (UltimoNumero - ToString 1).)
    objRango.Select ()
    objRango.Columns.AutoFit ()
    objRango.Columns.BorderAround (1, Excel.XlBorderWeight.xlMedium)
    End With

    m_Excel.Cursor = Excel.XlMousePointer.xlDefault
    ย่อยสิ้นสุด

    ToolStripButton2_Click_1 ตำบลเอกชน (ผู้ส่ง ByVal เป็น System.Object, ByVal e เป็น System.EventArgs) จัดการ ToolStripButton2.Click
    ExportarDatosExcel (DataGridView1, "ส่งออก")
    ย่อยสิ้นสุด

  13. JuanPeople says:

    EXCELLENT! .... พี่ชายขอบคุณและเอา 3 วันกับโมดูลสำหรับการนำเข้า / ส่งออก Excel และไม่มีอะไรที่ทำงาน .... แต่มีวิธีการแก้ปัญหาของคุณผมเห็นอีกครั้ง ... ทักทายดาวจาก Arequipa: ..

  14. TECKNOCK says:

    รหัสนี้ช่วยให้ฉันมากดังนั้นฉันทำงานร่วมกับสองเซ็นต์ของฉัน:

    มี "ColumnName" ที่จะมาถึงคอลัมน์ ahsta ZZ ที่สุด (702 et al.)

    ที่นี่ผมให้คุณรหัส:

    ColumnName ฟังก์ชันสาธารณะ (จำนวน ByVal As Integer) As String
    คอลัมน์มซำ (703) As String

    คอลัมน์ (1) = ""
    คอลัมน์ (2) = "B"
    คอลัมน์ (3) = "C"
    คอลัมน์ (4) = "D"
    คอลัมน์ (5) = "E"
    คอลัมน์ (6) = "F"
    คอลัมน์ (7) = "G"
    คอลัมน์ (8) = "H"
    คอลัมน์ (9) = "I"
    คอลัมน์ (10) = "J"
    คอลัมน์ (11) = "K"
    คอลัมน์ (12) = "L"
    คอลัมน์ (13) = "M"
    คอลัมน์ (14) = "N"
    คอลัมน์ (15) = "O"
    คอลัมน์ (16) = "P"
    คอลัมน์ (17) = "Q"
    คอลัมน์ (18) = "อาร์"
    คอลัมน์ (19) = "S"
    คอลัมน์ (20) = "T"
    คอลัมน์ (21) = "U"
    คอลัมน์ (22) = "V"
    คอลัมน์ (23) = "W"
    คอลัมน์ (24) = "X"
    คอลัมน์ (25) = "Y"
    คอลัมน์ (26) = "Z"

    Dim i = 27
    สำหรับ Ltr1 = 1 ถึง 26
    สำหรับ Ltr2 = 1 ถึง 26
    คอลัมน์ (i) คอลัมน์ = (Ltr1) & คอลัมน์ (Ltr2)
    ฉัน + = 1
    ต่อไป
    ต่อไป

    คอลัมน์ย้อนกลับ (จำนวน)
    ฟังก์ชั่นเอนด์

    • เอลีชา says:

      TECKNOCK, ขอบคุณมากสำหรับความช่วยเหลือ! แต่จำไว้ว่าถ้าหนังสือที่เราสร้างเข้ากันได้กับ Excel 97-2003 คอลัมน์สูงสุดที่อนุญาตคือ 256 (ที่ IV) เช่นเดียวกับความเห็นที่จะใช้เวลานี้ในบัญชี

      เอลีชา

  15. raysip says:

    เมื่อฉันทำงานของโปรแกรมประยุกต์ funcioana ท้องถิ่นได้อย่างถูกต้อง แต่เมื่อฉันอัปโหลดไว้ในเว็บไซต์ไม่ได้สร้าง Excel แต่ไม่ได้รับข้อผิดพลาด

  16. Aderson says:

    ฉันกำลังมองหา haciend สายดินเพื่อฉัน SQL

    ไม่ชอบที่ฉันทำ แต่ฉันจะทำ AJA

  17. พอลพูดว่า:

    ฉันต้องการความช่วยเหลือพยายามที่จะทำมันในแบบที่คุณอยู่ที่นี่ทุกวันและฉันได้รับข้อผิดพลาดทั้งหมด

  18. จอห์น says:

    มือคุณสูงสุด funca ที่สมบูรณ์แบบ

  19. Neji says:

    ที่ดีมากขอแสดงความยินดีที่ในการโพสต์ที่ดีที่สุดที่ฉันได้อ่านและได้รับการพิจารณา

  20. แพทริเซี says:

    ขอขอบคุณ! มันเป็นประโยชน์มาก

  21. f.delgado says:

    เฮ้รหัสไม่ได้อยู่ที่ผมจะทำเครื่องหมายข้อผิดพลาด d​​a.Fill (ds)

    ฉันทำเครื่องหมายข้อผิดพลาดไม่พบ SqlException

    คุณสามารถช่วยฉัน

  22. JAV says:

    คำถามหนึ่งที่สามารถทำให้การโหลดแบบสอบถามโดยตรง SQL ไปยัง Excel?

    ก่อนผ่าน

  23. Delfino โมราเลสพูดว่า:

    สวัสดีเพื่อนคนแรกของทั้งหมดที่คุณ agradesco ผลงานของคุณ
    โปรดทราบว่าฉันมีปัญหาฉันไม่สามารถหาข้อมูลอ้างอิงที่คุณระบุผมได้ติดตั้ง Office 2010 และที่ไม่สามารถเป็นปัญหาของฉัน
    agradeseria แนะนำให้คุณบาง

  24. อเมริกา says:

    สวัสดีผลงานที่ดีมากคือสิ่งที่ผมต้องการ ... แต่เมื่อฉันเรียกใช้จากเซิร์ฟเวอร์การพัฒนาทำงานที่สมบูรณ์แบบ แต่เมื่อฉันเข้าเว็บจากเครื่องอื่นไม่ทำอะไรเลย ... ไม่มีข้อผิดพลาด แต่ไม่ได้ทำอะไรเลยบันทึก ...

    ใครรู้วิธีการแก้ไขหรือไม่

  25. Azofeifa Hernan says:

    ขอบคุณมากช่วยให้ฉันตัวอย่างของคุณเป็นพื้นฐานสำหรับการสร้างฟังก์ชั่นที่สร้างมา แต่ไฟล์ Excel โดยตรงจากค่าที่เก็บไว้ในตารางคือสิ่งที่กรณี dejor จะเป็นประโยชน์สำหรับใครบางคน

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / เราตั้งสายที่มีหัวคอลัมน์
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    objHojaExcel.Range ("A1"). เลือก ()
    มซำฉัน As Integer = 0
    Lncol มซำเป็น Integer = 1
    สำหรับ DC ในแต่ละ dgvSocios.Columns

    หาก dgvSocios.Columns.Item (I). เห็น = True แล้ว
    คุ้มค่า objHojaExcel.Range (ColumnName (lncol) & 1). = dgvSocios.Columns.Item (I). HeaderText
    lncol + = 1
    End If
    ฉัน + = 1
    ต่อไป
    แถว + = 1

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / เราจัดรูปแบบชื่อแถว
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    ในฐานะที่เป็น Excel.Range มซำ objRango = objHojaExcel.Range ("A1:" & ColumnName (lncol) & "1")
    ทรู objRango.Font.Bold =
    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

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / โหลดแถวทั้งหมดใน DataTable
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    ProgressBar1.Maximum = dgvSocios.Rows.Count
    คอลัมน์ = 0
    ProgressBar1.Value = 0
    ProgressBar1.Visible = True
    Lnfila มซำเป็น Integer = 0
    i = 1
    สำหรับแต่ละ Dr ใน dgvSocios.Rows
    คอลัมน์ = 0

    สำหรับ DC ในแต่ละ dgvSocios.Columns
    หาก dgvSocios.Columns.Item (คอลัมน์). เห็น = True แล้ว
    objHojaExcel.Range (ColumnName (I) และแถว) คุ้มค่า. = Value.ToString dgvSocios.Item (คอลัมน์ lnfila).
    ฉัน + = 1
    End If
    คอลัมน์ + = 1
    ต่อไป
    lnfila + = 1
    แถว + = 1
    ProgressBar1.Value + = 1
    ต่อไป

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / เราปรับความกว้างโดยอัตโนมัติ
    '/ / จากคอลัมน์ทั้งหมดที่ใช้
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    objRango = objHojaExcel.Range ("A1:" & ColumnName (lncol) & (lnfila + 1) ToString.)
    objRango.Select ()
    objRango.Columns.AutoFit ()

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / เราบอก Excel ที่จะแสดง
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    MsgBox ("ส่งออกไปยัง Excel Complete", MsgBoxStyle.Information, ". :: Solovb.net ::.")
    m_Excel.Visible = True

  26. Pako says:

    นำบิตสำหรับฟังก์ชั่นนี้, รหัสต่อไปนี้จะช่วยป้องกันการใช้งานของ "ช่วง" การที่ไม่ต้องฟังก์ชั่น "ColumnName"

    ขอแสดงความนับถือ

    System.Data Imports
    System.Data.SqlClient นำเข้า
    Microsoft.Office.Interop.Excel นำเข้า
    mutil โมดูลสาธารณะ
    Public Sub ExportarDtToExcel (ByVal Dt เป็น System.Data.DataTable, ชื่อ ByVal As String)
    ในฐานะที่เป็น Excel.Application มซำ m_Excel
    ในฐานะที่เป็น Excel.Workbook มซำ objLibroExcel
    ในฐานะที่เป็นแผ่นมซำ objHojaExcel
    ลอง
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / สร้างวัตถุ Excel
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    m_Excel = CreateObject ("Excel.Application")
    m_Excel.Workbooks.Add objLibroExcel = ()
    objHojaExcel = objLibroExcel.Worksheets (1)
    หัวข้อ objHojaExcel.Name =
    objHojaExcel.Visible = Excel.XlSheetVisibility.xlSheetVisible
    objHojaExcel.Activate ()

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / กำหนดตัวแปรทั้งสองในการควบคุมของแถวและคอลัมน์
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    แถวมซำเป็น Integer = 1
    คอลัมน์ Dim As Integer = 1

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / เราตั้งสายที่มีหัวคอลัมน์
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    'ObjHojaExcel.Range ("A1"). เลือก ()

    objHojaExcel.Cells (แถวคอลัมน์). เลือก ()
    สำหรับ DC ในแต่ละ Dt.Columns
    objHojaExcel.Cells (แถวคอลัมน์) มูลค่า. = dc.ColumnName
    คอลัมน์ + = 1
    ต่อไป
    แถว + = 1

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / เราจัดรูปแบบชื่อแถว
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    ในฐานะที่เป็น Excel.Range = สลัว objRango objHojaExcel.Range (objHojaExcel.Cells (1, 1), objHojaExcel.Cells (1, Dt.Columns.Count))
    ทรู objRango.Font.Bold =
    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

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / โหลดแถวทั้งหมดใน DataTable
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /

    คอลัมน์ = 1

    สำหรับแต่ละ Dr ใน Dt.Rows
    คอลัมน์ = 1
    สำหรับ DC ในแต่ละ Dt.Columns
    objHojaExcel.Cells (แถวคอลัมน์) มูลค่า. = Dr (dc.ColumnName)
    คอลัมน์ + = 1
    ต่อไป
    แถว + = 1

    ต่อไป

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / เราปรับความกว้างโดยอัตโนมัติ
    '/ / จากคอลัมน์ทั้งหมดที่ใช้
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    objHojaExcel.Cells objRango = (1, Dt.Columns.Count)
    objRango.Select ()
    objRango.Columns.AutoFit ()

    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    '/ / เราบอก Excel ที่จะแสดง
    '/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
    MsgBox ("ส่งออกไปยัง Excel Complete" MsgBoxStyle.Information, "ส่งออก")
    m_Excel.Visible = True

    จับอดีตเป็นข้อยกเว้น

    MsgBox (ex.ToString)

    ในที่สุด

    ไม่มีอะไร objHojaExcel =
    ไม่มีอะไร objLibroExcel =
    ไม่มีอะไร m_Excel =

    สิ้นสุดลอง
    ย่อยสิ้นสุด

    โมดูล End

ความเห็น