将datagridview保存为基于内容分离excel或PDF文件

时间:2013-03-19 15:48:50

标签: vb.net datagridview

我目前有我的datagridview从mysql表导入数据。导入信息后(通常1000行乘15列),用户可以将数据导出到Excel。然后,用户必须运行宏以通过第1列中的内容将数据分成单独的表(根据值将相同的行组合在一起),然后运行另一个宏将每个单独的表保存到文件夹中的自己的电子邮件文件中。第1列的内容可以具有保存值 - 例如

enter image description here

一旦用户点击按钮,是否有可能让vb.net在以下步骤中自动执行此功能:

  1. 按照第1列
  2. 中的内容对dgv进行排序
  3. 开始根据第1列中的内容将数据保存到指定文件夹中的单独文件中(所有jim和bill都在特定文件夹中)
  4. 文件名将是第1列中内容的名称。
  5. 一旦完成就会弹出,表示项目已保存。
  6. 我用于dgv的当前代码excel export。

      'export to excel
        'verfying the datagridview having data or not
        If ((DataGridView1.Columns.Count = 0) Or (DataGridView1.Rows.Count = 0)) Then
            Exit Sub
        End If
    
        'Creating dataset to export
        Dim dset As New DataSet
        'add table to dataset
        dset.Tables.Add()
        'add column to that table
        For i As Integer = 0 To DataGridView1.ColumnCount - 1
            dset.Tables(0).Columns.Add(DataGridView1.Columns(i).HeaderText)
        Next
        'add rows to the table
        Dim dr1 As DataRow
        For i As Integer = 0 To DataGridView1.RowCount - 1
            dr1 = dset.Tables(0).NewRow
            For j As Integer = 0 To DataGridView1.Columns.Count - 1
                dr1(j) = DataGridView1.Rows(i).Cells(j).Value
            Next
            dset.Tables(0).Rows.Add(dr1)
        Next
    
        Dim excel As New Microsoft.Office.Interop.Excel.Application
        Dim wBook As Microsoft.Office.Interop.Excel.Workbook
        Dim wSheet As Microsoft.Office.Interop.Excel.Worksheet
    
        wBook = excel.Workbooks.Add()
        wSheet = wBook.ActiveSheet()
    
        Dim dt As System.Data.DataTable = dset.Tables(0)
        Dim dc As System.Data.DataColumn
        Dim dr As System.Data.DataRow
        Dim colIndex As Integer = 0
        Dim rowIndex As Integer = 0
    
        For Each dc In dt.Columns
            colIndex = colIndex + 1
            excel.Cells(1, colIndex) = dc.ColumnName
        Next
    
        For Each dr In dt.Rows
            rowIndex = rowIndex + 1
            colIndex = 0
            For Each dc In dt.Columns
                colIndex = colIndex + 1
                excel.Cells(rowIndex + 1, colIndex) = dr(dc.ColumnName)
    
            Next
        Next
    
        wSheet.Columns.AutoFit()
        Dim strFileName As String = "C:\exports\jim.xls"
        Dim blnFileOpen As Boolean = False
        Try
            Dim fileTemp As System.IO.FileStream = System.IO.File.OpenWrite(strFileName)
            fileTemp.Close()
        Catch ex As Exception
            blnFileOpen = False
        End Try
    
        If System.IO.File.Exists(strFileName) Then
            System.IO.File.Delete(strFileName)
        End If
    
        wBook.SaveAs(strFileName)
        excel.Workbooks.Open(strFileName)
        excel.Visible = True
    

0 个答案:

没有答案