【发布时间】:2026-02-11 16:00:01
【问题描述】:
我希望我的应用程序导出 datagridview 上的任何内容,包括过滤器。这是我的应用程序的布局:
组合框包含所有列的名称。搜索栏搜索该列内的数据。代码是这样的:
Imports System.Data.SqlClient
Imports System.IO
Imports ClosedXML.Excel
Imports System.Data.DataSetExtensions.dll
Public Class export
Dim con As New SqlConnection("Data Source=ICECANDY;Initial Catalog=RestaurantDatabase;integrated security=true")
Sub DGVSETPROPERTY()
DataGridView1.Columns(0).Width = 40
DataGridView1.Columns(0).HeaderText = "TaskID"
DataGridView1.Columns(0).Width = 40
DataGridView1.Columns(0).HeaderText = "Name"
DataGridView1.Columns(0).Width = 40
DataGridView1.Columns(0).HeaderText = "TaskCategory"
DataGridView1.Columns(0).Width = 40
DataGridView1.Columns(0).HeaderText = "TaskAssigned"
DataGridView1.Columns(0).Width = 40
DataGridView1.Columns(0).HeaderText = "TimeIssued"
DataGridView1.Columns(0).Width = 40
DataGridView1.Columns(0).HeaderText = "TargetTime"
DataGridView1.Columns(0).Width = 40
DataGridView1.Columns(0).HeaderText = "StartTime"
DataGridView1.Columns(0).Width = 40
DataGridView1.Columns(0).HeaderText = "FinishTime"
DataGridView1.Columns(0).Width = 40
DataGridView1.Columns(0).HeaderText = "Status"
End Sub
Sub view()
Try
Dim singh As New SqlDataAdapter("SELECT TOP (1000) [TaskID]
,[Name]
,[TaskCategory]
,[TaskAssigned]
,[TimeIssued]
,[TargetTime]
,[StartTime]
,[FinishTime]
,[Status]
FROM [RestaurantDatabase].[dbo].[Tasks]", con)
Dim bumrah As New DataSet()
singh.Fill(bumrah)
DataGridView1.DataSource = bumrah.Tables(0)
DGVSETPROPERTY()
Catch ex As Exception
MessageBox.Show(ex.ToString())
End Try
End Sub
Private Sub export_Load(sender As Object, e As EventArgs) Handles MyBase.Load
view()
End Sub
Private Sub export_Resize(sender As Object, e As EventArgs) Handles Me.Resize
Panel1.Left = (Me.Width - Panel1.Width) / 2
End Sub
Private Sub txtsearch_TextChanged(sender As Object, e As EventArgs) Handles txtsearch.TextChanged
Try
If ComboBox.Text = "TaskID" Then
Dim singh As New SqlDataAdapter("SELECT TOP (1000) [TaskID]
,[Name]
,[TaskCategory]
,[TaskAssigned]
,[TimeIssued]
,[TargetTime]
,[StartTime]
,[FinishTime]
,[Status]
FROM [RestaurantDatabase].[dbo].[Tasks] where TaskID Like '" + txtsearch.Text + "%'", con)
Dim bumrah As New DataSet()
singh.Fill(bumrah)
DataGridView1.DataSource = bumrah.Tables(0)
ElseIf ComboBox.Text = "Name" Then
Dim singh As New SqlDataAdapter("SELECT TOP (1000) [TaskID]
,[Name]
,[TaskCategory]
,[TaskAssigned]
,[TimeIssued]
,[TargetTime]
,[StartTime]
,[FinishTime]
,[Status]
FROM [RestaurantDatabase].[dbo].[Tasks] where Name Like '" + txtsearch.Text + "%'", con)
Dim bumrah As New DataSet()
singh.Fill(bumrah)
DataGridView1.DataSource = bumrah.Tables(0)
ElseIf ComboBox.Text = "TaskCategory" Then
Dim singh As New SqlDataAdapter("SELECT TOP (1000) [TaskID]
,[Name]
,[TaskCategory]
,[TaskAssigned]
,[TimeIssued]
,[TargetTime]
,[StartTime]
,[FinishTime]
,[Status]
FROM [RestaurantDatabase].[dbo].[Tasks] where TaskCategory Like '" + txtsearch.Text + "%'", con)
Dim bumrah As New DataSet()
singh.Fill(bumrah)
DataGridView1.DataSource = bumrah.Tables(0)
ElseIf ComboBox.Text = "TimeIssued" Then
Dim singh As New SqlDataAdapter("SELECT TOP (1000) [TaskID]
,[Name]
,[TaskCategory]
,[TaskAssigned]
,[TimeIssued]
,[TargetTime]
,[StartTime]
,[FinishTime]
,[Status]
FROM [RestaurantDatabase].[dbo].[Tasks] where TimeIssued Like '" + txtsearch.Text + "%'", con)
Dim bumrah As New DataSet()
singh.Fill(bumrah)
DataGridView1.DataSource = bumrah.Tables(0)
ElseIf ComboBox.Text = "TargetTime" Then
Dim singh As New SqlDataAdapter("SELECT TOP (1000) [TaskID]
,[Name]
,[TaskCategory]
,[TaskAssigned]
,[TimeIssued]
,[TargetTime]
,[StartTime]
,[FinishTime]
,[Status]
FROM [RestaurantDatabase].[dbo].[Tasks] where TargetTime Like '" + txtsearch.Text + "%'", con)
Dim bumrah As New DataSet()
singh.Fill(bumrah)
DataGridView1.DataSource = bumrah.Tables(0)
ElseIf ComboBox.Text = "StartTime" Then
Dim singh As New SqlDataAdapter("SELECT TOP (1000) [TaskID]
,[Name]
,[TaskCategory]
,[TaskAssigned]
,[TimeIssued]
,[TargetTime]
,[StartTime]
,[FinishTime]
,[Status]
FROM [RestaurantDatabase].[dbo].[Tasks] where StartTime Like '" + txtsearch.Text + "%'", con)
Dim bumrah As New DataSet()
singh.Fill(bumrah)
DataGridView1.DataSource = bumrah.Tables(0)
ElseIf ComboBox.Text = "FinishTime" Then
Dim singh As New SqlDataAdapter("SELECT TOP (1000) [TaskID]
,[Name]
,[TaskCategory]
,[TaskAssigned]
,[TimeIssued]
,[TargetTime]
,[StartTime]
,[FinishTime]
,[Status]
FROM [RestaurantDatabase].[dbo].[Tasks] where FinishTime Like '" + txtsearch.Text + "%'", con)
Dim bumrah As New DataSet()
singh.Fill(bumrah)
DataGridView1.DataSource = bumrah.Tables(0)
ElseIf ComboBox.Text = "Status" Then
Dim singh As New SqlDataAdapter("SELECT TOP (1000) [TaskID]
,[Name]
,[TaskCategory]
,[TaskAssigned]
,[TimeIssued]
,[TargetTime]
,[StartTime]
,[FinishTime]
,[Status]
FROM [RestaurantDatabase].[dbo].[Tasks] where Status Like '" + txtsearch.Text + "%'", con)
Dim bumrah As New DataSet()
singh.Fill(bumrah)
DataGridView1.DataSource = bumrah.Tables(0)
End If
Catch ex As Exception
MessageBox.Show(ex.ToString())
End Try
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Try
Dim singh As New SqlDataAdapter("SELECT TOP (1000) [TaskID]
,[Name]
,[TaskCategory]
,[TaskAssigned]
,[TimeIssued]
,[TargetTime]
,[StartTime]
,[FinishTime]
,[Status]
FROM [RestaurantDatabase].[dbo].[Tasks]", con)
Dim bumrah As New DataSet()
singh.Fill(bumrah)
DataGridView1.DataSource = bumrah.Tables(0)
DGVSETPROPERTY()
Catch ex As Exception
MessageBox.Show(ex.ToString())
End Try
End Sub
End Class
我想导出过滤后的数据。 pdf或excel都可以。
【问题讨论】:
-
连接应该在使用它们的方法中的使用块中声明。他们必须调用
Dispose方法,然后End Using执行此操作并关闭连接。 -
不要连接 SQL 字符串。使用参数。
-
如果您只使用
DataAdapter中的单个表,请不要使用DataSet,使用DataTable。 -
为了弄清楚这一点,您已经成功地从数据库中提取了您想要的数据(甚至在玛丽提出非常有效的建议之前)?现在您希望将其导出?如果是这样的话,这一切都很好,很好地向我们展示了有效的代码,但是尝试导出无效的代码呢?已经有大量示例和现有工具可以做到这一点
标签: sql-server vb.net