在vb.net中使用彩色单元格将DataGridView转换为Excel

在vb.net中使用彩色单元格将DataGridView转换为Excel,vb.net,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 SqlC

我看了很多例子和演示,但我看不懂

我正在尝试使用背景色将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
导入System.Data.SqlClient
导入System.Data.OleDb
导入Excel=Microsoft.Office.Interop.Excel
公共类视图
尺寸con1为SqlConnection“C”连接
作为字符串的字符串协调的尺寸con
Dim da作为SqlDataAdapter
Dim ds作为数据集
将表设置为DataTableCollection
Dim source1作为新的BindingSource
Dim应用程序作为新的Excel.Application
将工作表设置为Excel。工作表
将工作簿设置为Excel.工作簿
作为数据视图的Dim视图
私有子视图_all_Load(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理MyBase.Load
Dim obj作为新配置
con1=新的SqlConnection
con1=obj.getcontion()
con1.Open()
MessageBox.Show(“未清库存限额”,“未清”,MessageBoxButtons.OK,MessageBoxIcon.Information)
da=新的SqlDataAdapter(“从项中选择*,con1)
ds=新数据集
da.填写(ds,“项目”)
DataGridView1.DataSource=ds
DataGridView1.DataMember=“项”
tables=ds.tables
视图=新数据视图(表(0))
source1.DataSource=view
DataGridView1.DataSource=view
DataGridView1.AllowUserToAddress=False
DataGridView1.Columns(0).HeaderText=“项目Id”
DataGridView1.Columns(1).HeaderText=“项目名称”
DataGridView1.Columns(2).HeaderText=“项目编号”
DataGridView1.Columns(3).HeaderText=“GRN编号”
DataGridView1.列(4).HeaderText=“项目数量”
DataGridView1.Columns(5).HeaderText=“Item Max”
DataGridView1.Columns(6).HeaderText=“项目最小值”
端接头
私有子DataGridView1u CellFormatting(ByVal sender作为对象,ByVal e作为System.Windows.Forms.DataGridViewCellFormattingEventArgs)处理DataGridView1.CellFormatting
对于i As Integer=0到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为双“字符串双herawanawa
尺寸cc为“双”字串双原wabanwa
aa=CDbl(Val(A))
cc=CDbl(Val(c))
如果aa
你需要一些类似于

Dim formatRange As Excel.Range
formatRange = worksheet.Range("A1", "A3")
formatRange.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red)
只需更改括号中的范围以匹配您的范围(如果需要,您还可以重复第二行和第三行以覆盖所有不同的范围和颜色)


希望这有助于找到更多格式选项。

使用excel文件模板更容易。创建excel模板。根据其他单元格的值设置背景的条件格式。导出时,将模板复制到临时文件夹,打开它,添加数据,然后将其保存到用户I want col提供的文件夹和文件名中或者动态更改。我已经添加了条件更改颜色。在datagridview works中是。可以,但导出excel后,行颜色没有更改show@Duminda对不起,我不太明白你的意思。David先生..datagridview行颜色动态更改。a我想动态导出更改行颜色导出excel