|
Skittles
|
|
Запись огромного количества строк из массива в файл Excel21.01.2010, 15:55. Показов 6794. Ответов 4
Метки нет (Все метки)
Предположим, что есть очень большой массив строковых данных (рассчитываем на пару миллионов, в идеале - 8 с хвостиком). Возможно, этот массив будет разбиваться на более мелкие. Но задача стоит в другом: как этот массив данных записать в файл xls максимально быстро на средней машине?
Реплики по поводу того, что это не целесообразно, не принимаются: у нас очень большая организация, начальство задачу поставило, мне ее нужно решить. Для справки: Текстовый файл с выгруженным в него массивом этих данных в 700 тыс. строк весит порядка 20 метров. |
|
| 21.01.2010, 15:55 | |
|
Ответы с готовыми решениями:
4
Парсинг строк из огромного текстового файла из конца в начало средствами VBA Excel быстро
Запись в файл массива строк |
|
684 / 233 / 16
Регистрация: 15.10.2007
Сообщений: 1,246
|
|
| 21.01.2010, 17:37 | |
|
если нужно все очень так быстро пиши на Си,если все таки на джава юзай либу JExcel
0
|
|
|
эволюционирую потихоньку
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
|
|
| 21.01.2010, 19:08 | |
|
Skittles, откуда массив. в каком первоначальном виде он представлен?
соглашусь с Mecid, на Сишнике быстрее получиться, можно даже поэксперементировать. примерчик исходных данных если не сложно выложите, не обязательно рабочии, просто для понимания, что откуда перегнать. можно типовые данные, а я их сам размножу. если желание попробовать не пройдёт выложу итог сравнения
1
|
|
|
Skittles
|
|||||||
| 22.01.2010, 18:33 | |||||||
|
Mecid, проблема в том, что не в моей компетенции решать на чем писать. стоит задача сделать это на Java. JExcel - библиотека, официально не использующаяся у нас на предприятии, и чтобы ввести ее в "оборот" нужно каждой инстанции доказывать ее необходимость (месяц примерно), а потом еще пару месяцев вводить в эксплуатацию.
TanT, массив на данный момент ввыводится из базы данных (даже не подскажу какая именно СУБД) в текстовый файл. кстати все несколько плачевней: массив из 120 тыс. строк весит 20 метров. но сейчас другими людьми разрабатывается метод, который будет заполнять таблицу в БД. но и тут еще вопрос не решенный. вообще моя задача состоит в том, чтобы извлеченные данные в ArrayList из любого файла (эти данные заранее выгружаются в ArrayList другим методом, написанным другим человеком; код, который на данный момент действует, могу кинуть) записать в в эксэлевский файл, оформленный в своего рода отчет. структура строк и пример на данный момент выглядят следующим образом:
собственно метод, который сейчас "работает", но весьма медленно. public void WriteXLS(HashMap sheets)
пс: править и сокращать было лень. думаю, для ознакомления вполне сойдет... извините, если что (: |
|||||||
|
эволюционирую потихоньку
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
|
|
| 24.01.2010, 09:44 | |
|
Skittles, сейчас смотрю ваш ответ и у меня возникают некоторые вопросы по структуре, получается, что для формирования отчёта выполняются следующие действия:
1. вытащить данные из базы, записав из в фаил 2. считать все данные из файла в ArrayList (вот тут вопрос, я правильно понял что все или всётаки построчно?) 3. распарсить\преобразовать строку к виду шаблона и записать в экселевский фаил имхо, структура должна быть типа 1. вытащить данные из базы, записав из в фаил (раз так повелось) 2. сформировать пустой экселевский документ с указанными настройками + вычислить пути и время + тот интерфейс который используется в вашем примере, только вынести это всё в отдельные методы, в общем произвести всю подготовку 3. запустить один цикл чтения строк из файла, полученного в п.1 и после прочтения каждой строки разбирать её согласно вашим условиям в этом случае минимум съэкономятся ресурсы на хранение всего объёма данных в памяти и на его чтение. так же не совсем понятна необходимость анализа jComboBox_TK в процессе преобразования, значение может меняться? или оно всё таки статично с начала преобразования массива данных. если так, то можно провести анализ до преобразования и передовать в итоговый метод разбора соответсвующий флаг. анализ булевской переменной быстрее, чем анализ текста в вашем объекте. ещё немного можно съэкономить на цикле for (int i = 0; i < keys.length; i++) если заменить на for (int i = keys.length; --i>=0; ) экономия ощущается при больших значениях keys.length;, однако это применимо, если вам не важен порядок следования Итого: 1. структурировать код, разбив его на методы: "инициализация", "парсинг" 2. избавиться от массива (если возможно) 3. уменьшить издержки на анализ условий 4. по эксперементировать с временем выполнения методов - завести таймер и вычислять время выполнения метода в данный момент для меня не совсем очевидны некоторые проверки, так как я не владею всей информацией, в том числе состоянием объектов jComboBox_TK и подобного. в общем высказался, не уверен, что всё конструктивно, поправите если где-то заблуждаюсь
0
|
|
| 24.01.2010, 09:44 | |
|
Помогаю со студенческими работами здесь
5
Запись всего массива строк в файл Запись в файл строк/и в виде байтого массива Запись массива в файл и чтение из него строк
Добавление в ListBox огромного количества данных Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|