2009/03/21

[Common Lisp] cl-win32ole で日時を扱えるようにした

cl-win32ole で日時を扱えるようにした。

Common Lisp になぜか使いやすい日時のデータ型がないので、それも作ってみた。

darcs get http://li31-15.members.linode.com/darcs/simple-date-time

以下、テスト用のコード。create-object の2番目の引数で GC 時に指定したメソッドを実行するようにした。下の例だと、(setf ex nil sheet nil) で参照のなくし、(gc :full t)するとquit が呼ばれる。

(require :cl-win32ole)
(use-package :cl-win32ole)

(progn
(defparameter ex (create-object "Excel.Application" :quit))
(setf (slot-value ex 'visible) t)
(defparameter sheet
(ole (slot-value ex 'workbooks)
:open "/Users/ancient/Documents/a.xls" :worksheets :item 1))
)

(print (ole sheet :range "A1:D1" :value))

(setf (ole sheet :range "A2:B2" :value) (list nil nil))
(setf (ole sheet :range "A2:B2" :value)
(list
(make-instance 'dt:date-time :year 1973 :month 4 :day 26
:hour 0 :minute 0 :second 0 :millisecond 0)
(make-instance 'dt:date-time :year 1973 :month 4 :day 26
:hour 23 :minute 24 :second 25 :millisecond 26)))

(setf ex nil sheet nil)
(gc :full t)

0 件のコメント: