Автор | Сообщение |
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
[только новые]
|
|
Dima
|
| |
Пост N: 4817
Зарегистрирован: 17.05.05
|
|
Отправлено: 22.05.15 17:14. Заголовок: Спасибо Игорь попроб..
Спасибо Игорь попробую. Надеюсь этот код будет и в XP себя также вести. ЗЫ Проверил. Работает отлично.
|
|
|
Haz
|
| |
Пост N: 558
Зарегистрирован: 20.02.11
|
|
Отправлено: 22.05.15 17:18. Заголовок: Dima пишет: Надеюсь..
Dima пишет: цитата: | Надеюсь этот код будет и в XP себя также вести. |
| Да вроде везде одинаково себя ведет. Более того по hWnd можно это окно двигать или менять размеры т.е. можно разделить экран и использовать excel типа для предпросмотра )
|
|
|
Dima
|
| |
Пост N: 4818
Зарегистрирован: 17.05.05
|
|
Отправлено: 22.05.15 17:26. Заголовок: Haz пишет: Более то..
Haz пишет: цитата: | Более того по hWnd можно это окно двигать или менять размеры т.е. можно разделить экран и использовать excel типа для предпросмотра ) |
| Круто !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4180
Зарегистрирован: 12.09.06
|
|
Отправлено: 22.05.15 19:41. Заголовок: Haz пишет: hWnd := ..
Haz пишет: цитата: | hWnd := oExcel:hWnd ShowWindow(hWnd, 3) //SW_MAXIMIZE=3 SW_NORMAL=1 SW_MINIMIZE=6 BringWindowToTop(hWnd) |
| А я долбился года 2 назад, как поверх всех окон выводить Ёксель в Win7 и выше... Спасибо ! А как изменять размеры окна Ёкселя ?
|
|
|
Haz
|
| |
Пост N: 559
Зарегистрирован: 20.02.11
|
|
Отправлено: 23.05.15 09:47. Заголовок: Andrey пишет: А как..
Andrey пишет: цитата: | А как изменять размеры окна Ёкселя |
| MoveWindow( hWnd, ...)
|
|
|
Pasha
|
| Администратор
|
Пост N: 3304
Зарегистрирован: 23.05.05
|
|
Отправлено: 07.07.15 16:44. Заголовок: Пришлось тут заполня..
Пришлось тут заполнять большую форму в экселе: много листов, строки разбиты на множество клеточек Получилось мееееедленно. Строку заполнял традиционным способом: oCell := oSheet:Cells(nRow, nCol) oCell:Value := c1 oCell := oCell:Next oCell:Value := c2 ... Как оказалось, допустим такой синтаксис: aValue := {c1, c2, ...} oSheet:Range(oSheet:Cells(nRow, nCol), oSheet:Cells(nRow, nCol+len(aValue)-1)):Value := aValue При этом заполняется значениями сразу вся строка документа, что значительно быстрее. Некоторые ячейки при этом можно пропускать: aValue := {c1,, c3, ...}
|
|
|
Dima
|
| |
Пост N: 5075
Зарегистрирован: 17.05.05
|
|
Отправлено: 07.07.15 16:55. Заголовок: Pasha Паш об этом у..
Pasha Паш об этом уже писалось. И про сеточку и про заполнение.
|
|
|
Pasha
|
| Администратор
|
Пост N: 3305
Зарегистрирован: 23.05.05
|
|
Отправлено: 07.07.15 18:25. Заголовок: Действительно, я про..
Действительно, я прозевал этот трюк. Но пока сам не пощупаешь.. действительно быстрее в разы Еще лучше преобразовывать адрес ячеек сразу в текст: Вместо: oSheet:Range(oSheet:Cells(nRow, nCol), oSheet:Cells(nRow, nCol2)) использовать oSheet:Range(; if(nCol>26,Chr(Int((nCol-1)/26)+64),'')+Chr((nCol-1)%26+65) + LTrim(Str(nRow)) + ':' +; if(nCol2>26,Chr(Int((nCol2-1)/26)+64),'')+Chr((nCol2-1)%26+65) + LTrim(Str(nRow)) ) это минус вызов 2-х методов excel
|
|
|
Dima
|
| |
Пост N: 5077
Зарегистрирован: 17.05.05
|
|
Отправлено: 07.07.15 18:37. Заголовок: Там еще одна мелочуш..
Там еще одна мелочушка. Если присвоение делаем так :={1,2} А вот если в с того же Range считать данные то получим уже в таком формате {{1},{2}}
|
|
|
Dima
|
| |
Пост N: 5084
Зарегистрирован: 17.05.05
|
|
Отправлено: 08.07.15 15:19. Заголовок: В Ёксель задаю отсту..
В Ёксель задаю отступы листа , но иногда бывает что широкая таблица целиком на страницу не влазит при печати и начинаются авто-переносы. Что надо сказать Ёкселю что бы он вписал таблицу в нужную ширину скажем за счет какой то колонки ?
|
|
|
Dima
|
| |
Пост N: 5085
Зарегистрирован: 17.05.05
|
|
Отправлено: 08.07.15 15:42. Заголовок: Вроде нашлось ;) .F..
Вроде нашлось ;) .FitToPagesWide = 1 .FitToPagesTall = 32000
|
|
|
|
Dima
|
| |
Пост N: 5086
Зарегистрирован: 17.05.05
|
|
Отправлено: 08.07.15 16:00. Заголовок: Окончательный вариан..
Окончательный вариант oSheet:PageSetup:FitToPagesWide:= 1 oSheet:PageSetup:Zoom:= .f. // это обязательно oSheet:PageSetup:FitToPagesTall:= 32000
|
|
|
Haz
|
| |
Пост N: 602
Зарегистрирован: 20.02.11
|
|
Отправлено: 08.07.15 20:32. Заголовок: Dima пишет: oSheet:..
Dima пишет: цитата: | oSheet:PageSetup:Zoom:= .f. // это обязательно |
| все верно делаю так oExcel:ActiveSheet:PageSetup:Zoom := FALSE oExcel:ActiveSheet:PageSetup:FitToPagesWide := 1 oExcel:ActiveSheet:PageSetup:FitToPagesTall := 10 oExcel:ActiveSheet:PageSetup:Orientation := xlLandscape PS. Раньше ответить не мог - винда рухнула, пол дня ставил
|
|
|
Dima
|
| |
Пост N: 5088
Зарегистрирован: 17.05.05
|
|
Отправлено: 08.07.15 21:22. Заголовок: Haz пишет: oExcel:A..
Haz пишет: цитата: | oExcel:ActiveSheet:PageSetup:Orientation := xlLandscape |
| я в портрет хотел вписать , xlLandscape был не вариант ;) Haz пишет: цитата: | PS. Раньше ответить не мог - винда рухнула, пол дня ставил |
| Беккап не юзаем конечно (типа Acronis True Image) и точки восстановления тоже ? ЗЫ Если винты у тебя Сигейт или WD , есть бесплатный вариант ATI. Научу что надо делать. Вещь не заменимая. Ну или аналог Paragon Домашний Эксперт Там все довольно просто Игорь.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4394
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.07.15 12:20. Заголовок: Привет всем. Есть ли..
Привет всем. Есть ли у кого простой текст программы для переноса dbf в xls ? База небольшая 30-40 записей. Ну и вверху листа экселя сделать титул и шапку на русском... Или дайте пожалуйста схему как сделать без всяких наворотов. А то я до этого делал обратную задачу из xls в dbf.
|
|
|
Alex_Cher
|
| |
Пост N: 9
Зарегистрирован: 18.06.15
|
|
Отправлено: 23.07.15 13:19. Заголовок: Например : #define ..
Например : #define xlWorkbookNormal -4143 FUNCTION MAIN() LOCAL oExcel, oWorkBook, _tec_dir := GetCurrentFolder(), _line := 3 SET LANGUAGE TO RUSSIAN oExcel := TOleAuto():New( "Excel.Application" ) oWorkBook := oExcel:WorkBooks:Open( _tec_dir + "\TEST1.DBF" ) oWorkBook:Cells:Font:Name := "Arial" // Офолрмление колонок, ячеек oWorkBook:Cells:Font:Size := 10 oWorkBook:Columns( 15 ):Set( "NumberFormat", '@' ) oWorkBook:Cells(3, 3):Borders():LineStyle := 1 oWorkBook:Range("A2:D2"):Borders():LineStyle := 1 oWorkBook:columns(14):columnwidth := 18 oWorkBook:Cells( 1, 3):Value := "Титул" DO WHILE .NOT.EOF() oWorkBook:Cells( _line, 1):Value := 1->PU // значени полей DBF oWorkBook:Cells( _line, 2):Value := 1->KF oWorkBook:Cells( _line, 4):Value := 1->TV oWorkBook:Cells( _line, 4 ):Set( "NumberFormat", '@' ) // текстовая ячейка oWorkBook:Cells( _line, 12):Value := 1->ZU oWorkBook:Cells( _line, 12 ):Set( 'NumberFormat', '########0,00' ) // числовая ячейка ....... _line++ SKIP ENDDO oWorkBook:SaveAs( _tec_dir + "\NEW.XLS", xlWorkbookNormal ) oExcel:Visible = .T. RETURN NIL
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4395
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.07.15 13:24. Заголовок: Спасибо БОЛЬШОЕ ! :..
Спасибо БОЛЬШОЕ !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4397
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.07.15 17:33. Заголовок: Есть цвет из МиниГуи..
Есть цвет из МиниГуи {234,240,207}. Как сделать заливку ячейки в Экселе этим цветом ?
|
|
|
Dima
|
| |
Пост N: 5149
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.07.15 17:43. Заголовок: Как то так ActiveWor..
Как то так ActiveWorkbook.Colors(1) = RGB(234,240,207) Затем красим с индексом 1
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4398
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.07.15 18:28. Заголовок: Alex_Cher пишет: oE..
Alex_Cher пишет: цитата: | oExcel := TOleAuto():New( "Excel.Application" ) oWorkBook := oExcel:WorkBooks:Open( _tec_dir + "\TEST1.DBF" ) |
| А как сделать без открытия базы ? База у меня открывается в другом месте и не все поля нужно перетаскивать в Эксель. Как создать новый документ xls ?
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|