2017-03-08 8 views
0

私は多くの例とデモを見ましたが、私はそれをできませんでした。DataGridView vb.netの色付きセルを使用したExcelへ

私はdatagridviewを背景色でExcelに変換しようとしています。 私はdatagridviewだけをエクセルにすることができますが、背景色はありません。私はバックグラウンドカラーで輸出したい。このマイコード 。

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

あなただけ(あなたはまた、場合、すべての異なる範囲と色をカバーするために2行目と3行目を繰り返すことができ、あなたの範囲を一致させるには、括弧内に範囲を変更

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

の線に沿って何かを必要とします必要に

希望を、このことができます - 。。。。より多くの書式設定オプションhereを探す

+0

色の変更を動的に行います。私はすでに条件変更の色を追加します。データグリッドビューの作品は.okですが、エクスポート後にExcelの行の色が表示されませんでした – Duminda

+0

@Duminda申し訳ありませんが、私はあなたがどういう意味を理解していません。 – David

+0

氏Davidさん.datagridview行の色が動的に変化します。私は動的に行の色の色のエクスポートをExcelにエクスポートするエクスポートしたい – Duminda

関連する問題