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

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

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

Ответов - 300, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All

Andrey: SergKis пишет: Можешь формировать дату hb_dtoc( dDate, "yyyy-mm-dd") Отлично ! А тип ячеек менять надо ?

SergKis: Andrey hb_dtoc(dDate, "yyyy-mm-dd") возвращает строку ( как и DtoC(...) ), а второй параметр это шаблон, т.е. SET DATE TO GERMAN и DtoC(dDate) даст dd.mm.yyyy с hb_dtoc() можешь динамически менять формат отображения на выходе строка Что бы не парится,что у клиента на машинах, всегда дату подаю в excel строкой, а бывает, что excel пытается съесть в свой формат, тогда добавляю слева пробел или &npsp;

SergKis: PS   правильно букву просмотрел


Pasha: Если заглянуть в кишки, то hbole преобразовывает значение типа дата в тип VT_DATE, и передает экселю команду присвоения для Value. Если формат ячейки общий, то эксель, а он же гипер-супер-смарт, то есть умный, может преобразовать формат ячейки в дату, тогда значение отображается правильно. А может не преобразовать, оставить его общим, тогда дата отображается как число. Поэтому лучше формат ячейки указать самому. Можно не текстовый формат, а дату: oCell:NumberFormat := "m/d/yyyy"

Sergy: Тоже в свое время намучился с датами. И апострофы подставлял, и ячейки форматировал. Всё не то. Потом понял, что Excel хочет видеть дату только так: yyyy/mm/dd Работает на всех версиях Excel и Windows. Плюс форматировать дополнительно ячейки не нужно.

Dima: Sergy пишет: Потом понял, что Excel хочет видеть дату только так: yyyy/mm/dd Это ты про какой вариант ? oCell:NumberFormat := "yyyy/mm/dd" или hb_dtoc( dDate, "yyyy/mm/dd") ?

Sergy: Dima пишет: Это ты про какой вариант ? oCell:NumberFormat := "yyyy/mm/dd" или hb_dtoc( dDate, "yyyy/mm/dd") ? Про содержимое ячейки: hb_dtoc( dDate, "yyyy/mm/dd") После этого форматировать дополнительно уже редко нужно. Например, если только заголовки столбцов/колонок в специфическом виде, например "янв 20", или "Декабрь 2019"

Andrey: Всем привет ! А как задать показ листа в масштабе 75% ?

Pasha: Запись макроса сломалась ?

Andrey: Pasha пишет: Запись макроса сломалась ? Да блин разбираться надо, а вдруг уже это кто-то давно решил... У меня в экспорте цвет сломался, пока с этим разбираюсь.

Dima: Andrey пишет: А как задать показ листа в масштабе 75% ? oExcel:ActiveWindow:Zoom:=88

Andrey: Dima пишет: oExcel:ActiveWindow:Zoom:=88 СПАСИБО !

Oskar_AAA: Добрый день, коллеги. используем: xHarbour version...: xHarbour build 1.2.1 Intl. (SimpLex) (Rev. 6476) xHarbour built on..: Jun 11 2009 09:38:24 C/C++ compiler.....: Borland C++ 5.5.1 (32 bit) перешли на OC Win10 pro + Excel 365 и нет прав администратора. Программа формирует 500 отчетов в dbf и конвертирует их в Xlsx, затем последовательно собирает их в сводный (511 листов) Excel файл. Программа валится в разных местах (файлах) при конвертации в Xlsx Subsystem Call ....: Excel.Application:ACTIVEWORKBOOK:SHEETS System Code .......: 3 Default Status ....: .F. Description .......: DISP_E_MEMBERNOTFOUND Operation .........: PASTE Arguments .........: Involved File .....: Dos Error Code ....: 0 Trace Through: ---------------- до этого была OC Win8x64+ Excel 2010 и права администратора, ошибки не было, или была очень редко. На ноутбуке OC Win10 pro +Excel 365 и права администратора - проблем нет. ниже пример кода вызов Excel oExcel :=ToleAuto():New("Excel.Application") oExcel_S:=ToleAuto():New("Excel.Application") oExcel :Visible=.F. oExcel :Set("DisplayAlerts",.F.) oExcel :Workbooks:Open(Dbf_File) oBook :=oExcel:ActiveWorkBook oSheet :=oExcel:ActiveSheet oAs :=oExcel:ActiveSheet() oRange :=oExcel:ActiveCell:SpecialCells(xlLastCell) cRecno :=oRange:Row cColumn :=oRange:Column ///// oAs:Range(oAs:Cells(2,2),oAs:Cells(cRecno,cColumn)):Select() oAs:Range(oAs:Cells(2,2),oAs:Cells(cRecno,cColumn)):Copy() // MS Excel и переключение на него oExcel_S:Workbooks:Open(Day_Excel) oExcel_S:Set("DisplayAlerts",.F.) oExcel_S:Visible :=.F. // запуск сводного Excel oBook_S :=oExcel_S:ActiveWorkBook oAs_S :=oExcel_S:ActiveSheet() oSheet_S:=oBook_S :Sheets(1):Select() oSheet_S:=oBook_S :Sheets(1) oSheet_S:Cells(1,1):Value=Hb_OemToAnsi(Ll_Say) oSheet_S:Cells(2,1):Value=Hb_OemToAnsi(Ff_Say) oSheet_S:Cells(2,3):Value=Dtoc(Date())+','+Substr(Time(),1,5) oAs_S:Range(oAs_S:Cells(1,1),oAs_S:Cells(2,8)):Font:Bold:=.T. // сводный Excel oSheet_S:=oBook_S :Sheets(1):Select() oBook_S :=oExcel_S:ActiveWorkBook oAs_S :=oExcel_S:ActiveSheet() oSheet_S:=oBook_S :Sheets(1):Select() oSheet_S:=oBook_S :Sheets(1) oAs_S :Cells(6,1):Select() oSheet_S:Paste() Hb_GtInfo(HB_GTI_CLIPBOARDDATA, "") в чем может быть проблема? ИБ не дают права локального администратора.... На виртуальной станции, там права админа - программа работает корректно (8х64 +Excel2010)

Dima: Oskar_AAA пишет: перешли на OC Win10 pro + Excel 365 и нет прав администратора. А если их временно дать , что то изменится ?

Haz: Переодически ловил непредсказуемые ошибки при копипасте В OLE. Если просто конвертить dbf в xlsx, забудьте про OLE. Посмотрите на xlsxml. В разы быстрее и не зависит от капризов екселя. ps... 500 отчётов... я бы не выдержал, а ексель вообще уйдёт в

Dima: Haz пишет: Посмотрите на xlsxml Хороший вариант по ходу ЗЫ Сам я пока на него не перешел но где то в далеких планах есть такой переход

SergKis: Dima пишет Сам я пока на него не перешел но где то в далеких планах есть такой переход У нас, не давно, опять было сообщении об аресте и конфискации парка pc у фирмы, за использование продуктов майкрософт без лицензии (за этим следит созданная спец. организация). Дима, как только ваши депутаты сообразят, что тут клондайк, тоже соорудят такое. Ведь "чем дальше в лес" ES тем больше бабла рубят. Многие имеют в лучшем случае одну лицензию на excel и работают по очереди или openoffice и вариант xlsxml очень удобен, т.к. без ole

Dima: SergKis пишет: Ведь "чем дальше в лес" ES тем больше бабла рубят. Да в этот ES , у нас только когда все разворуют , вот тогда может и сообразят..........

rvu: Haz пишет: Переодически ловил непредсказуемые ошибки при копипасте В OLE. Я заполнял небольшие таблицы, всё нормально было. А какие ошибки при каких операциях?

Haz: rvu пишет: А какие ошибки при каких операциях? Всё настроишь, все работает и вдруг через год или два валится на pagesetup или printquality это из последних. Часто на формат данных вдруг ругаться начинает. На копи пасте из одного листа в другую книгу, где то на сотом цикле может рухнуть.. Да и в целом очень зависимый механизм от версии офиса. При этом если произошла ошибка эусель как правило зависает в пямяти процессом и срубается только диспетчером тк так его не видно. Но самое нетерпимое это скорость работы этой Оли.



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