Сортировка таблицы в ClosedXML с сохранением строки заголовка - PullRequest
1 голос
/ 28 октября 2019

Я пробовал несколько методов сортировки в ClosedXML, но все они имели одинаковые результаты: первая строка данных становится новым заголовком в Excel.

Вот код, который я использовал такfar:

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 является датируемым

Как сохранить строку исходного заголовка при сортировке данных?

1 Ответ

1 голос
/ 29 октября 2019

Если вы можете отсортировать данные, прежде чем переносить их в 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.

...