コード例 #1
0
        public FileImporterFactory(ImportFile importFile, IImportFileStructure importFileStructure)
        {
            _importFile          = importFile;
            _importFileStructure = importFileStructure;

            Validate();
        }
コード例 #2
0
        public static Table ImportFromFile(HttpPostedFileBase httpPostedFileBase, IImportFileStructure importFileStructure)
        {
            var file = new ImportFile(httpPostedFileBase);
            var fileImporterFactory = new FileImporterFactory(file, importFileStructure);

            return(fileImporterFactory.GetDataTable());
        }
コード例 #3
0
        public DataStructure.Table.Table GetDataTable(ImportFile importFile, IImportFileStructure importFileStructure)
        {
            var result = new DataStructure.Table.Table();

            try
            {
                List <SharedStringItem> stringValues;
                IList <Row>             rows;

                using (var document = SpreadsheetDocument.Open(importFile.FileStream, false))
                {
                    rows = GetRows(document, importFileStructure.SkipRowCount);
                    if (!rows.Any())
                    {
                        return(result);
                    }

                    stringValues = document.WorkbookPart.SharedStringTablePart.SharedStringTable.Elements <SharedStringItem>().ToList();
                }

                foreach (var row in rows)
                {
                    var newRow = GetDataFromRow(stringValues, row, importFileStructure.Columns);
                    result.AddRow(newRow);
                }

                return(result);
            }
            catch (FileFormatException)
            {
                result.MarkAsInValid(ErrorMessage.IncorrectXlsxFileFormat);
            }
            catch (Exception ex)
            {
                result.MarkAsInValid(ErrorMessage.UnexpectedError);
                Logs.Logger.Error(ex);
            }

            return(result);
        }
コード例 #4
0
        public Table GetDataTable(ImportFile importFile, IImportFileStructure importFileStructure)
        {
            var result = new Table();

            try
            {
                HSSFWorkbook workbook;
                using (var stream = importFile.FileStream)
                {
                    workbook = new HSSFWorkbook(stream);
                }

                _formulaEvaluator = new HSSFFormulaEvaluator(workbook);
                _dataFormatter    = new HSSFDataFormatter();

                var rows = GetRows(workbook, importFileStructure);
                if (!rows.Any())
                {
                    return(result);
                }

                foreach (var row in rows)
                {
                    result.AddRow(row);
                }

                return(result);
            }
            catch (FileFormatException)
            {
                result.MarkAsInValid(ErrorMessage.IncorrectXlsFileFormat);
            }
            catch (Exception ex)
            {
                result.MarkAsInValid(ErrorMessage.UnexpectedError);
                Logs.Logger.Error(ex);
            }

            return(result);
        }
コード例 #5
0
        public Table GetDataTable(ImportFile importFile, IImportFileStructure importFileStructure)
        {
            var result = new Table();

            try
            {
                using (var csvReader = new TextFieldParser(importFile.FileStream))
                {
                    csvReader.SetDelimiters(importFileStructure.Delimeter);
                    csvReader.HasFieldsEnclosedInQuotes = true;
                    while (!csvReader.EndOfData)
                    {
                        var lineNumber = (int)csvReader.LineNumber;
                        if (lineNumber <= importFileStructure.SkipRowCount)
                        {
                            csvReader.ReadFields();
                            continue;
                        }
                        var row = csvReader.ReadFields() ?? new string[importFileStructure.Columns.Count];

                        var cells = importFileStructure.Columns.Select(column => new Cell(column, lineNumber, row[column.ColumnIndexInFile])).ToList();
                        result.AddRow(new Row(lineNumber, cells));
                    }
                }
                return(result);
            }
            catch (FileFormatException)
            {
                result.MarkAsInValid(ErrorMessage.IncorrectCsvFileFormat);
            }
            catch (Exception ex)
            {
                result.MarkAsInValid(ErrorMessage.UnexpectedError);
                Logs.Logger.Error(ex);
            }

            return(result);
        }
コード例 #6
0
        private IList <Row> GetRows(HSSFWorkbook workbook, IImportFileStructure importFileStructure)
        {
            if (workbook == null || workbook.NumberOfSheets == 0)
            {
                return(new List <Row>());
            }

            var sheet    = workbook.GetSheetAt(0);
            var rows     = new List <Row>();
            var rowIndex = importFileStructure.SkipRowCount;

            for (; rowIndex <= sheet.LastRowNum; rowIndex++)
            {
                var row = sheet.GetRow(rowIndex);
                if (row == null)
                {
                    continue;
                }
                var newRow = GetDataFromRow(row, importFileStructure.Columns);
                rows.Add(newRow);
            }

            return(rows);
        }