Modern CSV 2 is now available.
April 27, 2023Modern CSV is a CSV file editor and viewer with analysis capabilities. I’ve worked hard to incorporate new features and cosmetic enhancements to improve your experience even further. I am now thrilled to present version 2.1. You can download it here:
Windows Installer (EXE)
Windows Portable (Zip)
macOS (DMG)
Linux (Tarball)
Changes
Major Features
- Import JSON and XML files.
- Export to JSON and XML.
- Pivot Table (Premium Business)
Minor Features
- Select Entire Row(s)/Column(s) (Header Excluded) commands.
- Increment/Decrement numerical values via mouse drag. Use the middle mouse button to click on a cell with a number. Drag it and hit a number and/or the ‘-‘, ‘+’, or ‘=’ (for ‘+’) buttons.
- Snap to Column/Row After Scrolling settings.
- Preference window: Added a search field to “Settings” and “Keyboard Shortcuts”.
- ASCII Separated Values parsing standard. Uses ASCII Unit Separator and Record Separator.
- Add or Update ID Column command. (Premium)
- Added Statistics – Selected Cells and Statistics – Selected Cells by Columns commands. (Premium Business)
- All File Analysis tabs (Statistics, Column Analysis, Unique Values, Pivot Table): Added a “Use Thousands Separators” option. (Premium Business)
- Statistics: option to exclude columns without numerical data. (Premium Business)
- Sum and Mean of selected cells in the status bar. (Premium Business)
Bug Fixes
- When the read-only setting is enabled, new files created by the user are editable.
- Improved representation of values in the File Analysis tabs so it wouldn’t show scientific notation until the number is exceptionally large (i.e. 10^15 or higher).
Aesthetics
- Windows: Removed native Windows chrome and integrated the title bar into the theme.
- Mac: Blended the title bar color with the theme.
- General aesthetic improvements.
Details
Import JSON and XML Files
When you call the Import from JSON or XML command, this window will pop up:
You can import files, clipboard contents, or contents from a web URL. It comes with a Preserve Original File Structure option. That option allows you to import a file, make edits, and then export it all while maintaining its structure. This makes it possible for you to edit your JSON and XML files in a more compact table structure.
You can import multiple files at once. Either open them with the Local Files button or drag and drop them into the window. It will attempt to detect file types based on their extensions (i.e. “.json” or “.xml”) or their contents. If it determines a file is not JSON or XML, it will tell you so when you try to import.
Export to JSON and XML
You can export any table file to JSON or XML format. For most files, it will make an entry for each row of the table. In JSON, it will be an array of objects with each object representing a single row. The name for each name-value pair will be the column name (last of the header rows). In XML, there will be a “root” element and each row will be represented by a “record” element. Each column will have an element inside the record with the cell value in the element contents.
Pivot Table
The Pivot Table feature can be used to aggregate numerical data. For instance, if you have a table of sales data and want to know the sum of each salesperson’s sales, the Pivot Table will show you. Select the columns you want involved and call the Pivot Table – Selected Columns command. It will guess which columns belong where and you’re free to move them around as you wish. Table columns can be represented on the left side of the pivot tables or on the top. There’s no limit to how many table columns can be represented on the left or the top. You can also have as many data columns as you wish. The data it displays can be sum, mean, median, std dev, variance, and count (number of data points).
Add or Update ID Column
ID columns are common in CSV files. This command will manage them for you. If you don’t have one already, it will create one and provide every row of your file with an ID. It will ask you which number to start with, so you can start them at 1, 0, 1000000, or whatever you want.
If there already is an ID column, it will find the highest numerical value and start populating the empty cells at one above the highest value.
Increment/Decrement numerical values via mouse drag
One of my favorite features in Modern CSV is the ability to duplicate cells by holding down the middle mouse button and dragging it. Now, if your cell contains a numerical value, you can increment or decrement the value as you click-drag it. To increment, start click-dragging and hit the + key or the = key (which is really the + key when shifted). To decrement, hit one of the minus keys instead.
Furthermore, you can increment or decrement by some number other than 1. To increment by, say 5, press the 5 key. To decrement by 5, press the – key and 5 keys at the same time. The 0 key will increment or decrement by 10. That’s the most you can do with this feature. For a greater interval, you can use the Fill Selected Cells with Series command.
ASCII Separated Values (ASV) parsing standard
The ASCII standard contains two useful characters for making delimited files – the ASCII Unit Separator (0x1F) and Record Separator (0x1E). For reasons that only computer historians are privy to, these characters went mostly unused and we went with commas, semicolons, vertical bars, etc. for unit separators and newlines (0x0A or 0x0D0A) for record separators. That means we have to do unseemly things to work with cells that may contain such characters. Still, some systems are smart and do use these ASCII characters. This version of Modern CSV will correctly parse and save such files. This is a subset of the Unicode Separated Values (USV)™ standard (https://github.com/SixArm/usv). Modern CSV does not support full USV yet, but it may in the future. Let me know if you’d like to see it.
Statistics improvements
Version 2.0 with a Premium Business license introduced statistics functions, but they only worked on entire columns. Granted, you could filter columns or hide certain rows and it would operate on only the visible rows, but there was still a lot of demand to operate on selected cells only. Version 2.1 introduces that capability. You can do stats on all selected cells combined together regardless of which column they’re in with the Statistics – Selected Cells command.
Alternatively, you can selected data across multiple columns and have it compute the stats by column with the Statistics – Selected Cells by Column command.
It also shows the sum and the mean of the selected cells with numerical values in the status bar.
Lastly, the representation of numbers has been improved. In 2.0, if you had a sum in the millions, it would be represented in scientific notation (e.g. 7.01199e+06
). Now, it’ll display it as 7,011,990
. Additionally, if your locale uses dots for thousands separators, it’ll be displayed as 7.011.990
. Comma decimals will also be respected.
Snap to Row/Column After Scrolling
By default, Modern CSV will snap to the nearest row or column when you’re scrolling. Many have asked to make that behavior optional, in particular for columns. If you have large columns, you don’t always want it to automatically snap, so the Snap To Row/Column After Scrolling settings give you the option of disabling that behavior.
I hope you enjoy this latest release. As always, I’m looking for ways to improve it, so if you think of something, feel free to let me know here. Once again, here are the download links:
Windows Installer (EXE)
Windows Portable (Zip)
macOS (DMG)
Linux (Tarball)