Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.82/34: Рейтинг темы: голосов - 34, средняя оценка - 4.82
 Аватар для Stick
4 / 4 / 1
Регистрация: 26.11.2009
Сообщений: 156

Обработка больших объемов данных из Excel

20.12.2016, 23:31. Показов 6920. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые форумчане!
Есть огромных размеров excel файл, пусть для простоты, в нем хранятся сведения о погоде: дата, температура в этот день (разница между измерениями 10 минут). Встала задача написания на C# программы которая будет:
1) считывать сведения из файла и представлять их в табличном виде;
2) оперировать данными: искать среднее значение в такой-то день и т.п. не важно;
3) создавать новую таблицу с обработанными данными и сохранять её в новом excel файле;
Опционально:
4) хранить обработанные данные в виде БД.

Прочёл где-то на форуме, что обращаться к excel можно с OLE (но сейчас с этой технологией напрямую мало кто работает). Мне не ясно с помощью какого аппарата можно добиться достойного результата.

Если получиться вытащить данные из файла, то каким образом хранить этот огромный набор информации в программе - как много памяти она будет поглощать? как оптимизировать работу? м.б. используя динамические списки, то какая структура оптимальна?

Как быть с БД? тут мне совсем не понятно что делать.

Надеюсь на вашу помощь! Спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.12.2016, 23:31
Ответы с готовыми решениями:

Шифрование больших объемов данных
Здравствуйте. Имеются данные (файлы различных форматов) суммарным весом около 20 гигабайт. Задача зашифровать их максимально быстро, и...

Сохранение больших объемов данных в файл
Народ подскажите, может есть у кого идеи. У меня программа, с таблицей на 3,5-4 млн строк по 14-20 полей в каждой строке (поля...

Хранение больших объемов данных в файлах.
Добрый день. Столкнулся с проблемой необходимо хранить и обработывать большое количество массивов, решил что эфферктивно создать в...

25
Эксперт .NET
 Аватар для Usaga
14368 / 9469 / 1360
Регистрация: 21.01.2016
Сообщений: 35,733
11.01.2017, 11:58
Студворк — интернет-сервис помощи студентам
Stick, придётся перебирать всё содержимое. OpenXML SDK очень низкоуровневая библиотечка. Она тебе предоставляет доступ к объектной модели документа, а дальше ты сам себе хозяин.
1
 Аватар для Stick
4 / 4 / 1
Регистрация: 26.11.2009
Сообщений: 156
25.01.2017, 12:08  [ТС]
Usaga, столкнулся с такой проблемой: есть таблица в которой некоторые ячейки объединены и имеют одно значение. При чтении ячеек читает только одно значение, а остальные ячейки пусты. Может вы знаете как можно определить ячейка объединена с какой-то другой или нет; и как вытащить данные из объединенных ячеек?
Миниатюры
Обработка больших объемов данных из Excel  
0
Эксперт .NET
 Аватар для Usaga
14368 / 9469 / 1360
Регистрация: 21.01.2016
Сообщений: 35,733
25.01.2017, 12:13
Stick, нет, я не знаю. Но у меня есть подозрение, что раз глядя на этот файл EXCEL знает, какие ячейки там объеденены, то это где-то записано в документе. Поэкспериментируй: создай два пустых документа, один не трожь, а во втором объедени пару ячеек. Потом сравни содержимое и посмотри, чем они отличаются.
0
 Аватар для Stick
4 / 4 / 1
Регистрация: 26.11.2009
Сообщений: 156
25.01.2017, 15:42  [ТС]
Usaga, Excel объединяет ячейки записывая значение в первой левой.
C#
1
2
3
4
5
6
7
8
 MergeCells mcs =
               ((WorksheetPart) (workbookPart.GetPartById(sheet.Id))).Worksheet.Descendants<MergeCells>().First();
var mcl = mcs.ChildElements.ToList();
int imc = 0;
foreach (var mc in mcl)
{
   imc++;                    
}
Думаю вытащить диапазон ячеек. Вот только как это сделать не ясно. В классе MergeCells есть поле OuterXml содержит диапазон и еще какую-то служебную инфу. С другой стороны есть запись [DocumentFormat.OpenXml.Spreadsheet.Merge Cell] в которой есть поле Reference со значением диапазона. А вот обратиться к этому полю не получается.
Миниатюры
Обработка больших объемов данных из Excel  
0
Эксперт .NET
 Аватар для Usaga
14368 / 9469 / 1360
Регистрация: 21.01.2016
Сообщений: 35,733
25.01.2017, 16:19
Stick, объяви тип переменной MC как DocumentFormat.OpenXml.Spreadsheet.MergeCell и получишь доступ к свойству Reference.
0
 Аватар для Stick
4 / 4 / 1
Регистрация: 26.11.2009
Сообщений: 156
25.01.2017, 17:03  [ТС]
Usaga, отлично!
Теперь есть диапазон ячеек в виде строки. А чтобы получить диапазон, который можно использовать при проверке текущей ячейки могу разобрать эту строку на составляющие
столбец+строка : столбец+строка
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.01.2017, 17:03

Задача об оптимизации хранении больших объемов строк
Приветствую. Вопрос на тему &quot;а как лучше?&quot;. Храню строки, далее данные. Есть данные уже собранные, хранящиеся в txt, и данные, которые...

HttpWebRequest, расход памяти непомерно больших объемов и , как следствие, утечка памяти
Добрый вечер. Мне была поставлена такая задача. Написать приложение, которая загружает из списка ссылки с сайта и ищет там определенную...

Обработка больших объемов данных
Всем привет. Мне нужно обработать много много строк таблицы, фильтруя их по столбцам. Начну пожалуй сразу с примера. Пример...

Spring обработка больших объемов данных
Опишу задачу, прошу подсказки куда смотреть. Надо обработать большое количество данных как можно быстрее и эффективнее. Задача скорее...

Хранение больших объемов данных
Всем доброго времени суток и всех с Праздником Победы!)) Сразу к делу) Есть программа (точнее сайт на ASP.NET), есть таблица с данными...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью. Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
Грибы - это корпорации, деревья - это государства. Механизм массонского захвата власти
anaschu 18.07.2026
Макроэкономический изоморфизм теории «всего»: Грибная сукцессия как модель транснационального капитализма Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а. . .
Расчёт периметра прямоугольника по координатам вершин
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Вычислить периметр прямоугольника, заданного координатами своих вершин на плоскости. Решение: Создан документ со следующими. . .
Подсчёт частоты трёхбуквенных слов в тексте
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Выясните, сколько раз в предложенном тексте встречается каждое трехбуквенное слово. Решение: Создан документ с единственным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru