#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. Для меня это самый простой и быстрый способ сделать то, что вы хотите. Я собираюсь немного поискать и попытаться найти другой способ. Не забудьте принять лучший ответ.