2017-03-08 64 views
0

Excel中的色的单元格我看了很多例子和演示,但我不能给它。的DataGridView要在vb.net

我想转换datagridview的背景颜色脱颖而出。 我只能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 
+1

这是一个Excel文件模板更容易创建一个Excel模板设置条件根据其他单元格的值对背景进行格式化。导出时,将模板复制到临时文件夹,打开它,添加数据,然后将其保存到由用户提供的文件夹和文件名。 –

回答

0

你需要沿着

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

线的东西只要改变括号中的范围,以配合您的范围(您也可以重复第二和第三线覆盖所有不同的范围和颜色,如果你需要

希望这有助于 - 。寻找更多格式选项here

+0

我希望动态改变颜色。我已经添加了条件改变颜色。在datagridview中的作品是.ok但出口后excel的排颜色没有显示 – Duminda

+0

@Duminda对不起,我不太明白你的意思。 – David

+0

David先生..datagridview行颜色动态变化。我想动态地导出更改行颜色的颜色导出excel – Duminda