Сохранение превосходства в клиентах Машина с использованием Interop - PullRequest
1 голос
/ 03 ноября 2011

Я использую Interop Excel для автоматизации Excel в своем коде C #, но во время его сохранения я хочу, чтобы он выдавал пользователю всплывающее окно (так же, как мы получаем при загрузке файла из Интернета с возможностью открытия с помощью и сохранить)

Я попробовал следующее, но он сохраняет его только на жестком диске сервера

xlWorksheet.Save();
xlWorksheet.SaveAs(parameters);

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

Ответы [ 3 ]

1 голос
/ 03 ноября 2011

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

public FilePathResult GetFile()
{
    string name = System.IO.Path.GetTempPath()+Guid.NewGuid().ToString()+".xls";
    // do the work
    xlWorksheet.Save(name);
    return File(name, "Application/x-msexcel");
}

Отредактировано для сохранения файла во временной папке.Помните, что это не гарантирует очистку файла.

0 голосов
/ 03 ноября 2011

вы, вероятно, ищете диалог сохранения / открытия файла, такой как этот: http://msdn.microsoft.com/en-us/library/system.windows.forms.savefiledialog%28v=VS.85%29.aspx они открывают диалог, спрашивающий вас, где сохранить файл, и после выбора местоположения эта информация возвращается в вашу программу, так чтоВы можете сохранить файл там.

0 голосов
/ 03 ноября 2011

Я не знаю, поможет ли это вам.Но однажды я написал WebService, который возвращает мой xls как байтовый массив, и мое клиентское приложение анализирует его обратно в xls

public byte[] doSomething() { 
   try {
      var xl = new ExcelWorksheet();
      //...blablabla...
      xl.SaveAs(parameters...);
      if (File.Exists(pathOfXlsDoc)) return File.ReadAllBytes(pathOfXlsDoc);
      return null;
   } finally {
      if (File.Exists) File.Delete(pathOfXlsDoc);
   }
}


----------

В клиентском приложении это выглядит так:

private void BuildXls() {
   try {
      File.WriteAllBytes(clientsXlsPath, doSomething());
   } catch (Exception e) {
      throw new Exception("Error!", e);
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...