在保持标题行的同时对ClosedXML中的表进行排序

问题描述 投票:1回答:1

我尝试了几种在ClosedXML中进行排序的方法,但是它们都具有相同的结果:第一行数据成为excel中的新标头。

这是我到目前为止使用的代码:

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分数是一个数据表

如何在排序数据时保留原始标题行?

vb.net closedxml
1个回答
0
投票

如果您可以在将数据导入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中工作一会儿看看它是如何完成的。您会看到您选择了除标题行之外的所有数据。也许记录一个宏,然后翻译然后将其翻译为vb.net。

© www.soinside.com 2019 - 2024. All rights reserved.