{"id":45923,"date":"2026-11-12T05:25:59","date_gmt":"2026-11-12T05:25:59","guid":{"rendered":"https:\/\/www.withdata.com\/blog\/?p=45923"},"modified":"2026-11-12T05:43:12","modified_gmt":"2026-11-12T05:43:12","slug":"excel-wont-open-large-file-row-limit-and-what-opens-it","status":"publish","type":"post","link":"https:\/\/www.withdata.com\/blog\/bigdatafileviewer\/excel-wont-open-large-file-row-limit-and-what-opens-it.html","title":{"rendered":"Excel Won&#8217;t Open a 350 MB File: The Row Ceiling, the Memory Wall, and What Actually Opens It"},"content":{"rendered":"<p>The workbook is on your disk. Double-click it, and Excel either shows <em>&#8220;Excel cannot complete this task with available resources&#8221;<\/em>, sits at 0% until the file stops responding, or opens 1,048,576 rows and quietly stops. The file is not corrupt, and re-saving it from the machine that made it will not help:<\/p>\n<table>\n<thead>\n<tr>\n<th>Limit<\/th>\n<th>Value<\/th>\n<th>What it means<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Rows per worksheet<\/td>\n<td><strong>1,048,576<\/strong><\/td>\n<td>a <code>.xlsx<\/code> cannot hold more, whatever your hardware<\/td>\n<\/tr>\n<tr>\n<td>Columns per worksheet<\/td>\n<td>16,384<\/td>\n<td>rarely the wall<\/td>\n<\/tr>\n<tr>\n<td>Workbook memory<\/td>\n<td>roughly <strong>10\u00d7<\/strong> the file size<\/td>\n<td>400 MB of xlsx easily becomes 4 GB of RAM in Excel<\/td>\n<\/tr>\n<tr>\n<td>32-bit Office<\/td>\n<td>2 GB address space<\/td>\n<td>it cannot get near that, so it dies first<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>The people in the threads say the same thing. In r\/excel, <em>&#8220;Excel file far too large to even open&#8221;<\/em> (2026-04, 51 comments) and <em>&#8220;Excel grew from 400MB to 650MB&#8221;<\/em> (2026-06, 77 comments) are both about the same wall, and in <em>&#8220;Having trouble extrapolating data from a 10GB CSV file&#8221;<\/em> the advice is to stop using Excel for the job at all.<\/p>\n<h2>1. Three routes out, and only one shows you the data<\/h2>\n<p><strong>Route one \u2014 make the workbook smaller.<\/strong> Delete unused columns, drop formatting, split it into twelve workbooks and puzzle it back together in your head. This is the route everyone starts with, and it is work you repeat every time the report is regenerated.<\/p>\n<p><strong>Route two \u2014 convert it and query it.<\/strong> Convert the xlsx to CSV and open that in a database, Power Query or <code>pandas<\/code>. It works, and if you already live in SQL it is a good answer \u2014 but you no longer have the thing you wanted: the file, on screen, scrolled to row 900,000.<\/p>\n<p><strong>Route three \u2014 open it in something that is not Excel.<\/strong> A grid viewer reads the workbook as a stream of rows instead of building the whole object model in memory, so the file opens and the memory stays flat. That is what <a href=\"https:\/\/www.withdata.com\/big-data-file-viewer\/\" target=\"_blank\" rel=\"noopener noreferrer\">BigDataFileViewer<\/a> does; it is a read-only viewer, which is the point \u2014 you are looking at a 400 MB report, not editing it.<\/p>\n<h2>2. Opening it \u2014 the GUI route<\/h2>\n<ol>\n<li><strong>File \u2192 Open File&#8230;<\/strong> (Ctrl+O), or drag the <code>.xlsx<\/code> onto the window. The file opens in its own tab.<\/li>\n<li>The <strong>Sheet<\/strong> drop-down at the top picks the worksheet; the status bar shows the shape:<\/li>\n<\/ol>\n<p><code>rows \u00d7 cols<\/code>, the file size, how long it took to open, and the memory it is using.<\/p>\n<ol>\n<li><strong>Go to row<\/strong> (Ctrl+G) takes a row number; Ctrl+Home and Ctrl+End go to the first and last row.<\/li>\n<\/ol>\n<p>The grid keeps one page of 50,000 rows in memory and moves the page as you scroll, so the row count does not change the memory figure.<\/p>\n<ol>\n<li><strong>Search \u2192 Find&#8230;<\/strong> (Ctrl+F) scans the whole workbook and lists the hits; double-click one to jump<\/li>\n<\/ol>\n<p>to it. For <code>.xlsx<\/code> this means decompressing the sheet, so it is slower than for CSV, and the progress line says how far it has got.<\/p>\n<ol>\n<li><strong>File \u2192 Export View as CSV&#8230;<\/strong> writes what you are looking at as CSV or TSV, header row included \u2014<\/li>\n<\/ol>\n<p>which is how you hand a slice of the 400 MB file to someone who only has Excel.<\/p>\n<p><img decoding=\"async\" src=\"\/images\/bigdatafileviewer\/bigdatafileviewer-grid.png\" alt=\"BigDataFileViewer showing a 345 MB Excel workbook with 1,048,575 rows and 14 columns, the worksheet picker and a status bar reading 9.86 s and 118.9 MB\" style=\"max-width:100%;height:auto;display:block;\" \/><\/p>\n<p>Measured on the machine that wrote this (Windows, 64-bit), with files opened through the GUI above:<\/p>\n<table>\n<thead>\n<tr>\n<th>File<\/th>\n<th>Rows \u00d7 columns<\/th>\n<th>Open<\/th>\n<th>Memory<\/th>\n<th>Jump to a random row<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>.xlsx<\/code>, 345 MB<\/td>\n<td>1,048,575 \u00d7 14<\/td>\n<td><strong>9.9 s<\/strong><\/td>\n<td>119 MB<\/td>\n<td>last page, still < 1 s<\/td>\n<\/tr>\n<tr>\n<td><code>.xlsx<\/code>, 236 MB<\/td>\n<td>800,000 \u00d7 8<\/td>\n<td><strong>0.72 s<\/strong><\/td>\n<td>21.6 MB<\/td>\n<td>worst of 12 jumps: 0.69 s<\/td>\n<\/tr>\n<tr>\n<td><code>.csv<\/code>, 817 MB<\/td>\n<td>12,000,000 \u00d7 8<\/td>\n<td>1.7 s<\/td>\n<td>21 MB<\/td>\n<td>15 ms average<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Excel refuses the first one outright \u2014 1,048,575 data rows plus the header is exactly the row ceiling, and at that size it cannot keep the workbook in memory anyway.<\/p>\n<h2>3. What you cannot expect from a viewer<\/h2>\n<ul>\n<li>It does not recalculate formulas; it shows the value Excel last stored in the cell.<\/li>\n<li>It does not sort, filter or edit \u2014 it is a viewer. Copy a column, export the view, and do the rest<\/li>\n<\/ul>\n<p>where the data lives.<\/p>\n<ul>\n<li><code>.xls<\/code> (the old binary format) and password-protected workbooks are not opened; it says so and<\/li>\n<\/ul>\n<p>suggests saving as <code>.xlsx<\/code> first.<\/p>\n<ul>\n<li>Very wide sheets (thousands of columns) are read but cost memory; the row ceiling is the case this<\/li>\n<\/ul>\n<p>was built for.<\/p>\n<h2>4. From the command line<\/h2>\n<p>If you only want to know whether a workbook is the one you think it is, the same program answers from the shell \u2014 the numbers land in <code>%TEMP%\\bdv.log<\/code>:<\/p>\n<p>&#8220;<code> BigDataFileViewer.exe \"Q3-orders.xlsx\" --selftest BigDataFileViewer.exe \"Q3-orders.xlsx\" --find \"INV-2026-0042\" BigDataFileViewer.exe \"Q3-orders.xlsx\" --export \"Q3-orders-view.csv\" <\/code>&#8220;<\/p>\n<p><code>--selftest<\/code> opens, jumps and re-reads rows and reports pass\/fail with an exit code, so it can sit in a scheduled check that the nightly export is still readable.<\/p>\n<h2>5. Two traps worth knowing<\/h2>\n<p><strong>The row ceiling is a file-format ceiling, not an Excel setting.<\/strong> If a system exports 1.2 million rows to <code>.xlsx<\/code>, rows past 1,048,576 are already gone in the file \u2014 no viewer can bring them back. Check the row count of the export, not the row count Excel shows.<\/p>\n<p><strong>A &#8220;small&#8221; xlsx can still be slow.<\/strong> Compressed text columns (shared strings) are the expensive part: a 30 MB workbook with 600,000 distinct strings is heavier than a 200 MB workbook of numbers. The memory figure in the status bar is the honest one \u2014 watch it, not the file size.<\/p>\n<h2>FAQ<\/h2>\n<h3>Why does Excel stop at 1,048,576 rows?<\/h3>\n<p>That is the maximum a worksheet can hold in <code>.xlsx<\/code> (and in <code>.xls<\/code>, 65,536). It is a format limit: the row index in the file cannot address more rows.<\/p>\n<h3>Will a 64-bit Office open a 400 MB workbook?<\/h3>\n<p>Sometimes, if the workbook is mostly numbers and the machine has plenty of RAM. 64-bit removes the 2 GB address-space wall, but Excel still builds the whole workbook in memory (several times the file size), so very large or text-heavy files remain slow or fail.<\/p>\n<h3>Can I open the file without converting it first?<\/h3>\n<p>Yes \u2014 that is the route in \u00a72. The viewer reads the <code>.xlsx<\/code> directly (streaming the sheet XML), so there is no conversion step and no second copy on disk.<\/p>\n<h3>Does it change my file?<\/h3>\n<p>No. It opens read-only and writes nothing back. Export writes a new CSV\/TSV next to it if you ask.<\/p>\n<h3>What if the file is on a network share?<\/h3>\n<p>Opening is a streaming read, so the first screen appears as soon as the first rows arrive; jumping to the end reads the sheet to the end, which is slower over a slow link.<\/p>\n<h3>My workbook has formulas \u2014 what do I see?<\/h3>\n<p>The value Excel stored with the formula, not a recalculated one. If the workbook was written by another tool and never opened in Excel, that value may be empty.<\/p>\n<h2>Opening a file that is too big for Excel<\/h2>\n<p>If the job is <em>look at it, find the row, copy the part you need<\/em>, <a href=\"https:\/\/www.withdata.com\/big-data-file-viewer\/\" target=\"_blank\" rel=\"noopener noreferrer\">BigDataFileViewer<\/a> opens CSV, Excel, JSON and XML files of any size in a grid \u2014 the 345 MB workbook above is 1,048,575 rows and 14 columns in 9.9 seconds and 119 MB. There is a 30-day trial, and the <a href=\"https:\/\/www.withdata.com\/big-data-file-viewer\/download.html\" target=\"_blank\" rel=\"noopener noreferrer\">download page<\/a> has Windows, Linux and macOS builds.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The workbook is on your disk. Double-click it, and Excel either shows &#8220;Excel cannot complete this task with available resources&#8221;, sits at 0% until the file stops responding, or opens 1,048,576 rows and quietly stops. The file is not corrupt, and re-saving it from the machine that made it will not help: Limit Value What [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13877],"tags":[13872,13876,13874,13852,13873,13875],"class_list":["post-45923","post","type-post","status-publish","format-standard","hentry","category-bigdatafileviewer","tag-bigdatafileviewer","tag-excel-cannot-complete-this-task","tag-excel-memory","tag-excel-row-limit","tag-large-excel-file","tag-open-large-xlsx"],"_links":{"self":[{"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/posts\/45923","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/comments?post=45923"}],"version-history":[{"count":2,"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/posts\/45923\/revisions"}],"predecessor-version":[{"id":45925,"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/posts\/45923\/revisions\/45925"}],"wp:attachment":[{"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/media?parent=45923"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/categories?post=45923"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.withdata.com\/blog\/wp-json\/wp\/v2\/tags?post=45923"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}