2012年12月12日 星期三

VB.Net 如何匯出Excel (將Excel 當成DB 來做匯出)

參考引用 
----
  1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  2. Try
  3. '建立暫存Table!!
  4. Dim dt As New DataTable
  5. dt.Columns.Add(New DataColumn("tItem", System.Type.GetType("System.String")))
  6. dt.Columns.Add(New DataColumn("tDescription", System.Type.GetType("System.String")))
  7. dt.Columns.Add(New DataColumn("tMemon", System.Type.GetType("System.String")))
  8. '建立暫存資料!!
  9. Dim dr As DataRow = dt.NewRow
  10. dr.Item("tItem") = "1"
  11. dr.Item("tDescription") = "你好嗎?"
  12. dr.Item("tMemon") = "...."
  13. dt.Rows.Add(dr)
  14. '建立暫存資料!!
  15. dr = dt.NewRow
  16. dr.Item("tItem") = "2"
  17. dr.Item("tDescription") = "你是誰?"
  18. dr.Item("tMemon") = ",,,,,"
  19. dt.Rows.Add(dr)
  20. '呼叫匯出Excel Function
  21. If Not ExportExcel(dt, "c:\temp\123.xls", "測試") Then
  22. MessageBox.Show("匯出Excel 時發生錯誤!!")
  23. Else
  24. MessageBox.Show("匯出Excel 成功!!")
  25. End If
  26. Catch ex As Exception
  27. '錯誤則秀出錯誤訊息!!
  28. MessageBox.Show(ex.Message)
  29. End Try
  30. End Sub
  31.  
  32. 'DT: Data Table
  33. 'FullFileName: 匯出Excel 的完整路徑 Ex: C:\123.xls
  34. 'TableName: 匯出Excel Sheet Name
  35. Private Function ExportExcel(ByVal DT As DataTable, ByVal FullFileName As String, ByVal TableName As String) As Boolean
  36. Dim connection As New Data.OleDb.OleDbConnection(String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=""Excel 8.0""", FullFileName))
  37. Try
  38. '建立Excel Connection
  39. connection.Open()
  40. '產生Table
  41. Dim strCreate As String
  42. For i As Int32 = 0 To DT.Columns.Count - 1
  43. strCreate += String.Format(",{0} Text(255)", DT.Columns(i).ColumnName)
  44. Next
  45. strCreate = String.Format("Create Table [{0}] ({1})", TableName, strCreate.Substring(1))
  46. Dim command As New Data.OleDb.OleDbCommand(strCreate, connection)
  47. command.ExecuteNonQuery()
  48.  
  49. '讀取Excel Table (Sheet)
  50. Dim queryString As String = String.Format("Select * From [{0}]", TableName)
  51. '建立Excel 配接器
  52. Dim adapter As New Data.OleDb.OleDbDataAdapter()
  53. '宣告一個Dataset
  54. Dim ds As New DataSet
  55. adapter.SelectCommand = New Data.OleDb.OleDbCommand(queryString, connection)
  56. Dim builder As Data.OleDb.OleDbCommandBuilder = New Data.OleDb.OleDbCommandBuilder(adapter)
  57. '產生新增語法
  58. adapter.Fill(ds, TableName)
  59. For i As Int32 = 0 To DT.Rows.Count - 1
  60. Dim dr As DataRow = ds.Tables(TableName).NewRow
  61. For j As Int32 = 0 To DT.Columns.Count - 1
  62. dr.Item(DT.Columns(j).ColumnName) = DT.Rows(i).Item(j)
  63. Next
  64. ds.Tables(TableName).Rows.Add(dr)
  65. Next
  66.  
  67. builder.GetInsertCommand(True)
  68. '執行新增語法
  69. adapter.Update(ds, TableName)
  70. Return True
  71. Catch ex As Exception
  72. '擲出錯誤!!
  73. Throw ex
  74. Finally
  75. '關閉連線
  76. connection.Close()
  77. End Try 
    End Function

沒有留言:

張貼留言