Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > ทำยังให้เอา Header ใน DataGridview มาใส่ใน Excel ได้ครับ งง ไปหมดแล้ว แก้จนปวดหัว!!!



 

ทำยังให้เอา Header ใน DataGridview มาใส่ใน Excel ได้ครับ งง ไปหมดแล้ว แก้จนปวดหัว!!!

 



Topic : 059182



โพสกระทู้ ( 73 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook



ภาพเติม 2


ดูโค๊ดผมคับ

Code (VB.NET)
Imports System.Data
Imports System.Data.OleDb
Imports System.IO
Imports System.Data.SqlClient
Imports Excel = Microsoft.Office.Interop.Excel


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim xlApp As Excel.Application
        Dim xlWorkBook As Excel.Workbook
        Dim xlWorkSheet As Excel.Worksheet
        Dim misValue As Object = System.Reflection.Missing.Value
        Dim i As Integer
        Dim j As Integer


        xlApp = New Excel.Application
        xlWorkBook = xlApp.Workbooks.Add(misValue)
        xlWorkSheet = xlWorkBook.Sheets("sheet1")
For i = 0 To DataGridView.RowCount - 2
            For j = 0 To DataGridView.ColumnCount - 1
                xlWorkSheet.Cells(i + 1, j + 1) = _
                    DataGridView(j, i).Value.ToString()
            Next
        Next

        Dim ExcelName As String     'ตั้งชื่อให้ file excel
        ExcelName = txtExcelName.Text

        xlWorkSheet.SaveAs("D:\file vb excel\" & ExcelName & ".xlsx")
        xlWorkBook.Close()
        xlApp.Quit()

        releaseObject(xlApp)
        releaseObject(xlWorkBook)
        releaseObject(xlWorkSheet)

        MsgBox("You can find the file D:\file vb excel\" & ExcelName & ".xlsx")
    End Sub

    Private Sub releaseObject(ByVal obj As Object)
        Try
            System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
            obj = Nothing
        Catch ex As Exception
            obj = Nothing
        Finally
            GC.Collect()
        End Try
    End Sub


ช่วยผมหน่อยนะคับ..



Tag : .NET, Ms Access, Excel (Excel.Application), VS 2010 (.NET 4.x)







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2011-04-25 21:45:39 By : termja View : 2771 Reply : 15
 

 

No. 1



โพสกระทู้ ( 362 )
บทความ ( 0 )



สถานะออฟไลน์


ดูแล้วงงๆ เอา Name ของ คอลัมdatagrid มา .HeaderText เช่น gv_Rcode.HeaderText , gv_Rname.HeaderText
ของคุณตั้งเป็นอะไรผมไม่รู้อะเอามาใส่เองดูนะ

จากที่ดู อันนี้น่าจะเป็นเอาข้อมูล datagrid ไปใส่ใน workshhet

Code (VB.NET)
xlWorkSheet.Cells(i + 1, j + 1) = _
DataGridView(j, i).Value.ToString()



งั้นผมคิดว่าน่าจะเป็นงี้
Code (VB.NET)
xlWorkSheet.Cells(0, 0) = gv_Rcode.HeaderText.ToString()
 xlWorkSheet.Cells(0, 1) = gv_Rname.HeaderText.ToString()
 xlWorkSheet.Cells(0, 2) = gv_report.HeaderText.ToString()

ไม่รู้ว่า i เป็นแถวหรือ j เป็นแถวสลับดูแล้วกันครับ








ประวัติการแก้ไข
2011-04-26 02:05:13
2011-04-26 02:05:19
2011-04-26 02:06:46
2011-04-26 02:06:50
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-04-26 02:04:42 By : hamzter
 


 

No. 2



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

บทความเพิ่มเติมเกี่ยวกับ Excel ครับ

.NET Excel.Application
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-04-26 09:05:37 By : webmaster
 

 

No. 3



โพสกระทู้ ( 73 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

สวนนี้ผมเพิ่มเข้าไปคับ

Code (VB.NET)
With xlApp.ActiveSheet.Cells(1, 1) 'ส่วนนี้คือช่องแรกช่องเด๋วน่ะคับ คือ A1
            .Value = "Report Code"
            .Font.Bold = True
            .VerticalAlignment = -4108
            .HorizontalAlignment = -4108
            .BORDERS.Weight = 1
        End With


แล้วมาเปลี่ยนโค้ดตัวนี้
Code (VB.NET)
 For i = 1 To DataGridView.RowCount - 2 '<<< ผมแก้ i=0 เป็น i=1 เพื่อต้องการให้มันขึ้นบรรทัดที่ 2 ใน excel
            For j = 0 To DataGridView.ColumnCount - 1
                xlWorkSheet.Cells(i + 1, j + 1) = _
                    DataGridView(j, i).Value.ToString()
            Next
        Next


ปัญหามันยุตรงนี้คับ

ภาพเติม 3

คือผมอยากให้มันเริ่มตั้งแต่ บรรทัดที่ 2 คับ..เพราะ บรรทัดแรกจะใส่ header ลงไป ช่วยผมทีน่ะคับ
ไม่ทราบว่าจะพอเข้าใจในคำถามรึเปล่าน่ะคับ..ก้ ช่วย ๆ ผมทีเถอะครับ งง...คับ


ประวัติการแก้ไข
2011-04-26 09:19:52
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-04-26 09:09:47 By : termja
 


 

No. 4



โพสกระทู้ ( 47 )
บทความ ( 0 )



สถานะออฟไลน์


เช่นกันครับ ผมขอแนะนำตัวนี้ครับ ใช้ดี ใช้ฟรี

http://www.codeproject.com/KB/aspnet/ExportClassLibrary.aspx
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-04-26 09:53:31 By : mi16
 


 

No. 5



โพสกระทู้ ( 73 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

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

คุณ hamster ตามตัวอย่างที่ให้ผมมา คือ gv_Rcode อันนนี้คุณ สมมุติว่ามันคือ ชื่อ feild หรอคับ..ผมลองแร้ว มันไม่ได้ คับ

พี่วิน ขอบคุณมากคับ สำหรับ link แต่ ดู แร้ว ผมก้ยังเอามา ใช้ไม่ได้ อ่าคับ...

ขอรบกวนพี่ ๆ ที่มีประสบการณ์ช่วยผมทีน่ะคับ..ตอนนี้ งง ม๊าาก คับ

รึว่า..ถ้ายังไง พอจะมีวิธีที่จะให้มัน เขียนลงไปใน excel เริ่มตั้งแต่ cell ที่ 2 ได้มั้ยคับ cell ที่ 1 เว้นไว้ใส่ header ฝากด้วยน่ะคับพี่ ๆ ทุกคน


ประวัติการแก้ไข
2011-04-26 10:58:59
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-04-26 10:57:23 By : termja
 


 

No. 6



โพสกระทู้ ( 73 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ช่วยผมด้วยคร๊าาฟ ทำไม่ได้ จริง ๆ ๆ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-04-26 14:03:30 By : termja
 


 

No. 7



โพสกระทู้ ( 73 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ตอนนี้ทำไม่ได้ คับ..พี่ ๆ คนไหน มีความคิดที่จะ export วิธีอื่นมั้งมั้ยคับ..คือผมตอนนี้ VS2010 มันเป็น crystal report ไม่ได้ คับ

จะออกเป็นตัวไหน ดีที่มันจะมี ข้อมูลครบตามเราต้องการคับ..ถามพี่ ๆผู้มีประสบการณ์มากกว่าผม
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-04-26 14:56:30 By : termja
 


 

No. 8

Guest


ลองแก้ตัวนี้ดูนะครับ


For i = 0 To DataGridView.RowCount - 2

For j = 0 To DataGridView.ColumnCount - 1

xlWorkSheet.Cells(i + 1, j + 1) = _

DataGridView(j, i).Value.ToString()

Next

Next

เป็นแบบนี้ครับ

For i = 1 To DataGridView.RowCount - 2

For j = 0 To DataGridView.ColumnCount - 1

xlWorkSheet.Cells(i + 1, j + 1) = _

DataGridView(j, i).Value.ToString()

Next

Next

ลองดูครับ น่าจาช่วยได้
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-04-26 15:11:17 By : Aut_KuOn
 


 

No. 9

Guest


ขอโทษที แก้ผิดที่

For i = 0 To DataGridView.RowCount - 2
For j = 0 To DataGridView.ColumnCount - 1

xlWorkSheet.Cells(i + 1, j + 1) = _

DataGridView(j, i).Value.ToString()

Next

Next

เป็นแบบนี้ครับ

For i = 1 To DataGridView.RowCount - 1

For j = 0 To DataGridView.ColumnCount - 1

xlWorkSheet.Cells(i + 1, j + 1) = _

DataGridView(j, i).Value.ToString()

Next

Next

ลองดูครับ น่าจาช่วยได้
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-04-26 15:18:09 By : Aut_KuOn
 


 

No. 10



โพสกระทู้ ( 73 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

อ๊อ...ไม่ได้ คับ

มันขึ้น
กกกก
คับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-04-26 15:45:26 By : termja
 


 

No. 11

Guest


ตัวอย่างที่ถูกต้อง ง่ายๆ ที่สุดในโลก

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim xlApp As Excel.Application
Dim xlWorkBook As Excel.Workbook
Dim xlWorkSheet As Excel.Worksheet
Dim misValue As Object = System.Reflection.Missing.Value
Dim i As Integer
Dim j As Integer
xlApp = New Excel.Application
xlWorkBook = xlApp.Workbooks.Add(misValue)
xlWorkSheet = xlWorkBook.Sheets("sheet1")
For j = 0 To DataGridView1.ColumnCount - 1
xlWorkSheet.Cells(1, j + 1) = DataGridView1.Columns(j).HeaderText.ToString()
Next

For i = 1 To DataGridView1.RowCount - 2
For j = 0 To DataGridView1.ColumnCount - 1
xlWorkSheet.Cells(i + 1, j + 1) = DataGridView1(j, i - 1).Value.ToString()
Next
Next

Dim ExcelName As String 'ตั้งชื่อให้ file excel
ExcelName = "test"

xlWorkSheet.SaveAs("D:\" & ExcelName & ".xlsx")
xlWorkBook.Close()
xlApp.Quit()
End Sub
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-04-26 19:09:26 By : Miss Chansira
 


 

No. 12



โพสกระทู้ ( 73 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ขอบคุณมากคับ...อันนี้ถูกเรยคับ แต่ ตัวสุดท้ายหายไป เปลี่ยนนิดเด๋ว คับ มันมีตัวที่ผิดยุ
Code (VB.NET)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim xlApp As Excel.Application
Dim xlWorkBook As Excel.Workbook
Dim xlWorkSheet As Excel.Worksheet
Dim misValue As Object = System.Reflection.Missing.Value
Dim i As Integer
Dim j As Integer
xlApp = New Excel.Application
xlWorkBook = xlApp.Workbooks.Add(misValue)
xlWorkSheet = xlWorkBook.Sheets("sheet1")
For j = 0 To DataGridView1.ColumnCount - 1
xlWorkSheet.Cells(1, j + 1) = DataGridView1.Columns(j).HeaderText.ToString()
Next

For i = 1 To DataGridView1.RowCount - 2
For j = 0 To DataGridView1.ColumnCount - 1
xlWorkSheet.Cells(i + 1, j + 1) = DataGridView1(j, i).Value.ToString() 'เดิมมันเป็น (j,i-1)
Next
Next

Dim ExcelName As String 'ตั้งชื่อให้ file excel
ExcelName = "test"

xlWorkSheet.SaveAs("D:\" & ExcelName & ".xlsx")
xlWorkBook.Close()
xlApp.Quit()
End Sub

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-04-26 20:57:48 By : termja
 


 

No. 13



โพสกระทู้ ( 73 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

พอดีว่า..ตอนแรกนึกว่าใช้ได้แล้วคับ...ดูไม่ดี อุตส่าดีใจทั้งคืน

มันก้จะหายไป 1 cell เหมือนเดิมคับ

ถ้า i-1 cells ล่างสุดก้หาย
ถ้าเป็น i cells บนสุดก้จะหาย

งงมากคับ..ขอความอนุเคราะห์อีกซักที นึงคับ..มันมีปัญหา อีกแร้ว
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-04-27 11:14:08 By : termja
 


 

No. 14



โพสกระทู้ ( 362 )
บทความ ( 0 )



สถานะออฟไลน์


11.
For j = 0 To DataGridView1.ColumnCount - 1
12.
xlWorkSheet.Cells(1, j + 1) = DataGridView1.Columns(j).HeaderText.ToString()
13.
Next
ตรงนี้รึป่าวที่หายลองเอาสีแดงออกดู


ประวัติการแก้ไข
2011-04-27 15:23:40
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-04-27 15:22:59 By : hamzter
 


 

No. 15



โพสกระทู้ ( 73 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

คับ..ถ้าเอาออก มันจะไม่ดึง header มาคับ แต่ไม่ตอนนี้มีมาใหม่แร้ว ใช้ได้ ดูเอาน่ะคับ



Code (VB.NET)
                       
 For i = 0 To DataGridView.RowCount - 2             'ส่วนนี้ก้เป็นการเอาข้อมูลมาปกติแบบไม่ต้องเอาheader มาแสดงเหมืนตอนแรก
                    For j = 0 To DataGridView.ColumnCount - 1

                        xlWorkSheet.Cells(i + 1, j + 1) = _
                 DataGridView(j, i).Value.ToString()

                    Next
                Next

                xlWorkSheet.Cells(1, 1).insert()   'พอหลุดลูป แล้วก้เพิ่ม cell ไปที่บรรทัดแรกให้เป็นค่าว่าง
             

                With xlApp.ActiveSheet.Cells(1, 1)  ' อันนี้ค่อยใส่ค่าลงไปใน cell ที่เป็นค่าว่างแทน 
                    .Value = "Report Code"
                    .Font.Bold = True
                    .VerticalAlignment = -4108
                    .HorizontalAlignment = -4108
                    .BORDERS.Weight = 1
                End With





เอาไปประยุกต์ใช้ได้น่ะน่ะคับ ^^
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-04-28 14:20:52 By : termja
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ทำยังให้เอา Header ใน DataGridview มาใส่ใน Excel ได้ครับ งง ไปหมดแล้ว แก้จนปวดหัว!!!
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 01
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่