****************************************
* 電腦環境:Windows 7 64bit *
* Microsoft Visual Studio版本:2010 Professional *
****************************************
沿用上一個範例繼續http://bedingfield-tsots.blogspot.tw/2015/10/microsoft-visual-studio.html
目標:希望按下「查詢」可以在dataGridView把指定資料庫的內容載入
目標:希望按下「存成Excel」可以把dataGridView中的內容轉為excel
會彈跳出存檔視窗
excel打開就像這樣
****************************************
* 程式語法:Visual Basic *
****************************************
首先加入所需References
1. View > Solution Explorer
2. 點一下專案 > 滑鼠右建 > Add Reference
3. 分別去.NET和COM的頁籤將下面這三個reference加入
Microsoft Office 12.0 Access Database Engine Object Library
Microsoft.Office.Interop.Excel
Microsoft Office.Tools.Excel.v9.0
4. 可以在程式中加入所需Import了
Imports Microsoft.Office.Interop
Imports Microsoft.Office.Tools.Excel
5. 程式全文如下
Imports System.Data.SqlClient Imports System.Globalization Imports Microsoft.Office.Interop Imports Microsoft.Office.Tools.Excel Imports System.IO Public Class Form1 Private resourceCulture As Global.System.Globalization.CultureInfo Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click '先將listBox清空 listBox1.Items.Clear() Dim cs As String = "server=(local)\LISasst;database=Northwind;integrated security=SSPI;" Dim qs As String = "SELECT * FROM [Northwind].[dbo].[Employees]" '1.引用SqlConnection物件連接資料庫 Using cn As New SqlClient.SqlConnection(cs) '2.開啟資料庫 cn.Open() Dim da As SqlDataAdapter = New SqlDataAdapter(qs, cs) Using command As New SqlCommand(qs, cn) Dim ds As DataSet = New DataSet() da.SelectCommand = command da.Fill(ds) DataGridView1.AutoGenerateColumns = True DataGridView1.DataSource = ds.Tables(0) End Using cn.Close() cn.Dispose() End Using End Sub Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click Call DataToExcel(DataGridView1) End Sub Public Sub DataToExcel(ByVal m_DataView As DataGridView) Dim kk As New SaveFileDialog() kk.Filter = "EXECL文件(*.xls) |*.xls" kk.Title = "Save an Excel File" kk.FileName = "Form " & " 報表_" & Now.ToString("yy-MM-dd HHmmss") kk.FilterIndex = 1 If kk.ShowDialog() = DialogResult.OK Then Dim FileName As String = kk.FileName ' + ".xls" If File.Exists(FileName) Then File.Delete(FileName) End If Dim objFileStream As FileStream Dim objStreamWriter As StreamWriter Dim strLine As String = "" objFileStream = New FileStream(FileName, FileMode.OpenOrCreate, FileAccess.Write) objStreamWriter = New StreamWriter(objFileStream, System.Text.Encoding.Unicode) For i As Integer = 0 To m_DataView.Columns.Count - 1 If m_DataView.Columns(i).Visible = True Then strLine = strLine + m_DataView.Columns(i).HeaderText.ToString() + Convert.ToChar(9) End If Next objStreamWriter.WriteLine(strLine) strLine = "" For i As Integer = 0 To m_DataView.Rows.Count - 1 If m_DataView.Columns(0).Visible = True Then If m_DataView.Rows(i).Cells(0).Value Is Nothing Then strLine = (strLine & " ") + Convert.ToChar(9) Else strLine = strLine + m_DataView.Rows(i).Cells(0).Value.ToString() + Convert.ToChar(9) End If End If For j As Integer = 1 To m_DataView.Columns.Count - 1 If m_DataView.Columns(j).Visible = True Then If m_DataView.Rows(i).Cells(j).Value Is Nothing Then strLine = (strLine & " ") + Convert.ToChar(9) Else Dim rowstr As String = "" rowstr = m_DataView.Rows(i).Cells(j).Value.ToString() If rowstr.IndexOf(vbCr & vbLf) > 0 Then rowstr = rowstr.Replace(vbCr & vbLf, " ") End If If rowstr.IndexOf(vbLf) > 0 Then rowstr = rowstr.Replace(vbLf, " ") End If If rowstr.IndexOf(vbTab) > 0 Then rowstr = rowstr.Replace(vbTab, " ") End If strLine = strLine + rowstr + Convert.ToChar(9) End If End If Next objStreamWriter.WriteLine(strLine) strLine = "" Next objStreamWriter.Close() objFileStream.Close() MessageBox.Show(Me, "儲存EXCEL成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information) End If End Sub End Class
嗨~可以認識一下嗎?我VB有些地方不太了解希望可以幫幫我一下大大!
回覆刪除HiHi, 沒問題喔
刪除有mail嗎?方便用賴嗎?我發mail給你我的賴
刪除請問一下妳的mail是多少呢?妳程式語言很厲害,向你學習中
回覆刪除我的mail是beddingfair@gmail.com
刪除其實我是在工作中現學現賣(很弱啦XDDD) & 其實現在工作沒有在用VB.net了 QQ