Форум » [x]Harbour » Снова EXCEL (продолжение) » Ответить

Снова EXCEL (продолжение)

Dima: Ранее с Excel из Harbour ни когда не работал. Поставили тут задачу. У некоторых поставщиков есть определенные формы заказов. Набраны они в Excel. Сейчас народ руками заполняет эти формы и шлет по электронке поставщикам. Задача сводится к тому что бы в этих формах находить нужные коды товара и в нужной ячейке проставлять заказ. Может ткнет кто носом с чего начать что бы не напороться на грабли. Спасибо Сами формы тут http://zalil.ru/33279066

Ответов - 57, стр: 1 2 3 All

Pasha: Создаю книгу, заполняю строки данными Беру oSheet:HPageBreaks:Count. получаю 4 разделителя страниц Визуально в книге их четыре и есть Затем в цикле их перебираю. От одного до трех все в порядке, получаю адрес и номер строки разделителя А на последний: oSheet:HPageBreaks(4) получаю ошибку: MEMBERNOTFOUND В чем ошибка ? Как получить последний разделитель ?

SergKis: Pasha Может от 0-3 ?

Pasha: Глюк становится еще непонятнее Копаю дальше. Оказывается, неважно сколько получается HPageBreaks, Excel дает только первые три, а с четвертого - ошибка Пересохранил книгу из формата xls в xlsx. Теперь Excel дает только первые два разделителя страниц, а с третьего и дальше - ошибка


Pasha: Может от 0-3 ? Нет, пробовал и так, нумерация всех коллекций в Excel идет с единицы

Pasha: Сбросил пример на файлообменник. Здесь Excel дает только два разделителя страниц, а дальше ошибка https://www.mediafire.com/file/gfo5rok5msncf3y/_pg.7z/file

Dima: Pasha пишет: Копаю дальше. Оказывается, неважно сколько получается HPageBreaks, Excel дает только первые три, а с четвертого - ошибка Пересохранил книгу из формата xls в xlsx. Теперь Excel дает только первые два разделителя страниц, а с третьего и дальше - ошибка у меня на 45-м упало Excel 2010

Pasha: Там всего 7 разделителей страниц

Dima: Pasha пишет: ам всего 7 разделителей страниц

Dima: HPageBreaks Count 211

Pasha: Еще страньше. Я гонял на Excel 2016 и 2007. А предварительный просмотр сколько страниц дает ? Должно быть 8, как раз 7 разделителей

Dima: Да 8

SergKis: PS. Наверно, это не надо (убрал лишнее), смотрим только Sheet2 в примере поставил nCnt := 8 или 10 (строки может надо анализировать) все загрузилось

Dima:

SergKis: Dima Спасибо. Наверно, я Пашу не понял, он про разделитель страниц, а я про Sheet (их тут три) А разве нельзя посчитать nCnt разделители от полученного кол-ва строк Sheet2, пробежав по ним ? Ведь полученное, у меня, HPageBreaks Count 218, явно врет

Pasha: У меня там строки разной высоты, поэтому я и выбираю те разделители, которые Excel поставил. Есть еще и сквозные строки, заголовки на каждой странице. Надо поймать все разделители страниц, и на каждой странице внизу добавить строку - итоги по странице. А разделители собаки такие не работают.

SergKis: Pasha пишет У меня там строки разной высоты, поэтому я и выбираю те разделители, которые Excel поставил. Так я и предлагаю их посчитать, пробежав по всем строкам (получив сначала их кол-во, в LibXL от этого пляшу, Sheet->кол-во строк->...), тут не важно высоты строк. Запомнить номер строки перед символом (получить список) и потом в обратном порядке этого списка добавлять строки итоги на каждый лист Sheet2

Pasha: Поскольку HPageBreaks конкретно глючит, нашел другое решение: В цикле по строкам опрашивать: if oSheet2:Rows(nRow):PageBreak # xlNone значит в этой строке разделитель страницы Медленно будет конечно, но пока по другому не получается

Dima: Паша лови решение oExcel:ActiveWindow:View:= xlPageBreakPreview // 2 nCnt := oSheet2:HPageBreaks:Count() // 7

Dima: Результат [pre2] 1 2 3 4 5 6 7 7: 38 70 102 136 170 202 234 [/pre2]

Pasha: Спасибо, заработало !



полная версия страницы