Автор | Сообщение |
Dima
|
| |
Пост N: 2372
Зарегистрирован: 17.05.05
|
|
Отправлено: 21.05.12 16:52. Заголовок: Снова EXCEL
Ранее с Excel из Harbour ни когда не работал. Поставили тут задачу. У некоторых поставщиков есть определенные формы заказов. Набраны они в Excel. Сейчас народ руками заполняет эти формы и шлет по электронке поставщикам. Задача сводится к тому что бы в этих формах находить нужные коды товара и в нужной ячейке проставлять заказ. Может ткнет кто носом с чего начать что бы не напороться на грабли. Спасибо Сами формы тут http://zalil.ru/33279066
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
fil
|
| |
Пост N: 137
Зарегистрирован: 17.06.10
|
|
Отправлено: 03.08.12 18:23. Заголовок: Ну эт понятно. Тока ..
Ну эт понятно. Тока в свойствах FormatConditions я не нашел текста формулы. Собсно, мне нужно отловить событие изменения заливки ячеек формулой условного форматирования дабы прицепить к этим ячейкам примечания.
|
|
|
Dima
|
| |
Пост N: 2479
Зарегистрирован: 17.05.05
|
|
Отправлено: 03.08.12 18:30. Заголовок: Formula1 Formula2 не..
Formula1 Formula2 не оно разве ?
|
|
|
fil
|
| |
Пост N: 138
Зарегистрирован: 17.06.10
|
|
Отправлено: 03.08.12 18:42. Заголовок: Да, это. Можно тепер..
Да, это. Можно теперь выполнить эту формулу в харбор синтаксисе и понять изменялась ли заливка. Лучше, конечно, через Interior:ColorIndex, но не получается
|
|
|
Dima
|
| |
Пост N: 2480
Зарегистрирован: 17.05.05
|
|
Отправлено: 04.08.12 10:09. Заголовок: fil пишет: Лучше, к..
|
|
|
fil
|
| |
Пост N: 139
Зарегистрирован: 17.06.10
|
|
Отправлено: 04.08.12 19:21. Заголовок: Эт я знаю. Не получи..
Эт я знаю. Не получится - формула условного форматирования не меняет ColorIndex/Color. То ли есть еще какой признак цвета, то ли заливка ячейки происходит тока на экране.
|
|
|
Dima
|
| |
Пост N: 2481
Зарегистрирован: 17.05.05
|
|
Отправлено: 04.08.12 21:20. Заголовок: fil Давай XLS файли..
fil Давай XLS файлик (пример) в студию и скажи точно что хош узнать. Поиграюсь.
|
|
|
fil
|
| |
Пост N: 140
Зарегистрирован: 17.06.10
|
|
Отправлено: 05.08.12 12:11. Заголовок: Победил гада ! Т.к...
Победил гада ! Т.к. фомулы условного форматирования отрабатывают тока при визуализации Excel, то в момент заполнения Excel-отчета насильственно рассчитывал их из через Evaluate() и в зависимости от результата клеил комент к ячейке.
|
|
|
gustow
|
| постоянный участник
|
Пост N: 329
Зарегистрирован: 06.02.07
|
|
Отправлено: 09.08.12 06:57. Заголовок: fil пишет: Победил ..
fil пишет: Победу в студию плиз :) (хотя бы в простейшем примере) А то вдруг пригодится?
|
|
|
fil
|
| |
Пост N: 141
Зарегистрирован: 17.06.10
|
|
Отправлено: 09.08.12 09:22. Заголовок: Так рассказал же, вр..
Так рассказал же, вроде, все ?! 1. Требовалось брать инфу из исходных Excel файлов и заливать ее в некий Excel файл-шаблон 2. В шаблоне присутствуют как обычные формулы, так и формулы условного форматирования (ФУМ), красящие ячейки в разные цвета 3. ФУМ отрабатывают тока при визуализации Excel, а мне требовалось отловить событие выполнения этих ФУМ при заполнении шаблона 4. Узнать это моно так a) получить ФУМ - ..cells(x, y):FormatConditions(nn):Formula1 б) выполнить ФУМ методом - ..oExc:Evaluate(ФУМ), чтобы оценить возвращаемое значение Пример писать неохота
|
|
|
gustow
|
| постоянный участник
|
Пост N: 331
Зарегистрирован: 06.02.07
|
|
Отправлено: 10.08.12 07:33. Заголовок: Более-менее понятно...
Более-менее понятно. Спасибо, fil , за разгадку "еще одной тайны Harbour-вселенной" :)
|
|
|
Dima
|
| |
Пост N: 2582
Зарегистрирован: 17.05.05
|
|
Отправлено: 21.12.12 15:57. Заголовок: Как правильно ? oShe..
Как правильно ? oSheet := oExcel:ActiveSheet() или так oSheet := oExcel:ActiveSheet У меня задача работает нормально а у клиента с таким же EXCEL виснет Код примерно такой. Виснет судя по всему в цикле (временно включил oExcel:Visible) oWorkBook := oExcel:WorkBooks:Add() oSheet := oExcel:ActiveSheet() oSheet:Cells:Font:Name := "Arial Cyr" oSheet:Cells:Font:Size := 10 oSheet:Cells( 1, 1 ):Value :=Hb_oemtoansi("Код") oSheet:Cells( 1, 2 ):Value :=Hb_oemtoansi("Наименование") oSheet:Cells( 1, 3 ):Value :=Hb_oemtoansi("Цена") oSheet:Cells( 1, 4 ):Value :=Hb_oemtoansi("Ед.изм") oSheet:Cells( 1, 5 ):Value :=Hb_oemtoansi("Группа") oSheet:Cells( 1, 6 ):Value :=Hb_oemtoansi("Фирма") oSheet:Cells( 1, 7 ):Value :=Hb_oemtoansi("Примечание") oSheet:Range(osheet:cells(1,1),osheet:cells(1,7)):HorizontalAlignment := xlCenter //центр oSheet:Range(osheet:cells(1,1),osheet:cells(1,7)):Font:Bold := .T. oSheet:Range(osheet:cells(1,1),osheet:cells(1,7)):BorderAround( xlContinuous, xlThin) for i=1 to len(mmas) oSheet:Cells( j, 1 ):Value :=mmas[1] oSheet:Cells( j, 1 ):HorizontalAlignment := xlLeft oSheet:Cells( j, 2 ):Value :=mmas[2] oSheet:Cells( j, 2 ):HorizontalAlignment := xlLeft oSheet:Cells( j, 3 ):NumberFormat:="0.00" oSheet:Cells( j, 3 ):Value :=mmas[4] oSheet:Cells( j, 3 ):HorizontalAlignment := xlRight oSheet:Cells( j, 4 ):Value :=mmas[3] oSheet:Cells( j, 4 ):HorizontalAlignment := xlCenter oSheet:Cells( j, 5 ):Value :=mmas[5] oSheet:Cells( j, 5 ):HorizontalAlignment := xlLeft oSheet:Cells( j, 6 ):Value :=mmas[6] oSheet:Cells( j, 6 ):HorizontalAlignment := xlLeft oSheet:Cells( j, 7 ):Value :=mmas[7] oSheet:Cells( j, 7 ):HorizontalAlignment := xlLeft oSheet:Range(osheet:cells(j,1),osheet:cells(j,7)):BorderAround( xlContinuous, xlThin) j++ next oSheet:Columns( 1 ):AutoFit() oSheet:Columns( 2 ):AutoFit() oSheet:Columns( 3 ):AutoFit() oSheet:Columns( 4 ):AutoFit() oSheet:Columns( 5 ):AutoFit() oSheet:Columns( 6 ):AutoFit() oSheet:Columns( 7 ):AutoFit()
|
|
|
|
Pasha
|
| Администратор
|
Пост N: 2629
Зарегистрирован: 23.05.05
|
|
Отправлено: 21.12.12 16:14. Заголовок: Я использую oExcel:A..
Я использую oExcel:ActiveSheet, но кажется разницы нет никакой. Подвисание лучше все-таки локализовать, выдавать на экран окно состояния: заполнение заголовка, номер строки массива, выравнивание столбцов. Возможно, что-то делает сам эксель: выполняет какие-то макросы, проверяет орфографию, и при этом подвисает. В коде программы ведь самые простые команды.
|
|
|
Dima
|
| |
Пост N: 2584
Зарегистрирован: 17.05.05
|
|
Отправлено: 21.12.12 16:28. Заголовок: Dima пишет: oSheet:..
Dima пишет: цитата: | oSheet:Cells( j, 3 ):NumberFormat:="0.00" |
| Выяснил , падает тут , ненравится ему NumberFormat:="0.00" хммм Error WINOLE 1006 Argument Error _NumberFormat
|
|
|
Dima
|
| |
Пост N: 2585
Зарегистрирован: 17.05.05
|
|
Отправлено: 21.12.12 16:39. Заголовок: Фсе разобрался В ре..
Фсе разобрался В региональных настройках Винды в качестве разделителя целой и дробной части стояла запятая а у меня заявлена точка.
|
|
|
Dima
|
| |
Пост N: 3141
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.05.13 13:22. Заголовок: Порча какая то в Har..
Порча какая то в Harbour 3.2 , в 2.0 было нормально. В итоговом документе Excel русский текст выглядит как китайский. Исходник proc main local oSheet local oWorkBook private oExcel if Start_Excel() oExcel:Visible := .f. oExcel:DisplayAlerts:=.f. oWorkBook := oExcel:WorkBooks:Add() oSheet := oExcel:ActiveSheet() oSheet:Cells:Font:Name := "Arial Cyr" oSheet:Cells:Font:Size := 10 oSheet:Cells( 1, 1 ):Value :=Hb_oemtoansi("Код") oSheet:Cells( 1, 2 ):Value :=Hb_oemtoansi("Наименование") oSheet:Cells( 1, 3 ):Value :=Hb_oemtoansi("Цена") oSheet:Cells( 1, 4 ):Value :=Hb_oemtoansi("Ед.изм") oSheet:Cells( 1, 5 ):Value :=Hb_oemtoansi("Группа") oSheet:Cells( 1, 6 ):Value :=Hb_oemtoansi("Фирма") oSheet:Cells( 1, 7 ):Value :=Hb_oemtoansi("Примечание") oWorkBook:saveas(hb_CurDrive()+":\"+CurDir()+"\price.xls") oWorkBook:close(.f.,,.f.) oExcel:Quit() oWorkBook:=nil oSheet:=nil oExcel:=nil endif return ********************** func Start_Excel() Local Res:=.f. #ifndef __XHARBOUR__ #xcommand TRY => BEGIN SEQUENCE WITH {|e| Break( e )} #xcommand CATCH [<!oErr!>] => RECOVER [USING <oErr>] <-oErr-> #endif TRY oExcel := GetActiveObject( "Excel.Application" ) oExcel:DisplayAlerts:=.f. Res:=.t. CATCH Res:=.f. TRY oExcel := CreateObject( "Excel.Application" ) Res:=.t. CATCH Res:=.f. END END Return Res
|
|
|
Dima
|
| |
Пост N: 3142
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.05.13 13:37. Заголовок: Разобрался. Пришлось..
Разобрался. Пришлось добавить REQUEST HB_CODEPAGE_RU1251 hb_cdpSelect( "RU1251" ) ранее и без этого нормально было.
|
|
|
Softlog86
|
| |
Пост N: 90
Зарегистрирован: 03.12.08
|
|
Отправлено: 13.05.13 15:49. Заголовок: Подскажите : Есть ..
Подскажите : Есть строковое значение Артикул - может быть как строкой так и числом (по факту в DBF базе как символьное значение) . При записи этих артикулов - EXCELL отрезает лидирующий ноль , то есть значение '0125' запишет как '125' Каким способом принудительно заставить EXCELL этого не делать ? Тоесть ячейка по факту должна быть ТЕКСТОВОЙ .... соотв. значения не модифицируются ! Какие ещё есть команды чтоб обойти эту дрянь ?
|
|
|
Pasha
|
| Администратор
|
Пост N: 2873
Зарегистрирован: 23.05.05
|
|
Отправлено: 13.05.13 15:57. Заголовок: Указать формат ячейк..
Указать формат ячейки - текстовый, или программно: oSheet:Cells(nRow, nCol):NumberFormat := "@"
|
|
|
Softlog86
|
| |
Пост N: 91
Зарегистрирован: 03.12.08
|
|
Отправлено: 13.05.13 16:37. Заголовок: Символ собаки "@..
Символ собаки "@" - это текстовый ? Если можно - сообщите какие ещё команды управления форматами . Мне нужнее всего текстовый и дата
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 2832
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.05.13 21:03. Заголовок: Softlog86 пишет: Мн..
Softlog86 пишет: цитата: | Мне нужнее всего текстовый |
| Пробел добавь впереди и будет тебе текстовый формат.
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|