Ejemplo n.º 1
0
        public int ReadExcelFileDOM(SpreadsheetDocument spreadsheetDocument)
        {
            List <IDTO> result            = new List <IDTO>();
            bool        thereIsValidSheet = false;

            if (spreadsheetDocument != null)
            {
                WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart;

                SharedStringTablePart sstpart = workbookPart.GetPartsOfType <SharedStringTablePart>().First();
                SharedStringTable     sst     = sstpart.SharedStringTable;

                foreach (var worksheetPartItem in workbookPart.WorksheetParts)
                {
                    // iterate over Sheets
                    var sheets = worksheetPartItem.Worksheet.Elements <SheetData>();
                    for (int i = 0; i < sheets.Count(); i++)
                    {
                        var sheetDataitem = sheets.ElementAt(i);
                        var rows          = sheetDataitem.Elements <Row>();
                        if (rows.Count() <= 1)
                        {
                            continue;
                        }

                        for (int rowCounter = 0; rowCounter < rows.Count(); rowCounter++)
                        {
                            if (rowCounter == 0)
                            {
                                continue;
                            }

                            var r = rows.ElementAt(rowCounter);

                            IDTO form  = _dTO;
                            var  cells = r.Elements <Cell>();
                            var  count = cells.Count();
                            if (count == form.PropertyCont)
                            {
                                thereIsValidSheet = true;
                            }
                            else
                            {
                                continue;
                            }

                            for (int cellCounter = 0; cellCounter < count; cellCounter++)
                            {
                                var    cell     = cells.ElementAt(cellCounter);
                                string cellText = "";

                                if ((cell.DataType != null) && (cell.DataType == CellValues.SharedString))
                                {
                                    int    ssid = int.Parse(cell.CellValue.Text);
                                    string str  = sst.ChildElements[ssid].InnerText;
                                    cellText = str;
                                }
                                else if (cell.DataType != null && cell.DataType == CellValues.Date)
                                {
                                    int    ssid = int.Parse(cell.CellValue.Text);
                                    string str  = sst.ChildElements[ssid].InnerText;
                                    cellText = str;
                                }
                                else
                                {
                                    cellText = cell?.CellValue?.Text;
                                }

                                form.Map(cellText, cellCounter);
                            }

                            result.Add(form);
                        }
                    }
                }
            }

            if (thereIsValidSheet == false)
            {
                throw new GeneralException((int)ErrorCodeEnum.InvalidDonatorExcelSheet);
            }

            //int addedEntities = this.Add(result);

            return(0);//addedEntities;
        }