NPOI.XSSF.UserModel.XSSFWorkbook.SetSheetOrder C# (CSharp) Метод

SetSheetOrder() публичный Метод

public SetSheetOrder ( String sheetname, int pos ) : void
sheetname String
pos int
Результат void
        public void SetSheetOrder(String sheetname, int pos)
        {
            int idx = GetSheetIndex(sheetname);
            XSSFSheet sheet = sheets[idx];
            sheets.RemoveAt(idx);
            sheets.Insert(pos,sheet);
            // Reorder CT_Sheets
            CT_Sheets ct = workbook.sheets;
            CT_Sheet cts = ct.GetSheetArray(idx).Copy();
            workbook.sheets.RemoveSheet(idx);
            CT_Sheet newcts = ct.InsertNewSheet(pos);
            newcts.Set(cts);

            //notify sheets
            List<CT_Sheet> sheetArray = ct.sheet;
            for (int i = 0; i < sheets.Count; i++)
            {
                sheets[i].sheet = sheetArray[i];
            }

            // adjust active sheet if necessary
            int active = ActiveSheetIndex;
            if (active == idx)
            {
                // Moved sheet was the active one
                SetActiveSheet(pos);
            }
            else if ((active < idx && active < pos) ||
                  (active > idx && active > pos))
            {
                // not affected
            }
            else if (pos > idx)
            {
                // Moved sheet was below before and is above now => active is one less
                SetActiveSheet(active - 1);
            }
            else
            {
                // remaining case: Moved sheet was higher than active before and is lower now => active is one more
                SetActiveSheet(active + 1);
            }

        }

Usage Example

Пример #1
0
        static void Main(string[] args)
        {
            IWorkbook wb = new XSSFWorkbook();
            wb.CreateSheet("new sheet");
            wb.CreateSheet("second sheet");
            wb.CreateSheet("third sheet");

            wb.SetSheetOrder("second sheet", 0);
            wb.SetSheetOrder("new sheet", 1);
            wb.SetSheetOrder("third sheet", 2);

            FileStream sw = File.Create("../../data/Reordered.xls");
            wb.Write(sw);
            sw.Close(); 
        }