2014-01-14 4 views
1

Я использую OpenXML для создания документа Excel в веб-приложении. Она работает отлично подходит для файлов < ~ 10mbOpenXml, изолированное хранилище и большие размеры файлов

Для файлов, созданных с размерами большими, чем 10mb я получаю следующее исключение ...

Хотя у меня есть некоторое обсуждение этого вопроса в Интернете (некоторые об использовании другого упаковочные библиотеки) Я еще не решил нашу проблему. Другие видели и решили эту проблему?

мне очень нравится идея использования OpenXml (однако я ненавижу идею перехода к другому решению из-за одного только этот вопрос)

Solutions?

System.IO.IsolatedStorage.IsolatedStorageException: невозможно создать каталог магазина. (Исключение из HRESULT: 0x80131468) в System.IO.IsolatedStorage.IsolatedStorageFile.GetRootDir (IsolatedStorageScope рамки, StringHandleOnStack retRootDir) в System.IO.IsolatedStorage.IsolatedStorageFile.InitGlobalsNonRoamingUser (IsolatedStorageScope сфера) на System.IO.IsolatedStorage.IsolatedStorageFile. GetRootDir (IsolatedStorageScope сфера) в System.IO.IsolatedStorage.IsolatedStorageFile.GetGlobalFileIOPerm (IsolatedStorageScope охват) на System.IO.IsolatedStorage.IsolatedStorageFile.Init (IsolatedStorageScope охват) в System.IO.IsolatedStorage.IsolatedStorageFile.GetStore (IsolatedStorageScope область применения, Тип domainEvidenceType, Тип assemblyEvidenceType) на MS.Internal.IO.Packaging.PackagingUtilities.ReliableIsolatedStorageFileFolder.GetCurrentStore()

ответ

0

Я открываю пакет с помощью этого
WordprocessingDocument package = WordprocessingDocument.Open(inputFileName, true); Я могу обрабатывать файлы больше чем 30Мб.

Я думаю, что вы используете MemoryStream для его обработки.

См. Это. http://www.kevinrohrbaugh.com/blog/tag/openxml

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

+0

Выполняют это через веб-приложение? (iis и asp.net) – David

+0

Нет, я использую его в приложении Winforms. –

+0

Вот что я думал, спасибо за ввод, но мой сценарий связан с веб-приложением/iis. – David

0

У меня возникли проблемы с генерацией файлов Excel с 75 столбцами и 130 000 строк. Я возвращаю их с веб-сервера. Я попытался использовать Openxml, сначала был довольно гладким, но, похоже, у него много проблем, которые, похоже, не исправляются. Мне удалось заставить его работать, только наложив 8000 строк на лист и используя макрос для объединения листов при его открытии, это вызвало еще один набор проблем. Я боролся с этим в течение нескольких месяцев, кажется, у многих людей есть эта проблема.

Поскольку новые файлы excel - это просто зашифрованная куча xml-файлов, я не мог понять, почему никто не распаковывает это и не заменяет листы своими собственными записями данных и не архивирует их. Я был до последней своей соломы, поэтому решил попробовать, я посмотрел .Net сжатие и запись больших xml-файлов. В течение 2 часов у меня был мой первый рабочий тест, заполняемый из db.

Я генерирую файлы excel с 75 столбцами и 130,00 строк, 1 минута для запроса данных и 3 1/2 минуты для создания отчета. Когда я использовал Openxml, это заняло бы 7 - 8 минут и съел бы всю память о небрежном. Мне действительно нужно было настроить пул приложений, чтобы все это работало.

+2

можете ли вы рассказать нам, какие библиотеки/функции/процессы вы использовали для достижения этого? Более подробная информация была бы полезна. – Loopo

+0

Можете ли вы опубликовать код? – neelsg

0

Проверьте эту ссылку.

https://maheshkumar.wordpress.com/2014/10/21/

Просто прийти, чтобы узнать, через моего коллеги об этом fix- хотел поделиться. Наконец-то у нас есть исправление этой давней проблемы, когда приложения, использующие Open XML SDK (или System.IO.Packaging), будут висеть в многопоточных сценариях при работе с большими файлами. (Ошибка ограничения по 10 МБ).

накопительный пакет исправлений 2996566 для .NET Framework 4.5, 4.5.1 и 4.5.2 на Windows, 8.1 и Windows Server 2012 R2 support.microsoft.com/kb/2996566 накопительный пакет исправлений 2996567 для .NET Framework 4.5 , 4.5.1 и 4.5.2 на Windows 8 и Windows Server 2012 support.microsoft.com/kb/2996567 Накопительный пакет исправлений 2996568 для .NET Framework 4.5, 4.5.1 и 4.5.2 на Vista SP2, Windows Server 2008 SP2, Windows 7 SP1 и Windows Server 2008 R2 SP1 support.microsoft.com/kb/2996568

Смежные вопросы