|
4 / 4 / 1
Регистрация: 26.11.2009
Сообщений: 156
|
|
Обработка больших объемов данных из Excel20.12.2016, 23:31. Показов 6734. Ответов 25
Метки нет (Все метки)
Здравствуйте, уважаемые форумчане!
Есть огромных размеров excel файл, пусть для простоты, в нем хранятся сведения о погоде: дата, температура в этот день (разница между измерениями 10 минут). Встала задача написания на C# программы которая будет: 1) считывать сведения из файла и представлять их в табличном виде; 2) оперировать данными: искать среднее значение в такой-то день и т.п. не важно; 3) создавать новую таблицу с обработанными данными и сохранять её в новом excel файле; Опционально: 4) хранить обработанные данные в виде БД. Прочёл где-то на форуме, что обращаться к excel можно с OLE (но сейчас с этой технологией напрямую мало кто работает). Мне не ясно с помощью какого аппарата можно добиться достойного результата. Если получиться вытащить данные из файла, то каким образом хранить этот огромный набор информации в программе - как много памяти она будет поглощать? как оптимизировать работу? м.б. используя динамические списки, то какая структура оптимальна? Как быть с БД? тут мне совсем не понятно что делать. Надеюсь на вашу помощь! Спасибо!
0
|
|
| 20.12.2016, 23:31 | |
|
Ответы с готовыми решениями:
25
Шифрование больших объемов данных Сохранение больших объемов данных в файл Хранение больших объемов данных в файлах. |
|
14103 / 9320 / 1349
Регистрация: 21.01.2016
Сообщений: 35,016
|
||
| 21.12.2016, 06:35 | ||
|
Stick, работать с EXCEL действительно можно через OLEDB. В таком случае документ будет представлен базой данных с ограниченным функционалом. Драйвер для OLEDB идёт в комплекте с офисным пакетом. Не знаю, можно ли его отдельно поставить. Скорее всего да.
Можно работать с XLSX-документом напрямую, без всяких драйверов и офисов. Одна из популярных библиотек по этой теме - OpenXML SDK. В отличие от OLEDB данная библиотека даёт тебе полный контроль над документом.
0
|
||
|
4 / 4 / 1
Регистрация: 26.11.2009
Сообщений: 156
|
|
| 21.12.2016, 12:02 [ТС] | |
|
Спасибо! А OpenXML SDK не умеет работать с xls файлами? Все хранится в этом формате.
0
|
|
|
14103 / 9320 / 1349
Регистрация: 21.01.2016
Сообщений: 35,016
|
|
| 21.12.2016, 12:39 | |
|
Нет, не умеет. Если есть возможность, то перегони в XLSX.
0
|
|
|
4 / 4 / 1
Регистрация: 26.11.2009
Сообщений: 156
|
|
| 21.12.2016, 13:32 [ТС] | |
|
Хорошая мысль, есть ли какие-нибудь библиотеки позволяющие преобразовывать к XLSX формату?
0
|
|
|
14103 / 9320 / 1349
Регистрация: 21.01.2016
Сообщений: 35,016
|
|
| 21.12.2016, 13:39 | |
|
Stick, я таких не знаю. Если операция разовая, то можно самому, в офисе (или LibreOffice) перегнать. Иначе искать библиотеку для работы со старым форматом XLS.
0
|
|
|
4 / 4 / 1
Регистрация: 26.11.2009
Сообщений: 156
|
|
| 22.12.2016, 21:35 [ТС] | |
|
Usaga, пожалуй, пока раздерусь с xlsx типом. Благодарю!
Если предположить, что в excel-файле есть группа ячеек, образующие шапку таблицы (в идеале она не меняется). Но эта шапка может находиться в каждом документе на разном месте. Есть ли в OpenXML SDK функции для поиска конкретной записи по документу? Про OpenXML SDK можно почитать только на microsoft.com? Есть ли на русском справочники?
0
|
|
|
14103 / 9320 / 1349
Регистрация: 21.01.2016
Сообщений: 35,016
|
|
| 23.12.2016, 05:34 | |
|
Stick, OpenXML SDK - крайне низкоуровневая библиотека, в ней нет поиска по документу. Есть только доступ ко всему его содержимому (а его содержимое - XML), его структуре, стилям.
Справочники на русском не искал, да и вряд ли они существуют. Не настолько эта библиотека востребована широкой аудиторией, чтобы озадачиваться переводом её документации. Кому надо, спокойно на английском прочитают.
0
|
|
|
83 / 61 / 17
Регистрация: 21.08.2015
Сообщений: 1,094
|
||||||
| 23.12.2016, 14:52 | ||||||
|
Держи код для работы с XLS, он не совсем оптимальный, но лишнее можно убрать.
0
|
||||||
|
4 / 4 / 1
Регистрация: 26.11.2009
Сообщений: 156
|
|
| 26.12.2016, 15:43 [ТС] | |
|
Usaga, так и думал.
Чипс, спасибо, в начале поисков тоже обратил на этот сайт внимание - очень информативен! Если использовать в своей программе OLEDB для работы с xls файлами нужно покупать лицензию разработчика у MS для работы с офисом? и опять же для работы с проектом в VS 2013 / VS 2015 Community нужна лицензия разработчика? Как понимаю для OpenXML SDK не нужно приобретать никаких лицензий?
0
|
|
|
14103 / 9320 / 1349
Регистрация: 21.01.2016
Сообщений: 35,016
|
|
| 26.12.2016, 15:58 | |
|
Stick, OLEDB не требует лицензий. Если оно может работать без офиса (который покупать нужно, естественно), то оно бесплатно. OpenXML SDK - халява чистой воды.
0
|
|
|
4 / 4 / 1
Регистрация: 26.11.2009
Сообщений: 156
|
||||||
| 10.01.2017, 12:57 [ТС] | ||||||
|
Usaga, Можете помочь? Читаю текст из xlsx-файла. дана таблица в виде:
|№№|Описание| | Пункт 1 | | 1,1 | Текст | | 1,2 | Текст | | Пункт 2 | | 2,1 | Текст | | 2,2 | Текст | | 2,3 | Текст | | Пункт 3 | | 3,1 | Текст | | 3,2 | Текст | |3.2.1| Текст | // тут точки |3.2.2| Текст | | 3,3 | Текст | // дальше запятые ... Формирую список строк, читаю ячейки в строке (функция ReadExcel). Но при чтении номера cell.value = 1.1000000000000001 вместо 1.1. Следующее значение читается как 1.2. Дальше не 2.2, а 2.2000000000000002; 2.2999999999999998 вместо 2.3 и периодически возникают такие числа.
0
|
||||||
|
14103 / 9320 / 1349
Регистрация: 21.01.2016
Сообщений: 35,016
|
|
| 10.01.2017, 13:03 | |
|
Stick, это нормально. Числа в таком виде и хранятся в документе, просто EXCEL их при выводе округляет. Если ты посмотришь в каком виде там временные промежутки хранятся, то у тебя вообще глаз выпадет
![]() А вообще, доверять вещественным числам в программировании нельзя, ибо всегда имеет место погрешность.
0
|
|
|
141 / 138 / 22
Регистрация: 16.02.2012
Сообщений: 453
|
|
| 10.01.2017, 13:13 | |
|
Если не нужно наличие офиса на компе, то можно попробовать библиотеку https://github.com/tonyqus/npoi
Работает шустро, не требует установленного Excel, читает xls и xslx.
0
|
|
|
4 / 4 / 1
Регистрация: 26.11.2009
Сообщений: 156
|
|
| 10.01.2017, 13:50 [ТС] | |
|
Usaga, тут я запутался. а как же ошибки округления и точность? Если задача требует точных вычислений, как происходит округление? Мне в данном случае как быть чтобы не потерять в точности. У меня все прочитанные данные возвращаются как строки. Как тогда преобразовать строку в число и не потерять точность при этом?
SharpDeveloper, С этой библиотекой работать нужно через OleDb?
0
|
|
|
14103 / 9320 / 1349
Регистрация: 21.01.2016
Сообщений: 35,016
|
||
| 10.01.2017, 14:00 | ||
|
Stick, ошибки округления будут всегда. Без вариантов. Для меньшей погрешности нужно выбирать наиболее точный тип, с большей размерностью. Для хитрых на голову товарищей (учёные, инженеры, финансисты) должны быть сторонние библиотеки реализующие вычисления с плавающей точкой заданной точности. Но в большинстве случаев это не нужно.
0
|
||
|
83 / 61 / 17
Регистрация: 21.08.2015
Сообщений: 1,094
|
|
| 10.01.2017, 14:46 | |
|
Stick вы лучше скажите, у вас получилось как нибудь все это сохранить ? =)
0
|
|
|
4 / 4 / 1
Регистрация: 26.11.2009
Сообщений: 156
|
|
| 10.01.2017, 15:13 [ТС] | |
|
Чипс, как сохранять буду думать на следующей неделе
. Сейчас задача все правильно вытащить из файлов.Про Open XML на https://msdn.microsoft.com/RU-... 50837.aspx есть много инфы. А на рутрекере "OpenXML кратко и доступно" на русском описывается структура Excel, Word, PowerPoint.
0
|
|
|
141 / 138 / 22
Регистрация: 16.02.2012
Сообщений: 453
|
||||||||||||
| 10.01.2017, 15:33 | ||||||||||||
|
https://github.com/tonyqus/npo... e/Form1.cs Для быстрого чтения и парсинга текстовых данных из Excel это отличный вариант. Добавлено через 8 минут Добавлю немного примеров как открывать файлы с этой библиотекой:
1
|
||||||||||||
|
4 / 4 / 1
Регистрация: 26.11.2009
Сообщений: 156
|
|
| 11.01.2017, 11:46 [ТС] | |
|
Usaga, Благодарю за рекомендацию почитать стандарт. Про грязный ноль не знал
.SharpDeveloper, Огромное спасибо! Удивительно, но пример все прочитал из файла! Такой вопрос: у меня есть шапка таблицы, в которой заголовки в несколько ячеек объединены (A1:A3,B1:B3,C1:C3). Есть ли мысли как вытащить эту шапку и перенести её в DataGridView? Добавлено через 18 часов 56 минут Usaga, добрый день! Вы может быть в курсе дела: у меня есть строка в которой хранятся все ячейки. Так вот, чтобы узнать пуста ли строка в open XML SDK есть какой-нибудь способ? или же нужно перебирать каждую ячейку и смотреть ее содержимое? Спасибо!
0
|
|
| 11.01.2017, 11:46 | |
|
Помогаю со студенческими работами здесь
20
Задача об оптимизации хранении больших объемов строк HttpWebRequest, расход памяти непомерно больших объемов и , как следствие, утечка памяти Обработка больших объемов данных Spring обработка больших объемов данных
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Сочетание глобально распределённой вычислительной мощности и инновационных. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|