Создаю парсер для сбора статистики игр с сайта букмекерской конторы,для дальнейшей работы в экселе.Проблема с записью списка в эксель.



  • После парсинга и обработки текста он имеет такой вид в .txt.

    01.06 00:04 Montpellier - PSG 15:13 (9:8,6:5)
    01.06 00:21 HSV Hamburg - Aalborg 16:18 (9:8,7:10)
    01.06 00:37 PSG - SG Flensburg-Handewitt 14:15 (11:8,3:7)
    01.06 00:55 Fuchse Berlin - Bada Huesca 18:17 (10:10,8:7)
    01.06 01:07 Kolding - Montpellier 18:14 (8:7,10:7)
    01.06 01:27 BM Aragon - Ademar Leon 15:18 (9:9,6:9)
    01.06 01:40 SG Flensburg-Handewitt - Nantes 17:17 (10:7,7:10)
    01.06 01:57 Ribe - Montpellier 21:15 (9:10,12:5)
    01.06 02:12 Montpellier - Nantes 19:19 (8:10,11:9)
    01.06 02:28 Bada Huesca - Fuchse Berlin 18:19 (9:8,9:11)

    Не могу найти решения чтобы записывать информацию из строки в разные столбы.
    Пример:
    A1 - 01.06 00:04
    B1 - Montpellier
    C1 - PSG
    D1 - 15
    E1 - 13

    и.т.д.

    Предыдущий вариант скрипта работал через "первое вхождение" и разбивал на группу с последующей записью в эксель этих групп по ячейкам.

    Но это очень долго по времени - промежуток в месяц парсился за пару часов.

    Теперь я получаю текст за день за секунды и привожу его в такой вид,но не знаю и не нашел из доступных мне мест вариантов решения проблемы,такой же записи в эксель этого списка разом.

    Кто-нибудь может подсказать в какую сторону рыть?



  • @toxaman Мало что понял, но что мешает сразу писать в csv формате? В сто раз проще и удобней.

    "01.06","00:04","Montpellier - PSG","15:13","(9:8,6:5)"

    Кавычки нужны для того чтобы ексель или другой табличный процессор смог распарсить не перепутав разделитель, в этом примере это запятая, с запятой которая может быть внутри строки.



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



  • @toxaman Ну я же написал вам пример, каждая колонка экранируется двойными кавычками, а между ними разделитель обычно это , или : или ;



  • имел ввиду как их вставить,а не как расставить



  • @toxaman Ну получаете эти данные 01.06 00:04 Montpellier - PSG 15:13 (9:8,6:5) в разные переменные, когда парсите?

    Так и вставляете "[[VALUE1]]",[[VALUE2]]","[[VALUE3]]","[[VALUE4]]","[[VALUE5]]"



  • В этом причина что целая строка,если парсить отдельно,есть рабочий вариант, делал до этого,то тогда очень много времени уходит,месяц статистики парсится неск.часов.



  • @toxaman Не особо понимаю каким образом можно парсить строку, чтобы секунды превратились в часы ))



  • Ладно,извини,что отнял время,буду ковыряться.



  • Скину здесь готовый проект записи данных в файл эксель через модуль xlsx-populate для примера.

    Берём 3 массива:

    [[ARR_0]] = ["Гандария","Гарциния индийская","Гарциния Ливингстона","Гарциния Прейна","Генипа американская","Гетеромелес","Гилоцереус коста-риканский","Гилоцереус крупноцветковый","Голубиная слива","Гранат (растение)","Гранат обыкновенный","Гревия азиатская","Грейпфрут","Грумичама","Груша","Груша грушелистная","Груша иволистная","Груша лесная","Груша лохолистная","Груша обыкновенная","Гуава земляничная","Гуайява"]
    [[ARR_1]] = ["Абрикос (фрукт)","Абрикос маньчжурский","Абрикос обыкновенный","Абрикос сибирский","Авокадо","Австромиртус сладкий","Азимина","Азимина трёхлопастная","Айва","Айва бенгальская","Айва китайская","Акебия","Акебия пятерная","Аки (растение)","Алыча","Ананас","Аннона пурпурная","Аннона разнолистная","Аннона сетчатая","Антильский абрикос","Апельсин","Араза","Архат (растение)","Астрокариум колючий","Африканский вишнёвый апельсин"]
    [[ARR_2]] = ["Каимито (растение)","Канистель","Канталупа (растение)","Капулин","Карамбола","Кариокар бразильский","Карисса","Карисса каранда","Карисса крупноцветковая","Квини","Кепель","Кешью","Киви (фрукт)","Кизил обыкновенный","Кокколоба ягодоносная","Кокона","Конфетное дерево","Корлан","Криптокария белая","Ксимения американская","Кудрания триостренная","Кумкват","Купуасу"]
    

    и записываем

    const XlsxPopulate = require('xlsx-populate');
    XlsxPopulate.fromBlankAsync()
        .then(workbook => {
            workbook.sheet(0).cell("A1").value([
                ['фрукты на Г','Фрукты на А','Фрукты на К'],
            ]);
            var c = 2
            for (var i = 0; i < [[ARR_1]].length; i++) {
                workbook.sheet(0).cell("A" + c).value([
                    [ [[ARR_0]][i],[[ARR_1]][i],[[ARR_2]][i] ]
                ]);
                c++
            }
            return workbook.toFileAsync([[RESOURCE_LOCATION]] + "/фаил.xlsx");
        });
    

    так выглядит результат:
    0_1561811179397_f856864d-d444-45fd-b0fa-c7f6692c9c2e-изображение.png

    тестовый скрипт

    файл результат



  • @fox Да у него как я понял проблема не в том как записать, а как распарсить строку.



  • Взял свой список и распарсил в экселе по ячейкам с помощью модуля в VBA.


Log in to reply