On-line: PSP, SergKis, гостей 0. Всего: 2 [подробнее..]
АвторСообщение
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 [только новые]


Dima
администратор




Пост N: 2373
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 21.05.12 18:37. Заголовок: Пока что интересует:..


Пока что интересует:
поиск в определенной колонке c определенной строки




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




Пост N: 2354
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 21.05.12 19:51. Заголовок: Да никаких особенных..


Да никаких особенных граблей быть не может. Примерно так:

Local oExcel := Win_OleAuto():New( "Excel.Application" ) 
Local oBook, oSheet, oCell, xValue
Local nRow := 3
Local nCol := 3, nCol2 := 5

oExcel:Visible := .f.

oExcel:Workbooks:Open( cFile, 0 )
oBook := oDoc:ActiveWorkBook
oSheet := oExcel:ActiveSheet
while .t.
oCell := oSheet( nRow, nCol )
xValue := oRange:Value
if Empty(xValue)
exit
endif
if xValue == <Kod>
oSheet( nRow, nCol2 ):Value := <Zakaz>
endif
enddo
...

oBook:Close(.f.)
oExcel:Quit()


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




Пост N: 2212
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.05.12 19:56. Заголовок: Dima пишет: Пока чт..


Dima пишет:

 цитата:
Пока что интересует:
поиск в определенной колонке c определенной строки



Форма жестко задана ?
Т.е. нужно найти (например: 001/001) и в ячейку "К-во (кг)" написать тебе нужную цифру ?

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



Пост N: 125
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 21.05.12 20:36. Заголовок: 1. Определяем для Ex..


1. Определяем для Excel-файла ширину/высоту рабочего ранга(было на форуме)
2. Бросаем ранг в массив. Ну и ищем чего надо

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


Пост N: 309
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 22.05.12 06:27. Заголовок: http://files.mail.ru..


http://files.mail.ru/X3JBC6
Пример загрузки из Excel- в базу

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




Пост N: 2374
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 22.05.12 13:48. Заголовок: fil пишет: 1. Опред..


fil пишет:

 цитата:
1. Определяем для Excel-файла ширину/высоту рабочего ранга(было на форуме)



что то не нашел......

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

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



Пост N: 126
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 22.05.12 13:59. Заголовок: oExc:Sheets(nn):Used..


oExc:Sheets(nn):UsedRange:Rows:Count
oExc:Sheets(nn):UsedRange:Columns:Count

oExc:WorkBooks(имя):Close(FALSE,,FALSE)

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




Пост N: 2375
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 22.05.12 14:08. Заголовок: Всем спасибо !!!..


Всем спасибо !!!

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




Пост N: 2376
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.05.12 14:41. Заголовок: Наткнулся на грабли...


Наткнулся на грабли.
MT режим. Запущенная в отдельном потоке функция по по заполнению заявок
упорно не хочет запускать EXCEL.
Функция постоянно выдает FALSE

Private переменная oExcel объявлена из фунции которая вызывает Start_Excel()

Куда копать ?

PS
Простой пример без потоков в MT режиме срабатывает нормально.

 
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
// Ole2TxtError() выдает ошибку 0x800401f0
Res:=.f.
END
END


Return Res



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




Пост N: 2377
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.05.12 18:30. Заголовок: Похоже в MT режиме и..


Похоже в MT режиме и многопоточной обработкой EXCEL запустить не получиться.
Или не прав я и можно как то исправить ситуацию ?

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

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



Пост N: 127
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 23.05.12 22:41. Заголовок: А так можно: Открыв..


А так можно:

Открываем один oExc:=CreateObject(Excel.Application). Открываем файл в нем листы с формами

На каждый трейд ActiveX():New( диалог, "OWC11.Spreadsheet" ) и на каждый кладем свою форму. Обрабатываем.



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


Пост N: 310
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 24.05.12 05:43. Заголовок: Private переменная o..



 цитата:
Private переменная oExcel объявлена из фунции


Я oExcel объявляю в головном файле и стартую из любого места программы

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




Пост N: 2378
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.05.12 08:59. Заголовок: fil пишет: Открывае..


fil пишет:

 цитата:
Открываем один oExc:=CreateObject(Excel.Application)



Dima пишет:

 цитата:
Похоже в MT режиме и многопоточной обработкой EXCEL запустить не получиться



Dima пишет:

 цитата:
Ole2TxtError() выдает ошибку 0x800401f0



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




Пост N: 2379
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.05.12 15:24. Заголовок: Dima пишет: Уж очен..


Dima пишет:

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


Так и поступил. Работает ;)

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



Пост N: 61
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 25.05.12 12:44. Заголовок: Есть задача сгенерир..


Есть задача сгенерировать два XLS файла из одной DBF . Только разные условия для отбора .
Пока делаю последовательно ... Можно-ли клепать их одновременно (как-бы разные листы) ? А затем сохранять каждый лист отдельно ... Но я не знаю как это делать - у меня сохраняется вся книга сразу ....
Научите переключать книги и сохранять их отдельно :)

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




Пост N: 2380
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.05.12 13:53. Заголовок: Примерно так. proc..


Примерно так.

 
proc main
local oWorkBook1
local oWorkBook2
local cfile1:=CurDrive()+":\"+CurDir()+"\"+"z1.xls"
local cfile2:=CurDrive()+":\"+CurDir()+"\"+"z2.xls"
private oExcel

if !Start_Excel()
quit
endif

oWorkBook1 := oExcel:Workbooks:Open(cfile1)
oWorkBook2 := oExcel:Workbooks:Open(cfile2)
oExcel:Visible := .T.
oExcel:Windows(oWorkBook1:name()):Activate() // переключение между файлами
// oExcel:Windows(oWorkBook2:name()):Activate() переключение между файлами

wait
oWorkBook1:save()
oWorkBook1:close(.f.,,.f.)
oWorkBook2:save()
oWorkBook2:close(.f.,,.f.)


oExcel:Quit()
return nil




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



Пост N: 62
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 26.05.12 17:03. Заголовок: Уже спасибки ! А как..


Уже спасибки ! А как быть если XLS файлов нет ? Они создаются во время обработки данных из других DBF файлов ......
Интересует ещё команды изменения свойств ячейки ( столбца) : Тип данных , выравнивание , шаблон вывода.....


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




Пост N: 2382
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.05.12 17:20. Заголовок: Softlog86 А посмотр..


Softlog86
А посмотри примерчик
\svn\harbour\contrib\hbwin\tests\testole.prg

Что касаемо шаблона и выравнивания есть тема на форуме , поищи по слову Excel

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



Пост N: 136
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 03.08.12 17:13. Заголовок: Всем, привет ! Exce..


Всем, привет !

Excel через ole

1. Как получить текст формулы условного форматирования (ежели таковые определены для ячейки) ?
2. Можно ли программно выполнить формулу условного форматирования ?

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




Пост N: 2478
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 03.08.12 18:05. Заголовок: fil Сделай макрос и..


fil
Сделай макрос и все увидишь.
Можно погуглить на предмет Selection.FormatConditions

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