Использование LightCells API
Архитектура, управляемая событиями
Aspose.Cells предоставляет LightCells API, в основном предназначенные для манипулирования данными ячеек один за другим без создания в памяти полного блока модели данных (с использованием коллекции Cell и т. д.). Работает в событийно-ориентированном режиме.
Чтобы сохранить рабочие книги, предоставьте содержимое ячейки ячейка за ячейкой при сохранении, и компонент сохранит его непосредственно в выходной файл.
При чтении файлов шаблонов компонент анализирует каждую ячейку и выдает их значения одну за другой.
В обеих процедурах обрабатывается и затем отбрасывается один объект Cell, объект Workbook не содержит коллекции. Таким образом, в этом режиме экономится память при импорте и экспорте Microsoft файла Excel с большим набором данных, который в противном случае потребовал бы много памяти.
Несмотря на то, что LightCells API одинаково обрабатывает ячейки для файлов XLSX и XLS (на самом деле он не загружает все ячейки в память, а обрабатывает одну ячейку, а затем отбрасывает ее), он экономит память более эффективно для файлов XLSX, чем для файлов XLS из-за различные модели данных и структуры двух форматов.
Однако,для файлов XLS , чтобы сэкономить больше памяти, разработчики могут указать временное место для сохранения временных данных, созданных в процессе сохранения. Обычно,использование LightCells API для сохранения файла XLSX может сэкономить 50% или более памяти чем обычным путем,сохранение XLS может сэкономить около 20-40% памяти.
Написание большого файла Excel
Aspose.Cells предоставляет интерфейс LightCellsDataProvider, который необходимо реализовать в вашей программе. Интерфейс представляет собой поставщик данных для сохранения больших файлов электронных таблиц в облегченном режиме.
При сохранении книги в этом режиме StartSheet(int) проверяется при сохранении каждого листа в книге. Для одного листа, если StartSheet(int) имеет значение true, то все данные и свойства строк и ячеек этого листа для сохранения предоставляются этой реализацией. Во-первых, NextRow() вызывается для сохранения индекса следующей строки. Если возвращается допустимый индекс строки (индекс строки должен быть в порядке возрастания, чтобы строки были сохранены), то объект Row, представляющий эту строку, предоставляется для реализации, чтобы установить его свойства с помощью StartRow(Row).
Для одной строки сначала проверяется NextCell(). Если возвращается допустимый индекс столбца (индекс столбца должен быть в порядке возрастания для сохранения всех ячеек одной строки), то объект Cell, представляющий эту ячейку, предоставляется для реализации, чтобы установить ее данные и свойства с помощью StartCell(Cell). После того, как данные ячейки установлены, ячейка сохраняется непосредственно в сгенерированном файле электронной таблицы, а следующая ячейка проверяется и обрабатывается.
Написание большого файла Excel: пример
См. следующий пример кода, чтобы увидеть работу LightCells API. Добавляйте и удаляйте или обновляйте сегменты кода в соответствии с вашими потребностями.
Программа создает огромный файл с10 000 (матрица 10 000 x 30) записей на листе и заполняет их фиктивными данными. Вы можете указать свою собственную матрицу, изменив переменные rowsCount и colsCount в методе Main().
Чтение больших файлов Excel
Aspose.Cells предоставляет интерфейс LightCellsDataHandler, который необходимо реализовать в вашей программе. Интерфейс представляет собой поставщика данных для чтения больших файлов электронных таблиц в облегченном режиме.
При чтении книги в этом режиме StartSheet проверяется при чтении каждого листа книги. Для листа, если StartSheet возвращает true, то все данные и свойства ячеек в строках и столбцах листа проверяются и обрабатываются реализацией этого интерфейса. Для каждой строки вызывается StartRow, чтобы проверить, нужно ли ее обрабатывать. Если строку необходимо обработать, сначала считываются ее свойства, и разработчик может получить доступ к ее свойствам с помощью ProcessRow. Если ячейки строки также необходимо обработать, тогда ProcessRow должен вернуть значение true, а затем StartCell вызывается для каждой существующей ячейки в строке, чтобы проверить, нужно ли обрабатывать одну ячейку. Если необходимо обработать одну ячейку, то вызывается ProcessCell для обработки ячейки реализацией этого интерфейса.
Чтение больших файлов Excel: пример
См. следующий пример кода, чтобы увидеть работу LightCells API. Добавляйте и удаляйте или обновляйте сегменты кода в соответствии с вашими потребностями.
Программа читает огромный файл с миллионами записей на листе. На чтение каждого листа рабочей тетради уходит немного времени. Пример кода считывает файл и извлекает общее количество ячеек, количество строк и количество формул на каждом листе.