Member 12849906 Ответов: 1

Как я могу перебирать листы excel в C#


Я пытаюсь зациклиться на листах excel.

Что я уже пробовал:

Это код, который у меня есть до сих пор. Он читает только первый лист.

public byte[] GenerateExcel(SLExcelData data)
      {
          var stream = new MemoryStream();
          var document = SpreadsheetDocument
              .Create(stream, SpreadsheetDocumentType.Workbook);

          var workbookpart = document.AddWorkbookPart();
          workbookpart.Workbook = new Workbook();
          var worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
          var sheetData = new SheetData();

          worksheetPart.Worksheet = new Worksheet(sheetData);

          var sheets = document.WorkbookPart.Workbook.
          AppendChild<Sheets>(new Sheets());


          var sheet = new Sheet()
          {
              Id = document.WorkbookPart
              .GetIdOfPart(worksheetPart),
              SheetId = 1,
              Name = data.SheetName ?? "Sheet 1"
          };
          sheets.AppendChild(sheet);

Richard Deeming

Код, который вы показали, создает новую книгу. У него не будет никаких листов, чтобы прокручивать их, если вы их не добавите.

j snooze

Согласитесь с Ричардом. Ваш код добавляет / создает лист и добавляет его в рабочую книгу,этот код вообще не выполняет никакого чтения листа. Я предполагаю, что там есть рабочая тетрадь.свойство worksheets, возвращающее список или какой-либо тип перечисляемых элементов, которые можно перебирать циклом, например foreach(лист листа в рабочей книге.рабочие листы).... попробуйте это.

1 Ответов

Рейтинг:
2

kkakadiya

вы можете попробовать с приведенным ниже кодом:

private void readExcel()
    {
Application excelApp = new Application();
        Microsoft.Office.Interop.Excel.Workbook workBook = excelApp.Workbooks.Open("E:\\List.xlsx");
        foreach (Worksheet sheet in workBook.Worksheets)
        {
            data += "*******   Sheet " + i++.ToString() + "   ********\n";
            foreach (Range row in sheet.UsedRange.Rows)
            {
                
            }
        }

        excelApp.Quit();
}


пожалуйста, отметьте его как решенный, если вы найдете свое решение.

Спасибо