A small, native Windows CSV table viewer built with C++20 and raw Win32 API.
It is designed as a fast, read-only utility for opening CSV-like files in a virtual table, without .NET, Electron, Qt, or other heavy UI stacks.
- Native Win32 app (
WC_LISTVIEWin report + owner-data mode). - Memory-mapped file loading for efficient handling of large files.
- Lazy row/cell parsing for virtualized display performance.
- Open files from:
- command-line argument (
csvviewer.exe <path-to-file>) File -> Open...- drag and drop onto the app window
- Header row support:
- first CSV row is used as column headers
- header columns are created dynamically
- Delimiter detection:
- semicolon (
;), comma (,), tab (\t) - consistency-based heuristic with semicolon priority on ties
- Encoding detection:
- UTF-8 with BOM
- UTF-8 (valid UTF-8 byte sequences)
- ANSI/code-page fallback
- Read-only table behavior:
- vertical and horizontal scrolling
- full-row selection
Ctrl+C/Edit -> Copycopies selected rows as tab-separated text- Usability:
- status bar with row/column count, delimiter, and encoding
- search/filter box (case-insensitive row filtering)
- column sorting by clicking headers (toggle ascending/descending)
- auto-fit columns command
- zoom in/out and preset font sizes
- double-click cell for detail popup
- recent files menu persisted in
settings.ini
- Read-only viewer only (no cell editing or save-back).
- Pragmatic CSV parser with quoted field support and escaped quotes (
""). - Embedded newlines inside quoted fields are not a primary v1 target.
- Windows 10/11
- Visual Studio 2022 Build Tools (C++ workload)
- CMake 3.15+
- PowerShell 7+ (recommended)
Release build:
.\build.ps1 -Configuration ReleaseDebug build:
.\build.ps1 -Configuration DebugUse Ninja generator (if ninja is available on PATH):
.\build.ps1 -UseNinja -Configuration ReleaseClean build directory before configure/build:
.\build.ps1 -Clean -Configuration ReleaseOptional smoke test (launches and closes the GUI executable):
.\build.ps1 -Configuration Release -RunSmokeTest- Visual Studio generator:
build\Release\csvviewer.exe(orbuild\Debug\csvviewer.exe) - Ninja generator:
build\csvviewer.exe
- Launch without arguments, then open via
File -> Open... - Or launch directly with a file path:
.\build\Release\csvviewer.exe .\sample.csvGitHub: git@github.com:Danmoreng/simple-csv-viewer.git
This project is licensed under the MIT License. See LICENSE.
