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

- есть 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
08.12.2017, 17:22
    #39566758
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NPOI для большого файла
borobos,

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

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

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

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

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

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

Варианты:
- новый формат парсить EPPlus, старый - или конвертировать в новый или оставить на NPOI.
- платное что-то (не вариант)
...
Рейтинг: 0 / 0
11.12.2017, 08:54
    #39567494
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NPOI для большого файла
Open XML SDK пробовали?
...
Рейтинг: 0 / 0
11.12.2017, 12:51
    #39567616
13th
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NPOI для большого файла
borobos, а через Automation тоже 3Гб жрёт?
...
Рейтинг: 0 / 0
11.12.2017, 14:26
    #39567667
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NPOI для большого файла
borobosВарианты:
- новый формат парсить EPPlus, старый - или конвертировать в новый или оставить на NPOI.
- платное что-то (не вариант)- конвертировать в старый формат xml и разгребать его с помощью xslt.
...
Рейтинг: 0 / 0
11.12.2017, 16:00
    #39567756
13th
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NPOI для большого файла
Читаю файл 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
11.12.2017, 17:40
    #39567863
borobos
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NPOI для большого файла
13th,

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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