 |
|
อันนี้เป็นหน้าตาโปรแกรมนะคะ

โดยจะใช้วิธี พิมพ์ คำสั่ง sql ลงไป ในช่อง Select Command แล้วก็กด Execute
หลังจากนั้นข้อมูลก็จะมา แสดงที่ Datagrid ค่ะ (ในรูปเป็นข้อมูลตัวอย่างนะคะ)

แล้วปัญหาอย่างแรกก็คือ มันจะไป save ทับ ที่ชื่อไฟล์เดิมแบบนี้ค่ะ

แต่มันก็เซฟได้ปกตินะคะ

แล้วปัญหาที่ 2 ก็คือ มันมาแต่ข้อมูล หัว Column มันไม่มา ซึ่งเราอยากให้มันมาด้วยน่ะค่ะ

อันนี้เป็นโค้ดค่ะ
Private Sub Exportbtt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Exportbtt.Click
Dim xlApp As excel.Application
Dim xlWorkBook As excel.Workbook
Dim xlWorkSheet As excel.Worksheet
Dim i As Integer
Dim j As Integer
Dim misValue As Object = System.Reflection.Missing.Value
xlApp = New excel.Application
xlWorkBook = xlApp.Workbooks.Add(misValue)
xlWorkSheet = xlWorkBook.Sheets("sheet1")
For i = 0 To DataGridView1.RowCount - 2
For j = 0 To DataGridView1.ColumnCount - 1
xlWorkSheet.Cells(i + 1, j + 1) = DataGridView1(j, i).Value.ToString()
Next
Next
xlWorkSheet.SaveAs("C:\vbexcel.xlsx")
xlWorkBook.Close()
xlApp.Quit()
releaseObject(xlApp)
releaseObject(xlWorkBook)
releaseObject(xlWorkSheet)
MsgBox("You can find the file C:\vbexcel.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
คำถามก็คือ
1.อยากให้เวลา save หรือ Export ข้อมูล ไปเป็น Excel มันเป็นแบบ Browse หรือ Save as ไปหาที่เก็บไฟล์น่ะค่ะ
2.อยากให้มันExport ออกมาแล้วมี หัว Column ด้วย มันทำได้ไหมคะ หรือว่าใช้วิธีกำหนดค่าแต่ละหัวข้อให้มันเอง เพราะถ้าทำแบบนั้นแย่เลย มันมีหลาย Column มาก
ส่วนปัญหาสุดท้าย หรือ การ Import ข้อมูล ค่ะ ลองเขียนโค้ดดูตามตัวอย่างของคนอื่นแล้ว มัน Error น่ะค่ะ

ไม่รู้จะทำไงดี (วันนี้ทั้งวันทำได้แค่นี้T_T)
อันนี้โค้ด การ Import ข้อมูลค่ะ
Private Sub Importbtt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Importbtt.Click
Dim dt As New DataTable
Using dr As OleDb.OleDbDataReader = New OleDb.OleDbCommand("select * from [sheet1$]", con).ExecuteReader()
If dr.HasRows Then
dt.Load(dr)
End If
End Using
Dim tr As OleDb.OleDbTransaction = con.BeginTransaction
For i As Integer = 0 To dt.Rows.Count - 1
Dim x As Integer = New OleDb.OleDbCommand("Insert into EmpProfile(field1,field2) values('" & dt.Rows(i)("field1") & "','" & dt.Rows(i)("field2") & "'", con, tr).ExecuteNonQuery
Next
tr.Commit()
End Sub
ปล.เพิ่งหัดเขียนโปรแกรมค่ะ แต่ตั้งแต่เขียนโปรแกรมมายังไม่เคยเขียน Import/Export ข้อมูล เลยทำให้ยังไม่ค่อยเข้าใจในส่วนนี้ค่ะ
รบกวนช่วยแก้ไข หรือ ขอตัวอย่างโค้ดก็ได้ค่ะ ขอบคุณมากค่ะ
Tag : .NET, Ms Access, VB.NET
|
|
 |
 |
 |
 |
Date :
2011-04-06 15:10:03 |
By :
mayapopy |
View :
1662 |
Reply :
2 |
|
 |
 |
 |
 |
|
|
|
 |