在保持 header 行的同时对 ClosedXML 中的 table 进行排序
Sort a table in ClosedXML while keeping header row
我尝试了几种在 ClosedXML 中进行排序的方法,但它们都有相同的结果:第一行数据成为 excel 中新的 header。
这是我目前使用的代码:
Dim dtChangedScores As New DataTable
dtChangedScores.Columns.Add("Name")
dtChangedScores.Columns.Add("Old Score")
dtChangedScores.Columns.Add("New Score")
Dim dr As DataRow = dtChangedScores.NewRow
dr("Name") = "aaa"
dr("Old Score") = "bbb"
dr("New Score") = "bbb"
dtChangedScores.Rows.Add(dr)
'etc....
Dim wb = New XLWorkbook
Dim ws = wb.Worksheets.Add(dtChangedScores, "Scores")
Dim rangeTable = ws.Table(0).RangeUsed()
rangeTable.Sort()
dtChanged scores 是一个数据表
如何在排序数据时保留原始 header 行?
如果您可以在将数据带到 Excel 之前对数据进行排序,那么下面的代码应该可以做到。我显示了数据,以便您了解它是如何工作的。
Private Sub OPCode()
'Create a DataTable
Dim dtChangedScores As New DataTable
dtChangedScores.Columns.Add("Name")
dtChangedScores.Columns.Add("Old Score")
dtChangedScores.Columns.Add("New Score")
'Add some data
dtChangedScores.Rows.Add("Joe", 22, 30)
dtChangedScores.Rows.Add("Pete", 19, 20)
dtChangedScores.Rows.Add("Bob", 17, 20)
'You can use the .Sort method of the DataView
dtChangedScores.DefaultView.Sort = "Name"
DataGridView1.DataSource = dtChangedScores
End Sub
如果您需要在 Excel 中执行此操作。在 Excel 中工作一下,看看它是如何完成的。您会看到 select 除了 header 行之外的所有数据。也许录制一个宏然后翻译然后将其翻译为vb.net。
我尝试了几种在 ClosedXML 中进行排序的方法,但它们都有相同的结果:第一行数据成为 excel 中新的 header。
这是我目前使用的代码:
Dim dtChangedScores As New DataTable
dtChangedScores.Columns.Add("Name")
dtChangedScores.Columns.Add("Old Score")
dtChangedScores.Columns.Add("New Score")
Dim dr As DataRow = dtChangedScores.NewRow
dr("Name") = "aaa"
dr("Old Score") = "bbb"
dr("New Score") = "bbb"
dtChangedScores.Rows.Add(dr)
'etc....
Dim wb = New XLWorkbook
Dim ws = wb.Worksheets.Add(dtChangedScores, "Scores")
Dim rangeTable = ws.Table(0).RangeUsed()
rangeTable.Sort()
dtChanged scores 是一个数据表
如何在排序数据时保留原始 header 行?
如果您可以在将数据带到 Excel 之前对数据进行排序,那么下面的代码应该可以做到。我显示了数据,以便您了解它是如何工作的。
Private Sub OPCode()
'Create a DataTable
Dim dtChangedScores As New DataTable
dtChangedScores.Columns.Add("Name")
dtChangedScores.Columns.Add("Old Score")
dtChangedScores.Columns.Add("New Score")
'Add some data
dtChangedScores.Rows.Add("Joe", 22, 30)
dtChangedScores.Rows.Add("Pete", 19, 20)
dtChangedScores.Rows.Add("Bob", 17, 20)
'You can use the .Sort method of the DataView
dtChangedScores.DefaultView.Sort = "Name"
DataGridView1.DataSource = dtChangedScores
End Sub
如果您需要在 Excel 中执行此操作。在 Excel 中工作一下,看看它是如何完成的。您会看到 select 除了 header 行之外的所有数据。也许录制一个宏然后翻译然后将其翻译为vb.net。