Skywatch21 Ответов: 2

C# сохранить непосредственно в папку рабочего стола без диалога сохранения файла


До сих пор у меня есть этот код, который сохраняется с помощью SaveFileDialogue, но то, что я ищу, - это молчаливое сохранение в папку рабочего стола:

//Word to PDF Conversion
        private void button4_Click_1(object sender, EventArgs e)
        {
            Microsoft.Office.Interop.Word.Application appWord = new Microsoft.Office.Interop.Word.Application();
            wordDocument = appWord.Documents.Open(textBox4.Text);
            SaveFileDialog sfd = new SaveFileDialog();
            sfd.Filter = "PDF Documents|*.pdf";
            sfd.FileName = textBox4.Text;
            try
            {
                if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    string ext = System.IO.Path.GetExtension(sfd.FileName);
                    switch (ext)
                    {
                        case ".pdf":
                            wordDocument.ExportAsFixedFormat(sfd.FileName, WdExportFormat.wdExportFormatPDF);
                            break;
                        case ".docx":
                            wordDocument.ExportAsFixedFormat(sfd.FileName, WdExportFormat.wdExportFormatPDF);
                            break;

                    }
                    textBox4.Text = sfd.FileName;
                }
                System.Windows.Forms.MessageBox.Show("Files Converted Successfully..");
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
            }
            System.Diagnostics.Process.Start(sfd.FileName);
            Dispose();
        }

        public Microsoft.Office.Interop.Word.Document wordDocument { get; set; }


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

Попробовал добавить ЮФО.FileName = textBox4. Text; в диалоге сохранения файла, но это только добавляет путь к файлу в диалог сохранения файла

2 Ответов

Рейтинг:
2

Dave Kreskowiak

Так что просто удалите весь код, который имеет какое-либо отношение к SaveFileDialog. Единственное, для чего вы используете SFD, - это получить путь к файлу от пользователя. Вот и все. Ничего больше.

Все, что вам нужно сделать, это указать имя файла и формат ExportAsFixedFormat, чтобы получить Word для сохранения файла.

Вы, конечно же, должны получить путь к папке рабочего стола пользователя, что очень просто, если вы используете Окружающая среда.GetFolderPath()[^]. Специальная папка, которую вы передаете, - это DesktopDirectory. Это даст вам путь к папке рабочего стола пользователя. Создайте свой полный путь к файлу, который вы хотите сохранить, используя этот путь и Ваше имя файла, переданное в Path.Объединять().


Рейтинг:
1

Karthik_Mahalingam

попробовать это

Microsoft.Office.Interop.Word.Application appWord = new Microsoft.Office.Interop.Word.Application();
          wordDocument = appWord.Documents.Open(textBox4.Text);
           string desktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
          string file = textBox4.Text;
          string path = Path.Combine( desktop , file);

          try
          {
                  string ext = System.IO.Path.GetExtension(path);
                  switch (ext)
                  {
                      case ".pdf":
                          wordDocument.ExportAsFixedFormat(path, WdExportFormat.wdExportFormatPDF);
                          break;
                      case ".docx":
                          wordDocument.ExportAsFixedFormat(path, WdExportFormat.wdExportFormatPDF);
                          break;

                  }

              }


Предупреждение: вы объявили public Microsoft.Office.Interop.Word.Document wordDocument { get; set; } это снаружи, всегда правильно распоряжайтесь этим объектом, иначе новый экземпляр Word будет сидеть в вашем TaskManager .


Philippe Mori

Всегда использовать Path.Combine при слиянии пути.

Karthik_Mahalingam

Спасибо
обновили решение.

Skywatch21

Получение следующее сообщение об ошибке:

Необработанное исключение типа ' System. Runtime.InteropServices.Исключение comexception произошел в pdftoimg.exe

Дополнительная информация: мы не можем сохранить этот файл, потому что он доступен только для чтения.

Чтобы сохранить изменения, вам нужно будет сохранить документ с новым именем или в другом месте

Я получаю это на линии:

&ЛТ;заранее Ланг="C#"и&ГТ;частная button4_Click_1 недействительным(объект отправителя, EventArgs в электронной)
{
Microsoft.Офис.- Взаимодействия.Слово.Приложение appWord = новый Microsoft.Офис.- Взаимодействия.Слово.Приложение();
wordDocument = appWord.Документы.Открыть (textBox4. Text);
строка desktop = Environment.GetFolderPath(Environment.Специальная папка.Рабочий стол);
строка файла = textBox4.Текст;
string path = путь.Комбинировать (рабочий стол, файл);

пробовать
{
строки ВН = система.ИО.Путь.GetExtension(путь);
переключатель (ext)
{
дело". pdf":
документа Word.ExportAsFixedFormat(путь, WdExportFormat.wdExportFormatPDF);
перерыв;
case.docx;:
документа Word.ExportAsFixedFormat(путь, WdExportFormat.wdExportFormatPDF);
перерыв;


}

}
наконец
{

}
}< / pre>

Skywatch21

Получение следующее сообщение об ошибке:

Необработанное исключение типа ' System. Runtime.InteropServices.Исключение comexception произошел в pdftoimg.exe

Дополнительная информация: мы не можем сохранить этот файл, потому что он доступен только для чтения.

Чтобы сохранить изменения, вам нужно будет сохранить документ с новым именем или в другом месте

Я получаю это на линии:

&ЛТ;заранее Ланг="C#"и&ГТ;частная button4_Click_1 недействительным(объект отправителя, EventArgs в электронной)
{
Microsoft.Офис.- Взаимодействия.Слово.Приложение appWord = новый Microsoft.Офис.- Взаимодействия.Слово.Приложение();
wordDocument = appWord.Документы.Открыть (textBox4. Text);
строка desktop = Environment.GetFolderPath(Environment.Специальная папка.Рабочий стол);
строка файла = textBox4.Текст;
string path = путь.Комбинировать (рабочий стол, файл);

пробовать
{
строки ВН = система.ИО.Путь.GetExtension(путь);
переключатель (ext)
{
дело". pdf":
документа Word.ExportAsFixedFormat(путь, WdExportFormat.wdExportFormatPDF);
перерыв;
case.docx;:
документа Word.ExportAsFixedFormat(путь, WdExportFormat.wdExportFormatPDF);
перерыв;


}

}
наконец
{

}
}< / pre>

Karthik_Mahalingam

там написано
Мы не можем сохранить этот файл, потому что он доступен только для чтения
Чтобы сохранить изменения, вам нужно будет сохранить документ с новым именем или в другом месте

очень прямолинейное сообщение.

Skywatch21

Мне нужно сохранить / сохранить файлы в папке на рабочем столе

Karthik_Mahalingam

да, вы должны сначала сохранить его, а затем отредактировать.