Member 12695777 Ответов: 0

Разбор электронной почты в 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. Спасибо.

0 Ответов