4 ms·
I would naturally do it in Emacs Lisp for its superior excel reading abilities (require 'csv-mode) (let ((input-file "bigfile.xls") (out
by tetris11 2y ago
I would naturally do it in Emacs Lisp for its superior excel reading abilities
(require 'csv-mode)
(let ((input-file "bigfile.xls")
(output-dir "chunked/")
(chunksize 1000))
(cl-labels ((read-csv-file (filename)
(with-temp-buffer
(insert-file-contents filename)
(csv-mode)
(csv-parse-buffer t)))
(write-csv-file (filename data)
(with-temp-buffer
(csv-mode)
(dolist (row data)
(csv-insert-list row))
(write-region (point-min) (point-max) filename)))
(chunk-data (data chunk-size)
(let (result)
(while data
(push (cl-subseq data 0 (min chunk-size (length data))) result)
(setq data (nthcdr chunk-size data)))
(nreverse result))))
(let* ((data (read-csv-file input-file))
(chunks (chunk-data data chunk-size))
(file-count 1))
(dolist (chunk chunks)
(let ((output-file (expand-file-name (format "chunk-%04d.csv" file-count) output-dir)))
(write-csv-file output-file chunk)
(setq file-count (1+ file-count))))
(message "Processing complete. %d files created." (1- file-count)))))
(This is a joke. Do not use this.)
- cr125rider 2y agoThis guy even put his joke disclaimer in parens, GAH!