Tri de la feuille excel dans l'ordre inverse sur la base du time créé / inverser la feuille Excel

J'utilise Microsoft interop excel pour automatiser le workboook excel dans lequel j'ai beaucoup de feuilles de calcul (disons 40) qui ont été créées en secondes ou encore less maintenant, je dois présenter la feuille de calcul dans l'ordre inverse, c'est-à-dire la feuille créée en premier devrait venir tout d'abord en ouvrant (actuellement il vient en dernier) bref, je dois sortinger la feuille Excel en ordre inverse ou par time de création

toute aide en la matière

thnx

Pour autant que je sache, Excel ne stocke pas la date et l'heure de création de chaque feuille . Pourtant, chaque nouvelle feuille est ajoutée à la fin de chaque feuille du classur.
Ainsi, vous pouvez inverser l'ordre en fonction de cette hypothèse.

Voici une macro VBA pour cela, il suffit de l'adapter à interop ou C #:

Sub reverseOrder() Dim i As Integer For i = Worksheets.Count - 1 To 1 Step -1 Worksheets(i).Move After:=Worksheets(Worksheets.Count) Next i End Sub 

Il parsing les feuilles d'une feuille avant la dernière à la première et déplace chaque feuille vers le dernier post .

 Workbook wb = app.Workbooks.Open(Form1.strRecentFilename, temp, temp, temp, temp, temp, temp, temp, temp, temp, temp, temp, temp, temp, temp); int count = wb.Worksheets.Count; Worksheet ws, lastws; lastws = (Worksheet)wb.Worksheets[count]; MessageBox.Show(lastws.Name); for (int i = count - 1; i >= 1; i--) { lastws = (Worksheet)wb.Worksheets[count]; ws = (Worksheet)wb.Worksheets[i]; ws.Move(System.Reflection.Missing.Value, lastws); } 

Donc, si vous disposez d'une feuille de calcul du file Excel et que vous devez sortinger l'alphabet des feuilles de travail:

  public void SortWs() { List<Worksheet> for_sort = new List<Worksheet>(); foreach (Worksheet ws in wb.Worksheets) { for_sort.Add(ws); } for_sort.Sort(delegate(Worksheet wst1, Worksheet wst2) { return wst1.Name.CompareTo(wst2.Name);//sort by worksheet's name }); Worksheet ws1, ws2; for (int i = 0; i < for_sort.Count; i++) { for (int j = 1; j <= wb.Worksheets.Count; j++) { ws1 = (Worksheet)wb.Worksheets[j]; if (for_sort[i].Name == ws1.Name) { ws2 = (Worksheet)wb.Worksheets[i+1]; ws1.Move(ws2, Type.Missing); } } } } });  public void SortWs() { List<Worksheet> for_sort = new List<Worksheet>(); foreach (Worksheet ws in wb.Worksheets) { for_sort.Add(ws); } for_sort.Sort(delegate(Worksheet wst1, Worksheet wst2) { return wst1.Name.CompareTo(wst2.Name);//sort by worksheet's name }); Worksheet ws1, ws2; for (int i = 0; i < for_sort.Count; i++) { for (int j = 1; j <= wb.Worksheets.Count; j++) { ws1 = (Worksheet)wb.Worksheets[j]; if (for_sort[i].Name == ws1.Name) { ws2 = (Worksheet)wb.Worksheets[i+1]; ws1.Move(ws2, Type.Missing); } } } }