Patrick_35 Posté(e) le 10 janvier 2003 Posté(e) le 10 janvier 2003 Quelqu'un pourrait il me donner un exemple en lisp pour écrire et lire une valeur d'une cellule dans une feuille de calcul excel.Merci :D Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Invité Patrick Posté(e) le 12 janvier 2003 Posté(e) le 12 janvier 2003 A titre d'information et sous toutes réserves, voilà une routine de Bill Kramer qui fait cela, je n'ai pas testée... Plus d'infos et le téléchargement ici. ;; Point A;; A scroll from the Wizard's Lab.;;;; Bill Kramer 2002;;;; Interface with Excel Worksheet;; Example that writes a list of data to a spreadsheet.;;;; Global Variables;; xL - Object reference to EXCEL instance;; myXLWbs - Object reference to EXCEL work books;; myXLWb1 - Object reference to Work book #1;; myXLShs - Object reference to Sheets in Work book;; myXLSh1 - Object reference to Sheet 1;;;;---------------------------------------------------------------------;;(defun List_2_Excel (aList / Row ;;integer row number Col ;;integer column number RowItem ;;each primary element in list ColItem ;;each secondary element in list myRange ;;object reference for cell in sheet ) ;; ;;Does an interface to Excel already exist? (if (null xL) (setq xL ;;if not, then try to make one (vlax-get-or-create-object "Excel.Application"))) (if xL ;;success? (progn ;; ;; We have the application object, now we need to tunnel ;; down into a work book. ;; (if (null xl-open) ;;Check to see if type library defined ;;It is not, import the type library for EXCEL (vlax-import-type-library :tlb-filename "C:/Program Files/Microsoft Office/Office/Excel8.olb" :methods-prefix "xL-" :properties-prefix "xLp-" :constants-prefix "xLc-")) ;; ;; Now dig into the EXCEL object (setq myXLWbs (vlax-get xL "Workbooks") ;workbooks myXLWb1 (xl-add myXLWbs) ;add a new workbook myXLShs (vlax-get myXLWb1 "Sheets") ;worksheets of new workbook myXLSh1 (xlp-get-item myXLShs 1) ;worksheet number 1 Row 1 ) ;; ;; Loop through the list (foreach RowItem aList (setq Col 1) ;;reset column counter ;; ;; List expected to be nested, if not, then we fake it. (if (atom RowItem) (setq RowItem (list RowItem))) ;; ;; Loop through each nested list (foreach ColItem RowItem ;; ;; Create range object given column and row location (setq myRange (xlp-get-range myXLSh1 (strcat (ColLetter Col) ;;see below (itoa Row) )) Col (1+ Col)) ;;increment column counter ;; ;; Write the value to the spreadsheet (xlp-Put-Value myRange ColItem) ) (setq Row (1+ Row)) ;;increment row counter ) ;;end FOREACH )) ;;end IF PROGN);;---------------------------------------------------------------------;; ColLetter - Given a number, returns a string that is the Excel;; method of numbering columns.;; 1="A", 2="B", ... 26="Z", 27="AA", 28 = "Ab" ...;;(defun ColLetter (N / Res ;;resulting string TMP ;;work variable ) (setq Res "") (while (> N 0) (setq TMP (rem N 26) ;;remainder of N divided by 26 TMP (if (zerop TMP) ;;reset to "Z" (setq N (1- N) ;;move under next order TMP 26 ;;set to Z offset value ) TMP) ;;use value as it is Res (strcat ;;Add character (chr (+ 64 TMP)) ;;Offset plus 64 ("A" = 65) Res) ;;existing string N (/ N 26) ;;shift down an order ) ) Res );;==================================================
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant