On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
Dima
администратор




Пост N: 2372
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 21.05.12 16:52. Заголовок: Снова EXCEL


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

Спасибо: 0 
Профиль
Ответов - 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 я не нашел текста формулы.
Собсно, мне нужно отловить событие изменения заливки ячеек формулой условного форматирования дабы прицепить к этим ячейкам примечания.


Спасибо: 0 
Профиль
Dima
администратор




Пост N: 2479
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 03.08.12 18:30. Заголовок: Formula1 Formula2 не..


Formula1 Formula2 не оно разве ?

Спасибо: 0 
Профиль
fil



Пост N: 138
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 03.08.12 18:42. Заголовок: Да, это. Можно тепер..


Да, это. Можно теперь выполнить эту формулу в харбор синтаксисе и понять изменялась ли заливка. Лучше, конечно, через Interior:ColorIndex, но не получается

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 2480
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 04.08.12 10:09. Заголовок: fil пишет: Лучше, к..


fil пишет:

 цитата:
Лучше, конечно, через Interior:ColorIndex


http://office.microsoft.com/ru-ru/excel-help/HA001136627.aspx

Спасибо: 0 
Профиль
fil



Пост N: 139
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 04.08.12 19:21. Заголовок: Эт я знаю. Не получи..


Эт я знаю. Не получится - формула условного форматирования не меняет ColorIndex/Color. То ли есть еще какой признак цвета, то ли заливка ячейки происходит тока на экране.



Спасибо: 0 
Профиль
Dima
администратор




Пост N: 2481
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 04.08.12 21:20. Заголовок: fil Давай XLS файли..


fil
Давай XLS файлик (пример) в студию и скажи точно что хош узнать. Поиграюсь.

Спасибо: 0 
Профиль
fil



Пост N: 140
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 05.08.12 12:11. Заголовок: Победил гада ! Т.к...


Победил гада !

Т.к. фомулы условного форматирования отрабатывают тока при визуализации Excel, то в момент заполнения Excel-отчета насильственно рассчитывал их из через Evaluate() и в зависимости от результата клеил комент к ячейке.

Спасибо: 0 
Профиль
gustow
постоянный участник




Пост N: 329
Зарегистрирован: 06.02.07
ссылка на сообщение  Отправлено: 09.08.12 06:57. Заголовок: fil пишет: Победил ..


fil пишет:

 цитата:
Победил гада !

Победу в студию плиз :) (хотя бы в простейшем примере) А то вдруг пригодится?

Спасибо: 0 
Профиль
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(ФУМ), чтобы оценить возвращаемое значение


Пример писать неохота


Спасибо: 0 
Профиль
gustow
постоянный участник




Пост N: 331
Зарегистрирован: 06.02.07
ссылка на сообщение  Отправлено: 10.08.12 07:33. Заголовок: Более-менее понятно...


Более-менее понятно. Спасибо, fil , за разгадку "еще одной тайны Harbour-вселенной" :)

Спасибо: 0 
Профиль
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()



Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 2629
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 21.12.12 16:14. Заголовок: Я использую oExcel:A..


Я использую oExcel:ActiveSheet, но кажется разницы нет никакой.
Подвисание лучше все-таки локализовать, выдавать на экран окно состояния: заполнение заголовка, номер строки массива, выравнивание столбцов.
Возможно, что-то делает сам эксель: выполняет какие-то макросы, проверяет орфографию, и при этом подвисает.
В коде программы ведь самые простые команды.

Спасибо: 0 
Профиль
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

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 2585
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 21.12.12 16:39. Заголовок: Фсе разобрался В ре..


Фсе разобрался

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

Спасибо: 0 
Профиль
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



Спасибо: 0 
Профиль
Dima
администратор




Пост N: 3142
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.05.13 13:37. Заголовок: Разобрался. Пришлось..


Разобрался.
Пришлось добавить
REQUEST HB_CODEPAGE_RU1251
hb_cdpSelect( "RU1251" )

ранее и без этого нормально было.

Спасибо: 0 
Профиль
Softlog86



Пост N: 90
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 13.05.13 15:49. Заголовок: Подскажите : Есть ..


Подскажите :
Есть строковое значение Артикул - может быть как строкой так и числом (по факту в DBF базе как символьное значение) . При записи этих артикулов - EXCELL отрезает лидирующий ноль , то есть значение '0125' запишет как '125'
Каким способом принудительно заставить EXCELL этого не делать ? Тоесть ячейка по факту должна быть ТЕКСТОВОЙ .... соотв. значения не модифицируются !
Какие ещё есть команды чтоб обойти эту дрянь ?

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 2873
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 13.05.13 15:57. Заголовок: Указать формат ячейк..


Указать формат ячейки - текстовый, или программно:

oSheet:Cells(nRow, nCol):NumberFormat := "@"

Спасибо: 0 
Профиль
Softlog86



Пост N: 91
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 13.05.13 16:37. Заголовок: Символ собаки "@..


Символ собаки "@" - это текстовый ?
Если можно - сообщите какие ещё команды управления форматами . Мне нужнее всего текстовый и дата


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2832
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.05.13 21:03. Заголовок: Softlog86 пишет: Мн..


Softlog86 пишет:

 цитата:
Мне нужнее всего текстовый


Пробел добавь впереди и будет тебе текстовый формат.

Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 96
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет