какой командой в лиспе можно регулировать ширину столбика в экселе?
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > какой командой в лиспе можно регулировать ширину столбика в экселе?

какой командой в лиспе можно регулировать ширину столбика в экселе?

Ответ
Поиск в этой теме
Непрочитано 29.01.2008, 17:35 #1
doki
 
Регистрация: 17.01.2008
Сообщений: 28

какой командой в лиспе можно регулировать ширину столбика в экселе? Кто знает?

может еще кто-то знает как закрасить ячейку цветом?

Последний раз редактировалось Кулик Алексей aka kpblc, 29.01.2008 в 18:15.
Просмотров: 3575
 
Непрочитано 29.01.2008, 21:27
#2
Солидворкер
Moderator

Конструктор (машиностроение)
 
Регистрация: 23.10.2006
Россия
Сообщений: 23,258
<phrase 1=


Цитата:
Сообщение от doki Посмотреть сообщение
какой командой в лиспе можно регулировать ширину столбика в экселе? Кто знает?

может еще кто-то знает как закрасить ячейку цветом?
Ширину столбца я обычно регулирую мышью
А что lisp уже и до оффиса дотянулся?
Солидворкер вне форума  
 
Непрочитано 29.01.2008, 22:09
#3
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Ага, и достаточно давно. Как только разобрались с СОМ-моделью
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 30.01.2008, 00:53
#4
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Из посланного на другой форум но можно
увидеть как изменять некоторые свойства:

Код:
[Выделить все]
  (defun C:test (/ Bord ExcelApp FilePath Fonto Rang Sht ShtNum Wbk)
  
  (vl-load-com)
    (setq FilePath (getfiled	"Select Excel file to read :"
			(getvar "dwgprefix")
			"xls"
			16
	      )
  )

  (setq ShtNum (getint "\nEnter sheet number <1>: "))
  (if (not ShtNum)(setq ShtNum 1))
  
  (setq ExcelApp (vlax-get-or-create-object "Excel.Application"))
  (vla-put-visible ExcelApp :vlax-true);or :vlax-false for invisible mode
  (setq Wbk (vl-catch-all-apply 'vla-open
		     (list (vlax-get-property ExcelApp "WorkBooks") FilePath)))
  (setq Sht (vl-catch-all-apply 'vlax-get-property
			       (list (vlax-get-property Wbk "Sheets")
				     "Item" ShtNum)))
      (vlax-invoke-method Sht "Activate")
      ;;working with columns :
      (setq Rang (vlax-variant-value
		   (vlax-get-property (vlax-get-property Sht "Columns")
		     "Item" 1))); 1 is column number
      (vlax-put-property  Rang "ColumnWidth" (vlax-make-variant 25.0  3)); 25.0 is new column width, 3 is variant type 
      (vlax-put-property Rang "Horizontalalignment" (vlax-make-variant -4108 3))
      ;;working with rows :
      ;;;      (setq Rang (vlax-get-property Sht "Range" "A:A"));get first row
      ;; the same as :
      (setq Rang (vlax-variant-value
		   (vlax-get-property (vlax-get-property Sht "Rows")
		     "Item" 1))); 1 is row number
      (vlax-put-property  Rang "RowHeight" (vlax-make-variant 18.0  3)); 25.0 is new row height, 3 is variant type 
      (vlax-put-property Rang "Horizontalalignment" (vlax-make-variant -4108 3))
      (vlax-put-property (vlax-get-property Rang "Interior")
	                         "Colorindex" (vlax-make-variant 4))
      ;;working with borders :
      (setq Bord (vlax-get-property Rang "Borders"))
      (vlax-put-property Bord "LineStyle" (vlax-make-variant 1 3))
      (vlax-put-property Bord "Colorindex" (vlax-make-variant 5))
      ;;working with font  :     
      (setq Fonto (vlax-get-property Rang "Font"))
      (vlax-put-property Fonto "Name" (vlax-make-variant "Times New Roman" 12))
      (vlax-put-property Fonto "Size" (vlax-make-variant 12 5))
      (vlax-put-property Fonto "Bold" (vlax-make-variant 1 11))
      (vlax-put-property Fonto "Italic" (vlax-make-variant 1 11))
      (vlax-put-property Fonto "Colorindex" (vlax-make-variant 5));ETC

  
;;;      (vl-catch-all-apply
;;;	'vlax-invoke-method
;;;	(list Wbk "Close")
;;;      );close file w/o saving of changes
    
     ;; ***  or if you need to save changes :
     
    (vlax-invoke-method
Wbk
'SaveAs
(vlax-get-property wbk "Name");short name
-4143 ;exel file format (excel constant)
nil
nil
:vlax-false
:vlax-false
1
2
)
    (vl-catch-all-apply
	'vlax-invoke-method
	(list Wbk "Close" )
      )
    ;;				**** 
	(vl-catch-all-apply
	  'vlax-invoke-method
	  (list ExcelApp "Quit")
	)

  (mapcar
    (function (lambda (x)
		(if (not (vlax-object-released-p x))
		
		  (vlax-release-object x)
		)
	      )
    )
    (list Bord Fonto Rang Sht Wbk ExcelApp)
  )
  (setq	Bord nil
	Fonto nil
	Rang nil
	Sht nil
	Wbk nil
	ExcelApp nil
  )
  (gc)
  (gc)


)
; CaLL :
(C:test)
~'J'~
fixo вне форума  
 
Автор темы   Непрочитано 30.01.2008, 02:28
#5
doki


 
Регистрация: 17.01.2008
Сообщений: 28


вроде разобрался.... а кто знает какому цвету какой номер соответствует?... мне например серый нужен
doki вне форума  
 
Непрочитано 30.01.2008, 11:31
#6
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


В порядке увеличения интенсивности цвета:
12632256, 9868950, 8421504, 3355443

~'J'~
fixo вне форума  
 
Автор темы   Непрочитано 31.01.2008, 11:09
#7
doki


 
Регистрация: 17.01.2008
Сообщений: 28


еще такой вопрос.... из кода Faffy понял как изменить цвет строки... а как изменить цвет в заданной ячейке, например С5...
doki вне форума  
 
Непрочитано 01.02.2008, 01:01
#8
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Для ячейки С5:
(см. код выше)

Код:
[Выделить все]
      (setq Cels (vlax-get-property  Rang "Cells"))
      (setq R1 5
	    C1 3)
      (setq Cel (vlax-variant-value
		    (vlax-get-property Cels "Item"
		      ;; row number :
		      (vlax-make-variant R1)
		      ;; column number :
		      (vlax-make-variant C1))))
   ;; Set interior color :
  (vlax-put-property (vlax-get-property Cel "Interior")
	                         "Colorindex" (vlax-make-variant 28))
~'J'~
fixo вне форума  
 
Автор темы   Непрочитано 01.02.2008, 04:19
#9
doki


 
Регистрация: 17.01.2008
Сообщений: 28


спасибо Fatty.... еще, ели не сложно, можешь написать код обвода контура этой ячейки?
doki вне форума  
 
Непрочитано 01.02.2008, 09:49
#10
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


> doki Это делается проще. В Excell'е запускаешь Сервис -> Макрос -> Начать запись. Делаешь нужные действия и смотришь какие объекты,методы и свойства задействованы.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 01.02.2008, 16:52
#11
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Цитата:
Сообщение от doki Посмотреть сообщение
спасибо Fatty.... еще, ели не сложно, можешь написать код обвода контура этой ячейки?
Эт мы могём:

Код:
[Выделить все]
      ;; working with separate cell :
      (vlax-invoke-method Rang "Activate");optional
      (setq Cels (vlax-get-property  Rang "Cells"))
      (setq R1 1
	    C1 1)
      (setq Cel (vlax-variant-value
		    (vlax-get-property Cels "Item"
		      ;; row number :
		      (vlax-make-variant R1)
		      ;; column number :
		      (vlax-make-variant C1))))
   ;; Set interior color :
  (vlax-put-property (vlax-get-property Cel "Interior")
	                         "Colorindex" (vlax-make-variant 28))
  ;; select this cell from application context:
  (vlax-invoke-method Cel "Select")
  ;; get application selection:  
  (setq Sel (vlax-get-property ExcelApp "Selection"))
  ;; get selection borders (edges)
  (setq Bords (vlax-get-property Sel "Borders"))
  ;; iterate through all edges of selection
  (setq cnt 0)
    (vlax-for a Bords
      (setq cnt (1+ cnt))
      (vl-catch-all-apply (function (lambda()
      (progn				      
      (if (< cnt 5) ; (right, left, top and bottom edges only)
      (progn	
      (vlax-put-property a "LineStyle"
	(vlax-make-variant 1 3))
      (vlax-put-property a "Weight"
	(vlax-make-variant 4 3))
      (vlax-put-property a "ColorIndex"
	(vlax-make-variant 5 5)));progn
	;; turn off the diagonal lines:
      (vlax-put-property a "LineStyle" (vlax-make-variant -4142 3))
	))))))

~'J'~
fixo вне форума  
 
Автор темы   Непрочитано 02.02.2008, 12:28
#12
doki


 
Регистрация: 17.01.2008
Сообщений: 28


Fatty... наверно не так меня понял.... я имел ввиду контур ячейки черной линией чтоб при печати отображалась как таблица... а этот код выделяет ее как клик на ней мышью
doki вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > какой командой в лиспе можно регулировать ширину столбика в экселе?