0.0
Repository is archived
No release in over a year
A programming language built on top of CSV. You can define functions and variables to use in your spreadsheet, then compile it to Excel, CSV, Google Sheets, etc.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 13
~> 1.4

Runtime

 Project Readme

Deprecated!!!

This version of csv++ is deprecated. For the current version please go to github.com/patrickomatic/csv-plus-plus

main Ruby Style Guide Gem Version

csv++

A tool that allows you to programatically author spreadsheets in your favorite text editor and write their results to CSV, Google Sheets, Excel and other spreadsheet formats. This allows you to write a spreadsheet template, check it into git and push changes out to spreadsheets using typical dev tools.

Template Language

A csvpp file consists of a (optional) code section and a CSV section separated by ---. In the code section you can define variables and functions that can be used in the CSV below it. For example:

mystocks.csvpp
fees := 0.50 # my broker charges $0.50 a trade

price := celladjacent(C)
quantity := celladjacent(D)

def profit() (price * quantity) - fees

---
![[format=bold/align=center]]Date   ,Ticker             ,Price  ,Quantity   ,Profit       ,Fees
![[expand]]                         ,[[format=italic]]  ,       ,           ,"=profit()"  ,=fees

And can be compiled into a .xlsx file by:

$ csv++ -n 'My Stock Tracker' -o mystocks.xlsx mystocks.csvpp

See the Language Reference for a full explanation of features.

Installing

Just install it via rubygems (homebrew and debian packages are in the works):

$ gem install csv_plus_plus

or if you want the very latest changes, clone this repository and run:

$ rake gem:install

Examples

Take a look at the repository of examples repository for a bunch of example .csvpp files.

CLI Arguments

Usage: csv++ [options]
    -h, --help                       Show help information
    -b, --backup                     Create a backup of the spreadsheet before applying changes.
    -c, --create                     Create the sheet if it doesn't exist.  It will use --sheet-name if specified
    -g, --google-sheet-id SHEET_ID   The id of the sheet - you can extract this from the URL: https://docs.google.com/spreadsheets/d/< ... SHEET_ID ... >/edit#gid=0
    -k, --key-values KEY_VALUES      A comma-separated list of key=values which will be made available to the template
    -n, --sheet-name SHEET_NAME      The name of the sheet to apply the template to
    -o, --output OUTPUT_FILE         The file to write to (must be .csv, .ods, .xls)
    -s, --safe                       Do not overwrite values in the spreadsheet being written to. The default is to overwrite
    -v, --verbose                    Enable verbose output
    -x, --offset-columns OFFSET      Apply the template offset by OFFSET cells
    -y, --offset-rows OFFSET         Apply the template offset by OFFSET rows

See Also: