In Linux/Android/Mac/BSDs, this would be a trivial thing, combining
inotifywait,
fsnotifywait, or
fswatch (
documentation) and a simple Python script.
The Python script would run the watcher in a subprocess, reporting changes to the target directory. On
close_write or
moved_to event affecting the source CSV file, the script re-reads it, saving the filtered results to a target CSV file. The latency depends on the total CPU and I/O load on the machine, but is a small fraction of a second in all but fully CPU or I/O loaded situations.
Python 3 has a built-in
csv library, whose
excel and
excel-tab dialects with
csv.QUOTE_NONNUMERIC quoting is rock solid for Excel, LibreOffice, and OpenOffice. I've done this several times for various large datasets in real life.
I'd need to write only about thirty lines of code to achieve this. Add another twenty or so for a minimal Qt/GTK/Tkinter GUI window for stopping the script, and maybe showing some info about the last modification seen; with a "filter now" button too. Essentially, as long as the script is running, any changes to the source CSV file will result in the filtered CSV file to be updated, with sub-second latency.
For Windows, the issue is detecting the file-close events. You see, if the source CSV file is written to in-place, then each write to the file will affect the timestamp, and your script may read it before it has been fully written. You can work around this somewhat by adding a couple of seconds of latency, which is not needed on other operating systems. (Even
fswatch uses
ReadDirectoryChangesW in Windows, and that does not have a reliable
close_write detection, unlike Linux/Android/OSX/BSD interfaces used.) One can use
ReadDirectoryChangesW via the
pywin32 Python module, so for the few good programs that actually create a temporary file for the new contents, and only when completed rename/link/move it over the existing file, the extra latency is not needed.
Personally, I don't use Windows nor have Windows installed even on a virtual machine, so I cannot help you there any further.
Another approach would be to use an actual database, link the LibreOffice sheet to the database, and have the database read (or a script triggering data updates) the source CSV file when changed. I prefer to work with files myself, because then I can more easily verify and transfer the whole thing, not depending on an external server.