/// <summary> /// создать XLS-файлы из бюллетеней /// </summary> private void ProcessDecompressedBulletins() { var futuresSummary = new List <CMEFuturesSummary>(); StreamWriter sw = null; try { foreach (var fileName in Directory.GetFiles( string.Format("{0}\\{1}", ExecutablePath.ExecPath, FolderTemp), "Section*.pdf")) { // получить номер секции var fileNameOnly = Path.GetFileNameWithoutExtension(fileName); if (string.IsNullOrEmpty(fileNameOnly)) { continue; } var endIndex = fileNameOnly.IndexOf('_'); var startIndex = "Section".Length; var sectionString = fileNameOnly.Substring(startIndex, endIndex - startIndex); // отбор только тех бюллетеней, что перечислены в bulletinInfo if (!bulletinInfo.sectionsToParse.Contains(sectionString)) { continue; } // преобразовать в текст var fileNameTxt = fileName.Replace(".pdf", ".txt"); try { PdfConverter.PdfFileToText(fileName, fileNameTxt); } catch (Exception ex) { Logger.ErrorFormat("Ошибка в PdfFileToText({0}): {1}", fileName, ex); throw; } // преобразовать в XLS var parser = new CMEDocumentParser(fileNameTxt, bulletinInfo, futuresSummary); if (!parser.Parsed) { continue; } // создать поток вывода (один на все файлы) if (sw == null) { var nameXls = string.Format("{0}\\{1}\\_{2:ddMMyyyy}.xls", ExecutablePath.ExecPath, FolderTemp, parser.DocumentDate); sw = new StreamWriter(nameXls, false, Encoding.Unicode); } parser.WriteTablesInExcelFormat(sw); // записать информацию по фьючерсам в отдельный файл if (futuresSummary.Count > 0) { var minDate = futuresSummary.Min(fs => fs.DocumentDate); var maxDate = futuresSummary.Max(fs => fs.DocumentDate); var sumFileName = string.Format("{0}\\{1}\\_{2:ddMMyy}_{3:ddMMyy}.txt", ExecutablePath.ExecPath, FolderTemp, minDate, maxDate); CMEDocumentParser.WriteFutureSummary(sumFileName, futuresSummary); } } } finally { if (sw != null) { sw.Close(); } } }
/// <summary> /// создать XLS-файлы из бюллетеней /// </summary> private void ProcessDecompressedBulletins() { var futuresSummary = new List<CMEFuturesSummary>(); StreamWriter sw = null; try { foreach (var fileName in Directory.GetFiles( string.Format("{0}\\{1}", ExecutablePath.ExecPath, FolderTemp), "Section*.pdf")) { // получить номер секции var fileNameOnly = Path.GetFileNameWithoutExtension(fileName); if (string.IsNullOrEmpty(fileNameOnly)) continue; var endIndex = fileNameOnly.IndexOf('_'); var startIndex = "Section".Length; var sectionString = fileNameOnly.Substring(startIndex, endIndex - startIndex); // отбор только тех бюллетеней, что перечислены в bulletinInfo if (!bulletinInfo.sectionsToParse.Contains(sectionString)) continue; // преобразовать в текст var fileNameTxt = fileName.Replace(".pdf", ".txt"); try { PdfConverter.PdfFileToText(fileName, fileNameTxt); } catch (Exception ex) { Logger.ErrorFormat("Ошибка в PdfFileToText({0}): {1}", fileName, ex); throw; } // преобразовать в XLS var parser = new CMEDocumentParser(fileNameTxt, bulletinInfo, futuresSummary); if (!parser.Parsed) continue; // создать поток вывода (один на все файлы) if (sw == null) { var nameXls = string.Format("{0}\\{1}\\_{2:ddMMyyyy}.xls", ExecutablePath.ExecPath, FolderTemp, parser.DocumentDate); sw = new StreamWriter(nameXls, false, Encoding.Unicode); } parser.WriteTablesInExcelFormat(sw); // записать информацию по фьючерсам в отдельный файл if (futuresSummary.Count > 0) { var minDate = futuresSummary.Min(fs => fs.DocumentDate); var maxDate = futuresSummary.Max(fs => fs.DocumentDate); var sumFileName = string.Format("{0}\\{1}\\_{2:ddMMyy}_{3:ddMMyy}.txt", ExecutablePath.ExecPath, FolderTemp, minDate, maxDate); CMEDocumentParser.WriteFutureSummary(sumFileName, futuresSummary); } } } finally { if (sw != null) sw.Close(); } }