从 VB.NET (DataGridView) 导出到 Excel 时,格式化单元格值满足条件的某些行
Format certain rows where a cell value meets a condition when exporting from VB.NET (DataGridView) to Excel
我是 VB 语法的新手,我正在努力向 excel 导出添加条件。
我有一个填充 DataGridView (dgvBreaks) 的数据集 (ds2)。数据集中的数据将如下所示:
Emp_Name
ClockDate
Time_In
Time_Out
Total_Hours
Actual_Hours
Breaks
Notes
Moloto, Joseph
04/04/2022 00:00
07:36:00
06:42:00
5,8
4,60
2
Clocked out on: 2022-04-05 -
Moloto, Joseph
04/05/2022 00:00
07:22:00
07:22:00
9,2
9,00
1
Moloto, Joseph
04/06/2022 00:00
07:40:00
16:31:00
8,9
8,80
0
Moloto, Joseph
04/07/2022 00:00
07:25:00
16:29:00
9,1
9,00
0
Moloto, Joseph
04/08/2022 00:00
07:34:00
15:35:00
8,0
8,90
0
Moloto, Joseph
04/11/2022 00:00
07:42:00
16:33:00
8,9
8,80
0
我想将数据从 gridview 或数据集导出到 excel 并根据单元格值设置特定行的格式。例如:如果实际小时数小于 8,则以红色突出显示一行。这样该行将显示为红色:
Emp_Name
ClockDate
Time_In
Time_Out
Total_Hours
Actual_Hours
Breaks
Notes
Moloto, Joseph
04/04/2022 00:00
07:36:00
06:42:00
5,8
4,60
2
Clocked out on: 2022-04-05 -
目前我使用以下代码将数据导出到 excel sheet:
Dim xlApp As Microsoft.Office.Interop.Excel.Application
Dim xlWorkBook As Microsoft.Office.Interop.Excel.Workbook
Dim xlWorkSheet As Microsoft.Office.Interop.Excel.Worksheet
Dim misValue As Object = System.Reflection.Missing.Value
Dim i As Integer
Dim j As Integer
xlApp = New Microsoft.Office.Interop.Excel.Application
xlWorkBook = xlApp.Workbooks.Add(misValue)
xlWorkSheet = xlWorkBook.Sheets("sheet1")
For i = 0 To dgvDataBreaks.RowCount - 2
For j = 0 To dgvDataBreaks.ColumnCount - 1
For k As Integer = 1 To dgvDataBreaks.Columns.Count
xlWorkSheet.Cells(1, k) = dgvDataBreaks.Columns(k - 1).HeaderText
xlWorkSheet.Cells(i + 2, j + 1) = dgvDataBreaks(j, i).Value.ToString()
Next
Next
Next
Dim path As SaveFileDialog = New SaveFileDialog
path.ShowDialog()
If DialogResult.OK Then
xlWorkSheet.SaveAs(path.FileName)
End If
xlWorkBook.Close()
xlApp.Quit()
releaseObject(xlApp)
releaseObject(xlWorkBook)
releaseObject(xlWorkSheet)
MsgBox("You can find the file at: " + path.FileName)
但我不确定如何添加条件检查。 (我如何只检查实例的 'Actual Hours'?)
正如 JohnG 在评论中所说,这很简单:
xlWorkSheet.Range(xlWorkSheet.Cells(i + 2, 1), xlWorkSheet.Cells(i + 2, 8)).Interior.Color = ColorTranslator.ToOle(Color.Red)
我是 VB 语法的新手,我正在努力向 excel 导出添加条件。 我有一个填充 DataGridView (dgvBreaks) 的数据集 (ds2)。数据集中的数据将如下所示:
Emp_Name | ClockDate | Time_In | Time_Out | Total_Hours | Actual_Hours | Breaks | Notes |
---|---|---|---|---|---|---|---|
Moloto, Joseph | 04/04/2022 00:00 | 07:36:00 | 06:42:00 | 5,8 | 4,60 | 2 | Clocked out on: 2022-04-05 - |
Moloto, Joseph | 04/05/2022 00:00 | 07:22:00 | 07:22:00 | 9,2 | 9,00 | 1 | |
Moloto, Joseph | 04/06/2022 00:00 | 07:40:00 | 16:31:00 | 8,9 | 8,80 | 0 | |
Moloto, Joseph | 04/07/2022 00:00 | 07:25:00 | 16:29:00 | 9,1 | 9,00 | 0 | |
Moloto, Joseph | 04/08/2022 00:00 | 07:34:00 | 15:35:00 | 8,0 | 8,90 | 0 | |
Moloto, Joseph | 04/11/2022 00:00 | 07:42:00 | 16:33:00 | 8,9 | 8,80 | 0 |
我想将数据从 gridview 或数据集导出到 excel 并根据单元格值设置特定行的格式。例如:如果实际小时数小于 8,则以红色突出显示一行。这样该行将显示为红色:
Emp_Name | ClockDate | Time_In | Time_Out | Total_Hours | Actual_Hours | Breaks | Notes |
---|---|---|---|---|---|---|---|
Moloto, Joseph | 04/04/2022 00:00 | 07:36:00 | 06:42:00 | 5,8 | 4,60 | 2 | Clocked out on: 2022-04-05 - |
目前我使用以下代码将数据导出到 excel sheet:
Dim xlApp As Microsoft.Office.Interop.Excel.Application
Dim xlWorkBook As Microsoft.Office.Interop.Excel.Workbook
Dim xlWorkSheet As Microsoft.Office.Interop.Excel.Worksheet
Dim misValue As Object = System.Reflection.Missing.Value
Dim i As Integer
Dim j As Integer
xlApp = New Microsoft.Office.Interop.Excel.Application
xlWorkBook = xlApp.Workbooks.Add(misValue)
xlWorkSheet = xlWorkBook.Sheets("sheet1")
For i = 0 To dgvDataBreaks.RowCount - 2
For j = 0 To dgvDataBreaks.ColumnCount - 1
For k As Integer = 1 To dgvDataBreaks.Columns.Count
xlWorkSheet.Cells(1, k) = dgvDataBreaks.Columns(k - 1).HeaderText
xlWorkSheet.Cells(i + 2, j + 1) = dgvDataBreaks(j, i).Value.ToString()
Next
Next
Next
Dim path As SaveFileDialog = New SaveFileDialog
path.ShowDialog()
If DialogResult.OK Then
xlWorkSheet.SaveAs(path.FileName)
End If
xlWorkBook.Close()
xlApp.Quit()
releaseObject(xlApp)
releaseObject(xlWorkBook)
releaseObject(xlWorkSheet)
MsgBox("You can find the file at: " + path.FileName)
但我不确定如何添加条件检查。 (我如何只检查实例的 'Actual Hours'?)
正如 JohnG 在评论中所说,这很简单:
xlWorkSheet.Range(xlWorkSheet.Cells(i + 2, 1), xlWorkSheet.Cells(i + 2, 8)).Interior.Color = ColorTranslator.ToOle(Color.Red)