Диалог сохранения в Excel не отображается правильно - PullRequest
1 голос
/ 01 марта 2010

Я разработал SharePoint WebPart, используя ASP.NET и C # (код позади).

Одна из вещей, которую необходимо сделать, - это запустить диалоговое окно Excel Сохранить как, чтобы пользователь мог сохранить файл Excel.

В окне SharePoint Server эта функция работает правильно. Когда я нажимаю «Экспорт», как и ожидалось, появляется диалоговое окно «Сохранить как» в Excel.

Однако на клиентском компьютере (таком как мой) эта функция работает неправильно. Когда я нажимаю «Экспорт», диалоговое окно «Сохранить как» в Excel НЕ появляется.

Фрагмент кода, где запускается это диалоговое окно…

        xlApp.DisplayAlerts = false;

        //xlWorkBook.Save();  

        Microsoft.Office.Interop.Excel.Dialog dialog = xlApp.Dialogs[Microsoft.Office.Interop.Excel.XlBuiltInDialog.xlDialogSaveAs];
        dialog.Show(Type.Missing, // document_text
        Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookDefault, // type_num
        Type.Missing, // prot_pwd
        Type.Missing, // backup
        Type.Missing, // write_res_pwd
        Type.Missing, // read_only_rec
        Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

        xlApp.DisplayAlerts = true;

Знаете ли вы, что может быть причиной этой разницы? Есть ли какие-то конкретные вещи, которые я должен исследовать?

Спасибо за вашу помощь, -Krishna

1 Ответ

1 голос
/ 29 мая 2011

Вы должны понимать, что когда вы используете вышеуказанный код на веб-сервере, вы запускаете Excel на веб-сервере, а не на клиентском компьютере.

Вы не можете делать то, что пытаетесь сделать / w Interop в среде клиент / сервер. Как правило, вам никогда не следует использовать компоненты COM Interop / w Office на веб-сервере.

Вам следует создать файл Excel, используя метод, более безопасный для серверов, чем Interop. Я использовал XMLSS в прошлом (держу пари, что для Office существует еще более современный формат XML):

http://msdn.microsoft.com/en-us/library/aa140066(v=office.10).aspx

, но Excel может даже открывать таблицы HTML, поэтому в зависимости от того, что вы пытаетесь сделать, вы можете написать HTML клиенту и дать ему расширение .xls.

Если вы не можете избежать использования Interop (хотя я настоятельно рекомендую вам его избегать), то вам нужно убедиться, что ваш код Interop является поточно-надежным и надежным, и сохранить файл Excel в локальном файле. спот на сервере, затем заставьте браузер клиента «Сохранить как». Вам также понадобится механизм для очистки старых файлов через некоторое время. Желательно делать все это в памяти и передавать результат клиенту. Следующая ссылка содержит информацию о том, как заставить «Сохранить как».

http://www.west -wind.com / weblog / posts / 2007 / May / 21 / Загрузка файла с диалогом сохранения в ASPNET

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...