私は多くの例とデモを見ましたが、私はそれをできませんでした。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
これは、Excelファイルのテンプレートを使用して簡単ですExcelテンプレートを作成してセットされる条件他のセルの値に基づいた背景の書式設定エクスポートするときは、テンプレートを一時フォルダにコピーして開き、データを追加してから、ユーザが指定したフォルダとファイル名に保存してください。 –