簡體   English   中英

在vb.net中將DataGridView轉換為帶有彩色單元格的Excel

[英]DataGridView To Excel With Colored Cells in vb.net

我看了很多例子和演示,但我做不到。

我正在嘗試將datagridview轉換為具有背景色的excel。 我只能將datagridview轉換為Excel,但沒有背景色。 我想用背景色導出Excel。 這是我的代碼。

Imports System.Data.SqlClient
Imports System.Data.OleDb
Imports Excel = Microsoft.Office.Interop.Excel

Public Class view_all
    Dim con1 As SqlConnection 'cun concation
    Dim con As String ' string coonction 
    Dim da As SqlDataAdapter
    Dim ds As DataSet
    Dim tables As DataTableCollection
    Dim source1 As New BindingSource
    Dim APP As New Excel.Application
    Dim worksheet As Excel.Worksheet
    Dim workbook As Excel.Workbook
    Dim view As DataView



    Private Sub view_all_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim obj As New config
        con1 = New SqlConnection
        con1 = obj.getcontion()
        con1.Open()
        MessageBox.Show("Open Stock Limit ", "Open", MessageBoxButtons.OK, MessageBoxIcon.Information)
        da = New SqlDataAdapter("select * from item", con1)
        ds = New DataSet
        da.Fill(ds, "item")
        DataGridView1.DataSource = ds
        DataGridView1.DataMember = "item"

        tables = ds.Tables
        view = New DataView(tables(0))
        source1.DataSource = view
        DataGridView1.DataSource = view
        DataGridView1.AllowUserToAddRows = False

        DataGridView1.Columns(0).HeaderText = "Item Id"
        DataGridView1.Columns(1).HeaderText = "Item Name"
        DataGridView1.Columns(2).HeaderText = "Item Number"
        DataGridView1.Columns(3).HeaderText = "GRN Number"
        DataGridView1.Columns(4).HeaderText = "Item Qty "
        DataGridView1.Columns(5).HeaderText = "Item Max"
        DataGridView1.Columns(6).HeaderText = "Item min"



    End Sub


    Private Sub DataGridView1_CellFormatting(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles DataGridView1.CellFormatting

        For i As Integer = 0 To Me.DataGridView1.Rows.Count - 1
            Dim A As Integer = Me.DataGridView1.Rows(i).Cells(4).Value
            Dim c As String = Me.DataGridView1.Rows(i).Cells(6).Value
            Dim aa As Double ' string double herawanawa
            Dim cc As Double ' string double harawabanwa 
            aa = CDbl(Val(A))
            cc = CDbl(Val(c))

            If aa < cc Then
                Me.DataGridView1.Rows(i).DefaultCellStyle.BackColor = Color.Red

            Else
                Me.DataGridView1.Rows(i).DefaultCellStyle.BackColor = Color.Yellow
            End If
        Next



    End Sub


    '***************** export  excel *****************************
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Save.Click
        If TextBox1.Text = "" Then
            MsgBox("Enter file name")
            Return
        End If


        Dim xlApp As Excel.Application
        Dim xlWorkBook As Excel.Workbook
        Dim xlWorkSheet As Excel.Worksheet
        Dim misValue As Object = System.Reflection.Missing.Value

        Dim i As Int16, j As Int16

        xlApp = New Excel.Application
        xlWorkBook = xlApp.Workbooks.Add(misValue)
        xlWorkSheet = xlWorkBook.Sheets("sheet1")




        For x = 0 To DataGridView1.ColumnCount - 1
            xlWorkSheet.Cells(0 + 1, x + 1) = _
            DataGridView1.Columns(x).HeaderText
        Next

        For i = 0 To DataGridView1.RowCount - 1
            For j = 0 To DataGridView1.ColumnCount - 1
                xlWorkSheet.Cells(i + 2, j + 1) = _
                DataGridView1(j, i).Value.ToString()
            Next
        Next




                Dim path As String


                path = "C:\vb\" + TextBox1.Text.Trim + ".xls"

                If (path = TextBox1.Text) Then

                    MsgBox(" no ")
                    Return

                End If





                xlWorkBook.SaveAs(path, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, _
                 Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue)
                xlWorkBook.Close(True, misValue, misValue)
                xlApp.Quit()
                'MsgBox("misValue")
                MsgBox(path)
                releaseObject(xlWorkSheet)
                releaseObject(xlWorkBook)
                releaseObject(xlApp)

                MessageBox.Show("File completed to  save in your path")
    End Sub
    Private Sub releaseObject(ByVal obj As Object)
        Try
            System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
            obj = Nothing
        Catch ex As Exception
            obj = Nothing
            MessageBox.Show("Exception Occured while releasing object " + ex.ToString())
        Finally
            GC.Collect()
        End Try
    End Sub
End Class

您需要遵循以下原則

Dim formatRange As Excel.Range
formatRange = worksheet.Range("A1", "A3")
formatRange.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red)

只需更改括號中的范圍以匹配您的范圍即可(如果需要,您也可以重復第二行和第三行以覆蓋所有不同的范圍和顏色。

希望對您有所幫助- 在此處找到更多格式選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM