public void XlsxTypeCTest() { string xlsxFile = Path.Combine(TestUtil.GetTestDataPath(), "c_sample.xlsx"); IAdapter adapter = AsposeExcelAdapter.CreateAdapter(xlsxFile); var columnOrdering = TableHeaderRecognizer.ExamineTableBeginning(adapter); SmartParser.Lib.Parser parser = new SmartParser.Lib.Parser(adapter); Declaration declaration = parser.Parse(columnOrdering, false, null); string comments = ""; string output = DeclarationSerializer.Serialize(declaration, ref comments); }
static Declaration BuildDeclarations(IAdapter adapter, string inputFile) { Declaration declaration; string inputFileName = Path.GetFileName(inputFile); SmartParser.Lib.Parser parser = new SmartParser.Lib.Parser(adapter, !SkipRelativeOrphan); if (adapter.CurrentScheme == default) { SmartParser.Lib.TableHeader?columnOrdering = null; try { columnOrdering = TableHeaderRecognizer.ExamineTableBeginning(adapter); LastGoodOrdering = columnOrdering; } catch (Exception ex) { Logger.Info(ex.Message); if (LastGoodOrdering != null) { Logger.Info("use the last known table header scheme"); columnOrdering = LastGoodOrdering; columnOrdering.FirstDataRow = 0; } else { throw ex; } } // Try to extract declaration year from file name if we weren't able to get it from document title if (!columnOrdering.Year.HasValue) { columnOrdering.Year = TextHelpers.ExtractYear(inputFileName); } Logger.Info("Column ordering: "); foreach (var ordering in columnOrdering.ColumnOrder) { Logger.Info(ordering.ToString()); } Logger.Info(String.Format("OwnershipTypeInSeparateField: {0}", columnOrdering.OwnershipTypeInSeparateField)); if (ColumnsOnly) { return(null); } if (ColumnToDump != DeclarationField.None) { DumpColumn(adapter, columnOrdering, ColumnToDump); return(null); } if (columnOrdering.Title != null) { Logger.Info("Declaration Title: {0} ", columnOrdering.Title); } if (columnOrdering.Year != null) { Logger.Info("Declaration Year: {0} ", columnOrdering.Year.Value); } if (columnOrdering.MinistryName != null) { Logger.Info("Declaration Ministry: {0} ", columnOrdering.MinistryName); } if (!columnOrdering.HasNameColumn()) { // TODO сначала поискать первый section_row и проверить, именно там может быть ФИО // https://declarator.org/admin/declarations/jsonfile/186842/change/ throw new SmartParserException("Insufficient fields: No any of Declarant Name fields found."); } if (!(columnOrdering.ContainsField(DeclarationField.DeclarantIncome) || columnOrdering.ContainsField(DeclarationField.DeclarantIncomeInThousands) || columnOrdering.ContainsField(DeclarationField.DeclaredYearlyIncome) || columnOrdering.ContainsField(DeclarationField.DeclaredYearlyIncomeThousands))) { if (!SmartParser.Lib.TableHeader.SearchForFioColumnOnly) { throw new SmartParserException("Insufficient fields: No any of Declarant Income fields found."); } } declaration = parser.Parse(columnOrdering, BuildTrigrams, UserDocumentFileId); SaveRandomPortionToToloka(adapter, columnOrdering, declaration, inputFile); } else { declaration = adapter.CurrentScheme.Parse(parser, UserDocumentFileId); } return(declaration); }