Как сохранить текстовый документ в папке, созданной Directory.CreateDirectory (docfile_path)? - PullRequest
0 голосов
/ 24 января 2020

Этот блок кода выдает ошибку, называемую недействительным именем файла.

Я хочу создать папку с именем «test», внутри которой будет другая папка с именем «date» сегодняшней даты, я хочу чтобы сохранить слово word в этой папке с датами, пожалуйста, помогите.

public string File_path;
public string docfile_path;
public string filename;

private void button1_Click(object sender, EventArgs e)
 {

              string time = DateTime.Now.ToString("HH.mm.ss");
              string date = DateTime.Today.ToShortDateString();

               docfile_path = File_path+ "test" + date;
               Directory.CreateDirectory(docfile_path);

                 filename = docfile_path + "worddoc"+"-" +".docx";


    Word.Application app = new Word.Application();
                Word.Document doc = new Word.Document();
                try
                {
                    doc = app.Documents.Open(filename);
                }
                catch
                {

                }

                Word.Paragraph oPara1;
                oPara1 = doc.Content.Paragraphs.Add();
                oPara1.Range.Text = "Test Result";
                oPara1.Range.Font.Bold = 1;
                oPara1.Format.SpaceAfter = 24;
                oPara1.Range.InsertParagraphAfter();
                oPara1.Range.InsertParagraphAfter();
                 Word.Paragraph oPara2;
                oPara2 = doc.Content.Paragraphs.Add();
                oPara2.Range.Text = "Test Name";
                oPara2.Range.Font.Bold = 1;
                oPara2.Format.SpaceAfter = 24;
                oPara2.Range.InsertParagraphAfter();

                doc.SaveAs2(filename);
                doc.Close();
                doc = null;

                app.Quit();
                app = null;

    }

1 Ответ

1 голос
/ 24 января 2020

Удивительно, но этот код компилируется и запускается, но результат не тот, который вы, вероятно, хотели.

В этом коде есть пара ошибок:

1.Вы не можете добавлять строки таким образом, чтобы создать путь, путь должен быть создан с символом '/' между каталогами. это допустимый путь:

string path = @"C:\Users\username\Desktop\Games";

это не так:

string path = @"C:UsersusernameDesktopGames";

вы можете исправить это с помощью функции Path.Combine следующим образом:

docfile_path = Path.Combine(File_path , "test" , date);

убедитесь в этом для всех строк пути (включая File_path, значение которого не указано в приведенном выше коде).

2. вам следует использовать

Document doc = app.Documents.Add();

для создания нового документа Word а не

Document doc = new Document();

3.В качестве строковой даты следует использовать другой формат, DateTime.ToShortDateString () делит дату с символом '/', который создает новые папки. попробуйте использовать:

string date = DateTime.Today.ToString("dd.MM.yyyy");

4.Я не вижу причин для строки

doc = app.Documents.Open(filename);

Вы пытаетесь открыть файл, который вы намереваетесь создать?

вот код, который я использовал:

        string File_path = @"C:\Users\yakir\Desktop"; 
        string docfile_path;
        string filename;

        string time = DateTime.Now.ToString("HH.mm.ss");
        string date = DateTime.Today.ToString("dd.MM.yyyy");

        docfile_path = Path.Combine(File_path , "test" , date);
        Directory.CreateDirectory(docfile_path);

        filename = Path.Combine(docfile_path, "worddoc" + "-" + ".docx");


        Application app = new Application();
        Document doc = app.Documents.Add();

        Paragraph oPara1;
        oPara1 = doc.Content.Paragraphs.Add();
        oPara1.Range.Text = "Test Result";
        oPara1.Range.Font.Bold = 1;
        oPara1.Format.SpaceAfter = 24;
        oPara1.Range.InsertParagraphAfter();
        oPara1.Range.InsertParagraphAfter();
        Paragraph oPara2;
        oPara2 = doc.Content.Paragraphs.Add();
        oPara2.Range.Text = "Test Name";
        oPara2.Range.Font.Bold = 1;
        oPara2.Format.SpaceAfter = 24;
        oPara2.Range.InsertParagraphAfter();

        doc.SaveAs2(filename);
        doc.Close();
        doc = null;

        app.Quit();
        app = null;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...