Member 13123405 Ответов: 1

Как извлечь путь к файлу из текстового файла, если он есть, или ввести путь к файлу вручную, если его нет, используя C#


У меня есть текстовый файл с информацией:

Template PUC
C# Assignment.
Path=E:\Project_Excel.xlsx
Path= EMailId=abc@xyz.com; def@xyz.com; ghi@xyz.com


Я разбираю текстовый файл с помощью C# и ищу "Path=", извлекаю путь после " = " и открываю его для дальнейшей работы. Если "Path=" не имеет упомянутого пути, то он должен попросить пользователя ввести путь вручную в окне консоли. Может ли кто-нибудь, пожалуйста, помочь мне, где я иду не так?

Что я уже пробовал:

static void Main(string[] args)
        {
            try
            {
                string file = "E:\\Project_PU.txt";
                StreamReader sr = new StreamReader(file);
                String lines = sr.ReadToEnd();  

                int x = lines.IndexOf('=');
                int y = lines.IndexOf('_');
                string x = lines.Substring(x + 1, y - x);


                string mail = File.ReadAllLines(file).FirstOrDefault(line => line.StartsWith("EmailId="));
                string sString = mail;
                string[] sLines = sString.Split(new string[] { "EmailId=", ";" }, StringSplitOptions.RemoveEmptyEntries);


                Excel.Application xlApp;
                Excel.Workbook xlWorkBook;
                Excel.Worksheet xlWorkSheet;
                Excel.Range range;

                long rowCount;
                long rw = 0;
                long cl = 0;

                xlApp = new Excel.Application();

                string path = "";
                Console.WriteLine();
                Console.WriteLine();


                if (File.Exists(path))
                {

                    xlWorkBook = xlApp.Workbooks.Open(path, 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);

Maciej Los

А проблема вот в чем...

1 Ответов

Рейтинг:
2

OriginalGriff

Здесь у вас есть проблемы: ваша часть EmailId не работает, потому что текст в вашем файле плохой, а "EmailId=" не находится в начале строки.
Поэтому начните с двойной проверки формата вашего файла - вероятно, он должен выглядеть не так, а вот так:

Template PUC
C# Assignment.
Path=E:\Project_Excel.xlsx
Path= 
EMailId=abc@xyz.com; def@xyz.com; ghi@xyz.com

Предположив это, попробуйте обработать каждую строку вместо того, чтобы просто искать адреса электронной почты:
string[] lines = File.ReadAllLines(file);
string path = "";
string[] emails = new string[0];
foreach (string line in lines)
    {
    string[] parts = line.Split('=');
    if (parts.Length == 2)
        {
        string type = parts[0].Trim().ToLower();
        string data = parts[1].Trim();
        switch (type)
            {
            case "path":
                if (data != "")
                    {
                    path = data;
                    }
                break;
            case "emailid":
                emails = data.Split(';');
                break;
            }
        }
    }
В конце концов, если path не содержит допустимого пути, спросите пользователя.


Maciej Los

Это даже не приходило мне в голову...
5ед!