#c# #asp.net #excel
#c# #asp.net #excel
Вопрос:
Я пытаюсь создать файл Excel из ASP.NET . Я предполагаю, что этот файл создан где-то временно, верно? Как я могу получить это местоположение?
Ответ №1:
Что вы используете для создания файла Excel? Поскольку у вас есть ASP.NET tag Надеюсь, вы не пытаетесь сделать это с помощью Office COM Automation, это не поддерживается и, поверьте мне, это очень, очень ненадежно. Смотрите эту ссылку от Microsoft http://support.microsoft.com/kb/257757
Ключевое сообщение по ссылке
В настоящее время Корпорация Майкрософт не рекомендует и не поддерживает автоматизацию приложений Microsoft Office из любого автоматического неинтерактивного клиентского приложения или компонента (включая ASP, ASP.NET , Службы DCOM и NT), поскольку Office может демонстрировать нестабильное поведение и / или взаимоблокировку при запуске Office в этой среде.
Я бы посоветовал вам взглянуть на использование библиотеки NPOI, это очень быстро и надежно работает на стороне сервера. И затем вы можете управлять тем, где создается файл.
Комментарии:
1. Что я могу добавить, так это то, что также может быть большая разница между средой разработки и продуктивной системой.
2. я прочитал эту статью, которую вы мне ранее дали!!! я не знаком с NPOI…..is есть какое-либо другое решение???
3. @user726895, не существует решения с использованием Office Automation, которое будет работать надежно. Я бы настоятельно рекомендовал вам взглянуть на NPOI, это действительно не очень сложно запустить, на самом деле проще, чем пробираться через API автоматизации.
Ответ №2:
Если вы используете временный путь или временный файл, вас не должно волновать, где он находится. Если вам нужна осторожность, вы должны использовать конкретный путь с конкретным файлом. Вы также можете использовать MemoryStream, чтобы сделать все это без жесткого диска.
РЕДАКТИРОВАТЬ: В дополнение к комментарию я рекомендую вам использовать Open XML для создания листа Excel. Если это вариант, дайте мне знать, чем я опубликую больше об этом.
Я должен сказать, что я не знал эту статью из сообщения Криса Тейлора, и если бы я нашел это в прошлом году, это сэкономило бы мне много времени. Но что я должен сказать на этом этапе; возможно запустить серверное решение, использующее interop, и оно понадобилось мне в прошлом году. Но это было непросто, пока это не сработало, и если кто-то хочет попробовать, вот несколько советов:
- вам не следует использовать interop непосредственно из приложения ASP
- вы не можете использовать олицетворение (это может привести к непредвиденному сбою)
- вам понадобится служба, которая запускается как System
- вам нужен исполняемый файл, который запускает взаимодействие
- вы должны управлять выполнением через службу (и я имею в виду управление, а не просто запуск)
И еще раз; Я не рекомендую этого делать. Используйте любое другое решение, если вы. (MS поддерживает службы автоматизации с SharePoint2010)
Комментарии:
1. я использую Interop. Excel, во время которого я открываю книгу с помощью ‘Excelapp.workbooks.add [1]’ … но на сервере, куда именно он будет записывать данные???
2. Крис Тейлор объясняет все это в своем посте. Я не рекомендую использовать Interop из-за проблем с разрешениями в производственных системах. И если вы все еще хотите его использовать, создайте службу, которая управляет одним или несколькими рабочими процессами, которые заботятся о взаимодействии.