If the speed of Python is slower that VLISP.fas
--then is not future inside Python?
LISP stands for List Processing.
Quora==As far as I can see, Hy has no discernable benefits.
If you want to use Python, you’d just use Python.
If you want to use Lisp, there are many excellent versions, including Clojure,
Scheme, Racket and Common Lisp. Common Lisp has many
free versions, including SBCL, CCL, Portacle and community
versions of commercial software such as LispWorks
Anyway try the speed of Go or Julia?
Openpyxl, operates on the .XLSX file itself, so it never launches Excel.
That is a choice you can operate on it without seeing it open.
(vla-put-visible myXL :vlax-true)
4.14696879999974 seconds
not in the millions, but reasonable for such a large data set ... just to give you an ideai use ms office 2003, so i converted xlsx to xls
(defun vk_Excel-GetData (FileName SheetName Range / ExcelObj IsExcelRunning IsFileOpenned BooksObj BookObj SheetsObj SheetObj CellsObj LastCellObj
OutList *error*)
(if (and (or (and (not FileName) (setq ExcelObj (vlax-get-object "Excel.Application")) (setq IsExcelRunning t))
(and FileName (findfile FileName) (setq ExcelObj (vlax-create-object "Excel.Application")))
)
(or IsExcelRunning (not (vlax-put-property ExcelObj "Visible" :vlax-false)))
(if FileName
(and (setq BooksObj (vlax-get-property ExcelObj "WorkBooks"))
(not (vl-catch-all-error-p (setq BookObj (vk_CatchMethod (list BooksObj "Open" FileName nil t)))))
)
(and (setq BookObj (vlax-get-property ExcelObj "ActiveWorkbook")) (setq IsFileOpenned t))
)
(setq SheetObj (if SheetName
(if (setq SheetsObj (vlax-get-property BookObj "Sheets"))
(vlax-get-property SheetsObj "Item" SheetName)
)
(vlax-get-property BookObj "ActiveSheet")
)
)
(or Range (setq CellsObj (vlax-get-property SheetObj "UsedRange")))
)
(setq
OutList (mapcar (function (lambda (row)
(mapcar (function (lambda (cell)
(if (setq cell (vlax-variant-change-type cell vlax-vbString))
(vlax-variant-value cell)
)
)
)
row
)
)
)
(vk_VariantToLst
(vlax-get-property
(vlax-get-property SheetObj
"Range"
(cond (Range)
((strcat "A1:"
(vk_ExcelNumToAbc (vlax-get-property (vlax-get-property CellsObj "Columns") "Count"))
(itoa (vlax-get-property (vlax-get-property CellsObj "Rows") "Count"))
)
)
)
)
"Value"
)
)
)
)
)
(foreach Obj (list (list LastCellObj)
(list CellsObj)
(list SheetObj)
(list SheetsObj)
(list BookObj
(lambda ()
(if (not IsFileOpenned)
(vk_CatchMethod (list BookObj "Close" :vlax-false))
)
)
)
(list BooksObj)
(list ExcelObj
(lambda ()
(if (not IsExcelRunning)
(vk_CatchMethod (list ExcelObj "Quit"))
)
)
)
)
(if (and (car Obj) (not (vl-catch-all-error-p (car Obj))))
(progn (eval (cdr Obj)) (vlax-release-object (car Obj)))
)
)
(gc)
OutList
)
no dependencies because boring
no dependencies because boring
Command: PYDOIT
50000
2.3242195999991964