Lisp chỉ có thể làm việc (read và write) với text file, không xâm nhập
được vào cấu trúc của *.xls (nếu được, chắc bác Bill Gate đã phá sản
rồi!).
Có 2 dạng file mà Lisp và Excel cùng hiểu và xử lý được là *.txt và *.csv. Mình xin phân tích kỹ hơn:
Text
file là... file dạng text, nội dung gồm tập hợp các ký tự ASCII, thường
là *.txt. Cho dù bạn có đổi nó thành *.abc, *.def, *.doc... thậm chí là
*.xls cũng được(!) nhưng bản chất của nó vẫn là text file (cốt khỉ vẫn
là... cốt khỉ!).
Một bảng dữ liệu bao gồm các số liệu được tổ chức
theo hàng (row - record) và cột (column - field). Excel hiểu bảng dữ
liệu của text file như sau:
1) Đối với file *.txt:
- Field: căn cứ vào ký tự TAB ("\t")
- Record: căn cứ vào ký tự xuống dòng ("\n")
2) Đối với file *.csv (Comma Separated Value File):
- Field: phân biệt bằng dấu phẩy (,)
- Record: theo ký tự xuống dòng như trên
Bạn
có thể mở 2 kiểu file trên bằng Excel để xem, sửa, bổ sung; có thể dùng
được các công cụ của Excel (ngay cả gán function) rất thuận tiện cho
biên tập. Nhưng khi save, bạn phải giữ nguyên định dạng cũ (Excel sẽ
hiện cảnh báo đối với các trường hợp này). Nếu bạn save theo dạng
*.xls, toàn bộ cấu trúc file sẽ thay đổi (theo đúng kiểu của
MicroSoft), và sau đó chương trình lisp của bạn sẽ không thể nào đọc nó
được nữa!
Nếu bạn muốn làm việc trực tiếp với *.xls thì phải dùng
VBA (MicroSoft Visual Basic for Application) thay cho Lisp. VBA trong
Acad là sản phẩm hợp tác của Autodesk và MicroSoft nên việc hiểu và xử
lý *.xls là "chuyện nhỏ".
Nếu bạn có hứng thú với VBA, chúng ta có thể đề nghị Admin lập thêm một box mới cho mục này.
PS:
Khi bạn dùng Excel để open 3 kiểu file *.txt, *.csv, *.xls, chúng hiển thị giống nhau nhưng bản chất khác nhau một trời một vực:
- *.txt và *.csv: chỉ chứa giá trị (value)
-
*.xls: ngoài value, mỗi cell của nó còn chứa rất nhiều thông tin khác:
định dạng (format), công thức (function), tham chiếu (reference), liên
kết (link).... và nhiều thứ khác nữa!