Приложение Windows Forms в общем расположении, сохраните файл локально

#c# #winforms #export-to-excel

#c# #winforms #экспорт в Excel

Вопрос:

Моя проблема в том, что у меня есть приложение Windows forms, которое расположено в общем расположении, которое выполняет некоторую логику, и в конце мне нужно экспортировать данные в файл Excel.

Но файл Excel следует экспортировать на компьютер, на котором зарегистрирован пользователь, а не на общий сервер, на котором размещено приложение…

Есть идеи?

Пример ситуации: расположение приложения находится в 192.168.1.150AppNameApp.exe

У меня есть доступ к этой общей папке, и я запускаю exe-файл оттуда. Мне нужно приложение для экспорта файла Excel на мой компьютер на моем рабочем столе …. как?

Комментарии:

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

2. Я отредактировал вопрос и добавил пример, чтобы было более понятно

3. Я добавил код к своему ответу для получения папки на рабочем столе

Ответ №1:

Если вы считаете, что папка «Мои документы» является подходящим местом для сохранения файла Excel, то этот код поможет вам указать путь:

var folderPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

или, если вы хотите поместить файл на рабочий стол:

var folderPath = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)

Код работает независимо от того, где находится папка «Мои документы» (или «Рабочий стол») пользователя (C:, D:, сетевой ресурс и т.д.) Или какая языковая версия используется в его установке Windows.

Для объединения с именем файла, основанным на времени:

 var fileName = $"your_file_{DateTime.Now:yyMMddHHmmss}.xlsx";
var fullPath = Path.Combine(folderPath, fileName);
  

Я часто использую имена файлов, основанные на времени, чтобы не перезаписывать, если есть предыдущий файл. (Оно, конечно, было бы перезаписано, если бы было создано в ту же секунду)

Если вы хотите, чтобы имя файла гарантированно было уникальным, вы можете использовать Guid вместо DateTime :

 var fileName = $"your_file_{Guid.NewGuid():N}.xlsx";
  

Если файл используется просто «в программе», вы также можете сохранить его в папке «Временные файлы». Чтобы получить путь к папке временных файлов, которую вы пишете var folderPath = Path.GetTempPath()

Надеюсь, это поможет!

Комментарии:

1. Я попробую это решение позже сегодня и дам вам знать, спасибо.

Ответ №2:

Почему бы вам просто не воспользоваться диалогом сохранения файла и не сохранить файл Excel там, где вы хотите? Что-то вроде этого:

 private void SaveFile_FileOk(object sender, CancelEventArgs e)
{
   string name = SaveFile.FileName;
   string[] savearray = new string[] { "some test:" }
   File.WriteAllLines(name, savearray);
   //this is just an example, your excel file goes here.
}
  

И нажмите свою кнопку, чтобы сохранить:

 SaveFile.ShowDialog();
  

Вы можете выбрать путь, по которому вы хотите сохранить…

Комментарии:

1. Да, это было бы альтернативой, если я не найду решение

2. Для меня это самый простой и быстрый способ сделать то, что вы хотите. Я собираюсь немного поискать и попытаться найти другой способ. Не забудьте принять лучший ответ.