根据创build时间/反转excel表格,以相反的顺序对Excel表单进行sorting

我正在使用Microsoft Interop的Excel来自动化的Excel工作簿,其中有很多工作表(比如说40)已经创build在几秒钟的差距,甚至更less,现在我必须以相反的顺序,即首先创build的工作表应该先打开(现在是最后一个)总之,我必须按照相反的顺序或创build时间sortingExcel表

在这个问题上的任何帮助

日Thnx

据我所知, Excel不存储每张纸的创builddate和时间 。 但是,每张工作簿的末尾都会添加新的工作表。
所以,你可以根据这个假设来改变顺序。

这里是一个VBAmacros来做到这一点,你只需要适应它互操作或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 

它从最后一页之前的一张表分析表到第一张,并将每张表移动到最后一个位置

 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); } 

因此,如果您在Excel文件中有工作簿工作表,并且您需要对工作表字母进行sorting:

  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); } } } }