У меня есть приложение, в котором открывается файл XLS с большим количеством данных, введенных пользователем, и данные в нем преобразуются в XML. Я уже сопоставил столбцы в файле XLS с XML-картами. Когда я пытаюсь использовать метод ExportXml в XMLMaps, я получаю строку с правильным XML-представлением файла XLS. Я немного разбираю эту строку и загружаю ее на свой сервер.
Проблема в том, что, когда мой файл XLS действительно большой, строка, созданная для XML, занимает более 2 ГБ, и я получаю исключение «Недостаточно памяти». Я понимаю, что ограничение для объектов CLR составляет 2 ГБ. Но в моем случае мне нужно справиться с этим сценарием. В настоящее время я просто сообщение с просьбой отправить меньше данных.
Есть идеи, как мне это сделать?
EDIT:
Это просто последовательность операций, которые мне нужно выполнить над сгенерированным XML.
- Удалить некоторые поля, которые не нужны для данных сервера.
- Добавьте что-то вроде идентификационных номеров для каждой строки данных.
- Изменить значения определенных элементов.
- Провести проверку данных.
Хотя поток XMLReader является хорошей идеей, я не могу выполнить эти операции этим методом. В то время как проверка данных может быть выполнена самим Excel, другие вещи не могут быть сделаны здесь.
Использование XMLTextReader и XMLTextWriter и создание собственного метода для каждого шага - это решение, о котором я думал. Но чтобы пройти вышеописанный список, требуется, чтобы документ XML был пройден или обработан 4 раза. Это просто не эффективно.