public FileImporterFactory(ImportFile importFile, IImportFileStructure importFileStructure) { _importFile = importFile; _importFileStructure = importFileStructure; Validate(); }
public static Table ImportFromFile(HttpPostedFileBase httpPostedFileBase, IImportFileStructure importFileStructure) { var file = new ImportFile(httpPostedFileBase); var fileImporterFactory = new FileImporterFactory(file, importFileStructure); return(fileImporterFactory.GetDataTable()); }
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); }
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); }
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); }
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); }