data·vault_
← Catalog

NFL data in Excel or Google Sheets: import the CSV step by step

Guide to the NFL Games & Betting Lines 1999-2026 pack · free 22-row CSV sample · new to data files? Read what a data dictionary is first.

The sample CSV from the NFL Games & Betting Lines 1999-2026 pack imports into both tools in about two minutes: 22 rows, 46 columns, one row per game, weeks 1 and 2 of the 1999 season. The file is comma-separated UTF-8, and the same import steps run unchanged on the full 7,548-game file.

The steps below cover Google Sheets (File > Import, plus the OPEN() formula), Excel (Data > From Text/CSV), the column formats to check after loading, and example formulas that run on the imported sample. The sample downloads free, no signup. The full pack ships through Getly. Working in Python instead? The pandas quickstart loads the same sample from its URL and runs three small analyses.

Get the CSV

Download sample.csv in the browser, or pull it from a terminal:

curl -o nfl-sample.csv https://jayjex.github.io/data-vault/data/nfl-games/sample.csv

What lands in the file: final scores, the closing spread and total lines, rest days, starting QBs, coaches, referee, stadium, roof, surface, and kickoff weather for 22 games. Ten of the 46 columns come in empty, and the file marks that honestly rather than padding with placeholders: moneylines and odds are blank in this 1999 window (the full file carries them from 2006 on), gametime is blank in early seasons, and temp/wind are blank for the 6 dome games and some older outdoor ones.

The first row is the 46-column header; the 22 data rows follow. The full column list with meanings is in the games.csv column guide.

Import into Google Sheets

  1. Open a blank spreadsheet at sheets.new.
  2. File > Import > Upload, and drop in sample.csv.
  3. Import location: Replace spreadsheet (or Insert new sheet to keep an existing tab).
  4. Separator type: comma. Leave Convert text to numbers, dates, and formulas checked.
  5. Import data. Row 1 holds the 46 headers, rows 2 through 23 hold the games.

The OPEN() formula alternative

Put this in cell A1 of a blank sheet and the whole file pulls in, no download needed:

=OPEN("https://jayjex.github.io/data-vault/data/nfl-games/sample.csv")

Sheets asks to authorize access to external data the first time; approve once. Editing the cell re-pulls the file, which is handy when a snapshot updates. Row counts for the sample stay at 22 data rows, so nothing gets truncated.

Three columns to check after the load

Import into Excel

  1. Open a blank workbook.
  2. Data > Get Data > From File > From Text/CSV (newer ribbons show Data > From Text/CSV directly).
  3. Pick sample.csv. The preview opens with File Origin 65001: Unicode (UTF-8) and delimiter Comma. Leave both as they are.
  4. Click Transform Data instead of Load. In Power Query, select the game_id column, Transform > Data Type > Text.
  5. Home > Close & Load. All 46 columns land as an Excel table, rows 2 through 23 hold the games.

Older Windows Excel (2016 and earlier) has no Get Data ribbon button on some builds: File > Open, browse to the CSV, and the Text Import Wizard runs instead. Choose Delimited, tick Comma, and in step 3 of the wizard set the game_id column to Text before you Finish. On Mac, Data > Get Data (Power Query) or File > Import runs the wizard.

Save the workbook as .xlsx after loading; Power Query keeps the source path, so replacing the file later and running Data > Refresh All re-imports whatever rows the file carries, including the full 7,548.

Columns to format once the data is in

ColumnFieldFormat
Agame_idText. Join key, format season_week_AWAY_HOME
EgamedayDate, ISO YYYY-MM-DD
I, Kaway_score, home_scoreWhole number
M, Nresult, totalWhole number. result = home minus away, total = home plus away
AAspread_lineDecimal. Relative to the home team: -4 means the away team is favored by 4
ADtotal_lineDecimal. Closing over/under, e.g. 44.5
AHroofText. In the sample: 16 rows outdoors, 6 rows dome
AJ, AKtemp, windWhole number. Blank for domes and some older outdoor games

The rest of the 46 columns are defined in the games.csv column guide. The six odds columns (Y, Z, AB, AC, AE, AF) stay empty in this 1999 sample; the full file fills them from 2006.

Formulas to try on the imported sample

These assume the sample sits at A1 with headers in row 1.

One convention worth knowing before you build anything on spread_line: the number is stored relative to the home team. In the sample, 1999_01_BAL_STL closed at 0 (a pick'em) and Baltimore won at home by 17. Away-favored games carry negative values, home-favored positive ones.

From the sample to the full pack

The sample is the first 22 rows of games.csv. The full pack carries all 7,548 games, 1999 through 2026 (results through the 2025 season, plus 272 scheduled 2026 rows), with the derived tables team-records-by-season.csv (861 rows, W/L/T and ATS records per team per season, covered in the team-records CSV guide) and season-summaries.csv (27 rows). A data dictionary and source SHA-256 checksums ship with it. The import steps above run unchanged; only the row count grows.

Not ready for 7,548 rows? season-summaries.csv is a complete table, free, 27 rows, one per season from 1999 to 2025 with scoring averages, home win rates, and favorite cover rates. It imports with the same steps.

Checkout and download run through Getly. The full pack is 3 CSVs (7,548 + 861 + 27 rows), data dictionary, source SHA-256 checksums. The sample and season-summaries download free here, no signup.

NFL data in Excel questions

Does the NFL sample CSV open in both Excel and Google Sheets?
Yes. The file is comma-separated UTF-8 with 46 header columns and 22 data rows, no signup and no email wall. In Google Sheets, use File > Import > Upload or the OPEN() formula. In Excel, use Data > From Text/CSV. The one column to keep as text is game_id, so Excel preserves IDs in the season_week_AWAY_HOME format, like 1999_01_MIN_ATL.
Why does my NFL CSV import show fewer than 46 columns?
The import guessed the wrong separator, or it split values on punctuation inside quoted fields. Set the delimiter to comma, turn off any space separator, and import game_id as Text. The preview dialog shows all 46 headers before anything loads; if column 47 appears, the separator settings are splitting on data inside the stadium field rather than between fields.
Is the 22-row sample the same data as the full NFL pack?
Same 46-column games.csv schema, first 22 rows. The sample covers weeks 1 and 2 of the 1999 season. The full pack carries all 7,548 games from 1999 through 2026, plus the derived tables team-records-by-season.csv (861 rows) and season-summaries.csv (27 rows), a data dictionary, and source SHA-256 checksums. The 27-row season-summaries.csv downloads free from the same data folder.

Source and license

All game rows come from the nflverse-data project, file schedules/games.csv, downloaded 2026-09-06 with the SHA-256 recorded in the pack. nflverse-data is released under CC BY 4.0; credit it as "Data from nflverse, CC BY 4.0". Samples on this site carry the same license. No logos or league marks appear anywhere in the pack; team names are factual data. This page and the pack describe data only and offer no betting advice, picks, or predictions.