----
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try '建立暫存Table!! Dim dt As New DataTable dt.Columns.Add(New DataColumn("tItem", System.Type.GetType("System.String"))) dt.Columns.Add(New DataColumn("tDescription", System.Type.GetType("System.String"))) dt.Columns.Add(New DataColumn("tMemon", System.Type.GetType("System.String"))) '建立暫存資料!! Dim dr As DataRow = dt.NewRow dr.Item("tItem") = "1" dr.Item("tDescription") = "你好嗎?" dr.Item("tMemon") = "...." dt.Rows.Add(dr) '建立暫存資料!! dr = dt.NewRow dr.Item("tItem") = "2" dr.Item("tDescription") = "你是誰?" dr.Item("tMemon") = ",,,,," dt.Rows.Add(dr) '呼叫匯出Excel Function If Not ExportExcel(dt, "c:\temp\123.xls", "測試") Then MessageBox.Show("匯出Excel 時發生錯誤!!") Else MessageBox.Show("匯出Excel 成功!!") End If Catch ex As Exception '錯誤則秀出錯誤訊息!! MessageBox.Show(ex.Message) End Try End Sub 'DT: Data Table 'FullFileName: 匯出Excel 的完整路徑 Ex: C:\123.xls 'TableName: 匯出Excel 的Sheet Name Private Function ExportExcel(ByVal DT As DataTable, ByVal FullFileName As String, ByVal TableName As String) As Boolean Dim connection As New Data.OleDb.OleDbConnection(String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=""Excel 8.0""", FullFileName)) Try '建立Excel Connection connection.Open() '產生Table Dim strCreate As String For i As Int32 = 0 To DT.Columns.Count - 1 strCreate += String.Format(",{0} Text(255)", DT.Columns(i).ColumnName) Next strCreate = String.Format("Create Table [{0}] ({1})", TableName, strCreate.Substring(1)) Dim command As New Data.OleDb.OleDbCommand(strCreate, connection) command.ExecuteNonQuery() '讀取Excel Table (Sheet) Dim queryString As String = String.Format("Select * From [{0}]", TableName) '建立Excel 配接器 Dim adapter As New Data.OleDb.OleDbDataAdapter() '宣告一個Dataset Dim ds As New DataSet adapter.SelectCommand = New Data.OleDb.OleDbCommand(queryString, connection) Dim builder As Data.OleDb.OleDbCommandBuilder = New Data.OleDb.OleDbCommandBuilder(adapter) '產生新增語法 adapter.Fill(ds, TableName) For i As Int32 = 0 To DT.Rows.Count - 1 Dim dr As DataRow = ds.Tables(TableName).NewRow For j As Int32 = 0 To DT.Columns.Count - 1 dr.Item(DT.Columns(j).ColumnName) = DT.Rows(i).Item(j) Next ds.Tables(TableName).Rows.Add(dr) Next builder.GetInsertCommand(True) '執行新增語法 adapter.Update(ds, TableName) Return True Catch ex As Exception '擲出錯誤!! Throw ex Finally '關閉連線 connection.Close() End TryEnd Function
沒有留言:
張貼留言