Пример #1
0
        public async Task ProcessSheet(Stream file)
        {
            using (SpreadsheetDocument mySpreadsheet = SpreadsheetDocument.Open(file, false))
            {
                S sheets = mySpreadsheet.WorkbookPart.Workbook.Sheets;

                Task[] tasks = new Task[sheets.Count()];

                int i = 0;
                // For each sheet, display the sheet information.
                foreach (E sheet in sheets)
                {
                    var sheetName = string.Empty;
                    try
                    {
                        sheetName = sheet.GetAttributes().First(c => c.LocalName == "name").Value;
                        var sheetId = sheet.GetAttributes().First(c => c.LocalName == "id").Value;
                        log.Info($"Sheet Founded: name: {sheetName}, id: {sheetId}");

                        tasks[i] = ReadExcelSheet(mySpreadsheet, sheetId);
                        i++;
                        log.Info($"Sheet {sheetName} add to queue process");
                    }
                    catch (Exception ex)
                    {
                        log.Error($"Error on process sheet {sheetName} -> {ex}");
                    }
                }

                Task.WaitAll(tasks);
                log.Info($"End of file process");
            }
        }