/// <summary> /// Получить данные из kad.ru по номеру документа /// </summary> /// <param name="documentNumber"></param> /// <returns></returns> private static WebParserResult ParseDocument(WebParserConfig parserConfig, string documentNumber) { IWebPageParser webParser = new ExcelAddinWebPageParser(); WebParserParams parserParams = new WebParserParams() { DocumentNumber = documentNumber }; var parserResult = webParser.ParseWebSite(parserConfig, parserParams); return(parserResult); }
public WebParserResult ParseWebSite(WebParserConfig parserConfig, WebParserParams parserParam) { string fileNameAddin = this.GetParserPath(); string parserConfigName = parserConfig.AddinConfigName; WebParserResult parserResult = new WebParserResult() { ParserStatus = "Ok", ParserError = "" }; Excel.Application xlApp = null; Excel.Workbook xlWb1 = null; Excel.Workbook xlWb2 = null; Excel.Worksheet xlSht = null; try { // Запустить Application xlApp = new Excel.Application(); // Открыть надстройку xlWb1 = xlApp.Workbooks.Open(fileNameAddin); // Создать лист для ввода данных // Excel.Workbook xlWb2 = xlApp.Workbooks.Open(fileNameExcelWorkbook); xlWb2 = xlApp.Workbooks.Add(); //Excel.Worksheet xlSht = xlWb2.Sheets["Лист1"]; //имя листа в файле xlSht = xlWb2.Sheets[1] as Excel.Worksheet; //имя листа в файле //xlApp.Visible = true; //xlApp.DisplayAlerts = false; int startRowNumber = parserConfig.StartRowNumber; // Вывод заголовка if (startRowNumber > 1) { xlSht.Cells[1, parserConfig.DealNumberColumn].Value = "Номер документа"; xlSht.Cells[1, parserConfig.IsTrackColumn].Value = "Обрабатывать"; } // Заполнение исходных данных на листе xlSht.Cells[startRowNumber, parserConfig.DealNumberColumn].Value = parserParam.DocumentNumber; xlSht.Cells[startRowNumber, parserConfig.IsTrackColumn].Value = "Да"; // Запуск парсера var res = xlApp.Run(@"StartParser", parserConfigName); if (!String.IsNullOrEmpty((string)res)) { throw new Exception((string)res); } object row1 = xlSht.Cells[startRowNumber, parserConfig.ResultNumberColumn].Value; if (row1 == null) { parserResult.ParserStatus = "Not found"; } else { string col2HyperlinkAddress = xlSht.Cells[startRowNumber, parserConfig.DealNumberHyperlinkColumn].Hyperlinks[1].Address; string col3 = xlSht.Cells[startRowNumber, parserConfig.DocumentPdfFolderNameColumn].Value.ToString(); string col4 = xlSht.Cells[startRowNumber, parserConfig.DocumentPdfUrlColumn].Value.ToString(); DateTime col5 = (DateTime)xlSht.Cells[startRowNumber, parserConfig.LastDealDateColumn].Value; parserResult.CardUrl = col2HyperlinkAddress; parserResult.LastDealDate = col5; parserResult.DocumentPdfUrl = col4; parserResult.DocumentPdfFolderName = col3; parserResult.HasAttachment = string.IsNullOrEmpty(col4) ? false : true; parserResult.DocumentPfdPath = GetDocumentFullPath(parserConfig, parserResult, fileNameAddin); } } catch (Exception exc) { parserResult.ParserStatus = "Error"; parserResult.ParserError = exc.Message; } finally { if (xlWb2 != null) { xlWb2.Saved = true; } xlApp.DisposeChildInstances(); if (xlApp != null) { xlApp.Quit(); //закрываем Excel xlApp.Dispose(); } } return(parserResult); }