tags:

views:

1876

answers:

1

we are generating a excel report and we need to sort the data programmatically before saving the file.

Is it possible to implement filter on a specific column i.e. sorting of a excel file programmatically using vb.net?

As per your suggetion, in order to generate excel report with sorting on specific column I just implemented the logic as below..

Dim MyRange As Excel.Range
  gobjExcelReportSheet.Activate()
      MyRange = gobjExcelReportSheet.Range("A8", "L8")
      MyRange.Select()
      MyRange.Sort(Key1:=MyRange.Range("L8"), _
                   Order1:=XlSortOrder.xlAscending, _
                   Header:=XlYesNoGuess.xlGuess, _
                   MatchCase:=False, _
                   Orientation:=XlSortOrientation.xlSortColumns)

I tried this logic just before saving the file and even just after saving the file but it is not giving any result i.e. with sorting result or even I am not getting any error.

But the following code works....

gobjExcelReportSheet.Application.Selection.Autofilter()

But there is no option for sorting programmetically.

Please help me...

Thanks!

+1  A: 

Assuming you're using the interop assemblies this is how I do it:

Dim myWorkSheet As Excel.Worksheet = myWorkbook.Worksheets(aSheetName)
myWorkSheet.Activate()
Dim myRange As Excel.Range

myRange = myWorkSheet.Range("A1", "L10")
myRange.Select()


myRange.Sort(Key1:=myRange.Range("D1"), _
                        Order1:=Excel.XlSortOrder.xlAscending, _
                        Orientation:=Excel.XlSortOrientation.xlSortColumns)

Basically you need to select a range (in this case A1:L10, then choose to sort it by a certain column (D).

RobS
I have implemented this, but I am getting expected result even not getting any error. Do I need to do any other settings? Please suggest. Thank you.
Suman
I take it you mean you're not getting the expected result? If so, then we need much more information. Please edit your question showing what you've done so far.
RobS
Hi All,Now its working with following code....MyRange.Range("A8").Sort(Key1:=MyRange.Range("L8"), Order1:=XlSortOrder.xlAscending, Header:=XlYesNoGuess.xlGuess, MatchCase:=False, Orientation:=XlSortOrientation.xlSortColumns)Along with other lines as mentioned above.Thank you.
Suman
Good. An upvote and/or an accepted answer (hint, click on the tick) would be nice then? ;)
RobS
I agree, an upvote, at the very least, is a good idea.
Remou
.. so +1 from me.
Remou
Thank you. It's not really about the rep it's that it helps everyone know whether or not it's the correct answer.
RobS