powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / NPOI для большого файла
20 сообщений из 20, страница 1 из 1
NPOI для большого файла
    #39566719
borobos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Посоветуйте плз кто стыкался.

- есть file.xlsx.
- розмер файла 20 Мб.
- около 500К строк в файле.

Стоит задача прочитать файл построчно и обработать.

Решал с пом. https://github.com/tonyqus/npoi. Версия последняя 2.3.0.

Но при создании екземпляра начинает память кушать в районе 3Гб.

Код: c#
1.
2.
3.
4.
5.
using (FileStream stream = File.OpenRead(filePath))
{
    IWorkbook wb = WorkbookFactory.Create(stream);
    ...
}



И на этом умирает.
...
Рейтинг: 0 / 0
NPOI для большого файла
    #39566758
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
borobos,

XML можно читать 2 способами RAW и DOM используйте 1ый, гугл в помощь
...
Рейтинг: 0 / 0
NPOI для большого файла
    #39566781
borobos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtes,

Спасибо за ответ.

Посмотрел варианты, видимо надо смотреть в сторону https://github.com/JanKallman/EPPlus

Как минимум на тестовом проекте на том же файле читает хорошо.
...
Рейтинг: 0 / 0
NPOI для большого файла
    #39566975
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
borobos,

Предлагаю экспортировать файл в CSV и ...
...
Рейтинг: 0 / 0
NPOI для большого файла
    #39566976
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
borobosСтоит задача прочитать файл построчно и обработать
один раз или многократно?
из под сервиса или пользовательского интерфейса?
...
Рейтинг: 0 / 0
NPOI для большого файла
    #39567062
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Если файл состоит из простой таблицы, где только заголовки и данные, то можно
а) Подключить его, как связанный сервер (MS SQL Linked server)
б) Обращаться к нему, как к таблице через OLEDB провайдера
...
Рейтинг: 0 / 0
NPOI для большого файла
    #39567444
borobos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропил,

- файлы приходят регулярно
- формат файлов xls и xlsx
- консольное приложение, висит постоянно и парсит
- NPOI хорош тем что фришный, но если файл 20 Мб - при инициализации пытается все в память грузить
- есть хороший аналог - EPPlus - работает быстро (проверял) - но не умеет работать со старым форматом xls (а надо)

Варианты:
- новый формат парсить EPPlus, старый - или конвертировать в новый или оставить на NPOI.
- платное что-то (не вариант)
...
Рейтинг: 0 / 0
NPOI для большого файла
    #39567494
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Open XML SDK пробовали?
...
Рейтинг: 0 / 0
NPOI для большого файла
    #39567616
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
borobos, а через Automation тоже 3Гб жрёт?
...
Рейтинг: 0 / 0
NPOI для большого файла
    #39567667
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
borobosВарианты:
- новый формат парсить EPPlus, старый - или конвертировать в новый или оставить на NPOI.
- платное что-то (не вариант)- конвертировать в старый формат xml и разгребать его с помощью xslt.
...
Рейтинг: 0 / 0
NPOI для большого файла
    #39567756
13th
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Читаю файл Excel в 500 тыщ строк за 5 секунд:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
		private void button2_Click(object sender, EventArgs e)
		{
			int nT1 = Environment.TickCount;
			Excel.Application oXL;
			oXL = new Excel.Application();
			oXL.Visible = true;

			Excel._Workbook oWB = oXL.Workbooks.Open(@"C:\Users\HRENSGORY\Documents\500Klines.xlsx", 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);
			
			Excel.Worksheet sheet = (Excel.Worksheet)oWB.Sheets["Sheet1"];

			Microsoft.Office.Interop.Excel.Range workingRangeCells = sheet.get_Range("A1:D500000", Type.Missing);
			System.Array array = (System.Array)workingRangeCells.Cells.Value2;

			oXL.Quit();
			int nTD = Environment.TickCount - nT1;
		}
...
Рейтинг: 0 / 0
NPOI для большого файла
    #39567863
borobos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
13th,

Не все описал.
- крутиться на Линухе под mono
- Microsoft.Office.Interop вроди не рекомендуют (читал где-то) использывать если не разово
...
Рейтинг: 0 / 0
NPOI для большого файла
    #39567866
borobos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79,

спасибо, посмотрю
...
Рейтинг: 0 / 0
NPOI для большого файла
    #39567869
borobos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
13th,

вроди не пробувал. Спасибо посмотрю
...
Рейтинг: 0 / 0
NPOI для большого файла
    #39567871
borobos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariy,

а можно привести чем или как удобно будет конвертировать старый в новый?
...
Рейтинг: 0 / 0
NPOI для большого файла
    #39567888
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
borobosAntonariy,

а можно привести чем или как удобно будет конвертировать старый в новый?не старый в новый, а новый в старый.

вспомнил, что всего одна библиотека это умеет, но она платная, так что вариант не фонтан.
...
Рейтинг: 0 / 0
NPOI для большого файла
    #39567893
borobos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79,

Open XML SDK не умеет со старым xls работать, частично решает задачу.
...
Рейтинг: 0 / 0
NPOI для большого файла
    #39568149
borobos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наткнуся на репо https://github.com/aspose-cells/Aspose.Cells-for-.NET

Есть dll. Информации про лимиты нет. Читает весь файл. Не пойму в чем подвох...
...
Рейтинг: 0 / 0
NPOI для большого файла
    #39569504
Barkan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
borobosНаткнуся на репо https://github.com/aspose-cells/Aspose.Cells-for-.NET

Есть dll. Информации про лимиты нет. Читает весь файл. Не пойму в чем подвох...

Используешь скаченную бесплатно? Подвох в чём нашёл?
...
Рейтинг: 0 / 0
NPOI для большого файла
    #39570038
borobos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BarkanborobosНаткнуся на репо https://github.com/aspose-cells/Aspose.Cells-for-.NET

Есть dll. Информации про лимиты нет. Читает весь файл. Не пойму в чем подвох...

Используешь скаченную бесплатно? Подвох в чём нашёл?

Бегло прогнал на большом файле - весь файл читает. Скорость отличная.

Насчет использывать - пока не дошел.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / NPOI для большого файла
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]