Разбор электронной почты в excel
Я пытаюсь разобрать определенные данные в файле Microsoft Outlook email .pst с помощью C#, чтобы создать программу для помещения результатов данных в электронную таблицу excel.
Ниже приведен фрагмент того, как выглядит каждый заголовок и тело письма. (имена были изменены по очевидным причинам.)
______________________________________________________________________ Sent: Wednesday, February 22, 2017 8:51 AM To: John Dillinger <john.dillinger@outlook.com> Subject: RE: Night Processing Timeline - February 15, 2017 Company1: Data files available on FTP server at 1:05 AM Data import completion notice from Q1 received at 1:43 AM Transaction Volume: 233,263 Company2: Data files available on FTP server at 2:31 AM Data import completion notice from Q1 received at 3:40 AM Transaction Volume: 352,294 ______________________________________________________________________
Данные, которые я ищу (в синем тексте выше), должны быть разбиты на 5 столбцов, отображающих результаты для обеих компаний.
Столбцы должны выглядеть так на листе excel.
Date Company FTP Time Q2 Time Quantity 2/15/2017 Company1 1:05 AM 1:43 AM 15423 2/15/2017 Company2 2:31 AM 3:40 AM 782654В приведенном выше фрагменте excel “количество “ = "объем транзакции" из сообщения электронной почты.
Парсер должен получить дату из "темы письма“, а не из строки” отправлено", а компанию, количество и время из основной части письма, игнорируя все остальное.
Я новичок в программировании на C# и никогда не создавал парсер. Я был бы признателен за любую помощь в этом вопросе.
Спасибо.
Если вам нужно дополнительное разъяснение моей цели, пожалуйста, напишите мне на pailwriter по адресу [адрес электронной почты удален]
Что я уже пробовал:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; using Microsoft.Office.Interop.Excel; namespace ConsoleApplication2 { /// <summary> /// The program. /// </summary> internal class Program { #region Methods /// <summary> /// The export data from a text file to an excel file. /// </summary> /// <param name="excellWorkSheet" /> /// The excell work sheet. /// /// <param name="fileName" /> /// The file name. /// private static void AddDataFromFile(_Worksheet excellWorkSheet, string fileName) { if (excellWorkSheet == null) { throw new ArgumentNullException("excellWorkSheet"); } var lines = File.ReadAllLines(fileName); var rowCounter = 1; foreach (var line in lines) { var columnCounter = 1; var values = line.Split(' '); foreach (var value in values) { excellWorkSheet.Cells[rowCounter, columnCounter] = value; columnCounter++; } rowCounter++; } } /// <summary> /// The close quit and release. /// </summary> /// <param name="excellApp" /> /// The excell app. /// /// <param name="excellWorkSheet" /> /// The excell work sheet. /// /// <param name="excellWorkBook" /> /// The excell work book. /// /// <param name="misValue" /> /// The mis value. /// private static void CloseQuitAndRelease( Application excellApp, Worksheet excellWorkSheet, Workbook excellWorkBook, object misValue) { excellWorkBook.Close(true, misValue, misValue); excellApp.Quit(); ReleaseObject(excellApp); ReleaseObject(excellWorkBook); ReleaseObject(excellWorkSheet); } /// <summary> /// The main. /// </summary> /// <param name="args" /> /// The args. /// private static void Main(string[] args) { object misValue = System.Reflection.Missing.Value; var excellApp = new Application(); var excellWorkBook = excellApp.Workbooks.Add(misValue); var excellWorkSheet = (Worksheet)excellWorkBook.Worksheets.Item[1]; /* Data(textFile to excellWorkSheet); */ const string InputfileName = "emailFile.txt"; AddDataFromFile(excellWorkSheet, InputfileName); Safe(misValue, excellWorkBook, "emailFile.xls"); CloseQuitAndRelease(excellApp, excellWorkSheet, excellWorkBook, misValue); Console.WriteLine("File created !"); Console.WriteLine("File placed in C:_Users_alove_Documents"); Console.ReadLine(); } /// <summary> /// The release object. /// </summary> /// <param name="obj" /> /// The obj. /// private static void ReleaseObject(object obj) { try { System.Runtime.InteropServices.Marshal.ReleaseComObject(obj); } catch (Exception ex) { Console.WriteLine("Unable to release the Object " + ex); } finally { GC.Collect(); } } /// <summary> /// The safe. /// </summary> /// <param name="misValue" /> /// The mis value. /// /// <param name="excellWorkBook" /> /// The excell work book. /// /// <param name="excellfilename" />The name of the excell file private static void Safe(object misValue, Workbook excellWorkBook, string excellfilename) { excellWorkBook.SaveAs( excellfilename, XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); } #endregion } }
BillWoodruff
Что вы делаете сейчас, чтобы отладить вашу программу и изменить ее поведение ? Опишите любые конкретные ошибки.
[no name]
Спасибо за вашу заботу и помощь. Код, который я использую (перечисленный выше), кажется, извлекает данные из плоского файла (документа word) и помещает их в лист excel, но он просто выбрасывает весь текст без определенного порядка. Я пытаюсь получить только определенные части и поместить их в определенные столбцы и строки на листе excel. Спасибо.