Extract the table in your browser, copy it, paste it into a blank Sheet. No account connection, no upload, and it lands in cells rather than in a single column.
Open the PDF table extractor, press Extract tables, then press 📋 Copy for Google Sheets and paste into a blank Sheet — there is a link beside the button that opens one. The clipboard carries an HTML table and tab-separated text, which is why the columns are already columns when you paste; a CSV would arrive in one column. The PDF is read on your device and never uploaded, and no Google account connection is asked for.
Runs in your browser. No account, no upload, no Drive permission.
The table arrives as cells. No Split text to columns, no import dialog, no upload.
This is the single most common complaint about getting a PDF into Google Sheets, and it has one cause: the data was copied as comma-separated text. Sheets does not split a pasted CSV into cells on its own — you have to go and run Data → Split text to columns afterwards, and then fix everything that had a comma inside it.
Spreadsheets do not talk to each other in CSV. They exchange tabular data as tab-separated text, and they read an HTML table in preference to either. Our copy button puts both on the clipboard in one write, so Sheets takes the HTML table and gets the structure exactly, while a plain text editor takes the tab-separated version.
Because tab-separated text has no quoting convention that survives a paste. If any cell contains a tab or a line break — and an OCR read of a scan can easily produce one — that cell silently destroys the row it is in.
We measured it rather than assuming it. A 7-row, 3-column table with one tab and one line break in it, parsed back from tab-separated text, comes out as 8 rows, every one of them four columns wide. Nothing errors. You would find out when a total came out wrong. The HTML flavour has no such failure mode, because its cell boundaries are tags rather than characters.
A cell whose text begins with =, +, - or @ is the start of a formula to every spreadsheet there is. Paste a supplier's phone number written +44 20 7946 0958 and Sheets tries to evaluate it. Paste a +4 from a Change column and it quietly becomes the number 4, losing the sign the document actually printed. A cell reading =SUM(...) — which a badly extracted formula-looking string can be — becomes a live formula in your sheet.
So those cells get a leading apostrophe, which is the universal spreadsheet marker for keep this as text, and the count is reported next to the button rather than done quietly.
The guard is narrow on purpose, and the narrowness is what makes it safe. A cell the extractor turned into a real number is never touched, so a negative figure keeps its minus sign and stays a number you can sum.
| Across every test document in this project | Count |
|---|---|
| Cells extracted | 1,866 |
Cells beginning = + - @ | 26 |
| …of those, text — protected with an apostrophe | 20 |
| …of those, genuine negative numbers — left alone | 6 |
| Cells containing a tab or a line break | 0 |
The last row is worth being straight about: none of our fixtures contains a tab or a line break in a cell. The two-flavour clipboard is an invariant rather than a fix for a bug we hit — but the measurement above shows exactly what it costs when it does happen, and hand-edited or OCR'd cells are where it will come from.
The reason for the whole guard is that the paste and the download have to agree. +4 is a text cell in the .xlsx, so it has to be a text cell in the Sheet too. If they differed you would have no way of knowing which was right.
Both work and they are good at different things.
| Copy and paste | Download .xlsx, then File → Import | |
|---|---|---|
| Speed | Two clicks | Download, upload, choose options |
| Column widths | Sheets picks its own | Comes with the sheet |
| Several tables | One at a time, whichever you are previewing | All of them, one sheet each |
| Very large tables | Clipboard can struggle | Fine |
| Goes through Google Drive | No | Yes — the file is uploaded to import it |
If the PDF holds several tables — a statement with a summary page, an annual report — the .xlsx route is usually less work, because the extractor already groups pages into tables and gives each one its own sheet.
A statement that has just arrived is a rectangle of text. Three moves turn it into something you can interrogate, and none of them needs a plugin or a script.
Freeze the heading and switch on a filter. View → Freeze → 1 row keeps the labels visible while you scroll; Data → Create a filter puts a dropdown on each heading so you can isolate one payee, or every transaction above a threshold, without dragging a selection across hundreds of lines.
Ask a question with QUERY instead of building formulas. Sheets carries a small SQL dialect no desktop spreadsheet has: =QUERY(A1:E200,"select B, sum(D) where D is not null group by B order by sum(D) desc") gives you a ranked total per payee from a bank statement in one cell, and it recalculates as you correct things. SUMIF and a pivot table both work too; QUERY is simply less scaffolding for a question you ask once.
Let the revision history do your backups. File → Version history keeps every state of the document with a name against each edit, so correcting a misread figure is never destructive and you can see what you changed and when. That is genuinely better than a folder of files named statement-final-v3, and it is the strongest practical argument for putting the data here rather than leaving it in a workbook on a disk.
Two habits that save grief later. Give each imported sheet the period it covers as its tab name, because Sheet1 stops meaning anything by the third import. And if you are going to share the document, use Share → Restricted and add people individually rather than switching on link access — a financial document with a public link is one forwarded message away from being genuinely public, and the link never expires on its own.
This is the one real difference between pasting and importing, and it is worth knowing before you pick.
Pasting carries the values, not the design. The clipboard hands over an HTML table and tab-separated text; Google Sheets reads the cell structure and applies its own default look. Bold survives from the HTML, but the typeface, the shading behind a header row, the ruled borders and the column widths measured off the original page do not travel.
Importing an .xlsx does keep them. Set Output to Preserve appearance in the extractor, download the workbook, then use File → Import → Upload. Sheets reads the fonts, the background shading, the borders, the alignment and the column widths out of the file. A typeface it cannot find it will swap for something near, which is what any spreadsheet does with any workbook.
So the choice is simple. Copy and paste when the figures are the point and you are going to sort, filter or chart them. Download and import when somebody is going to read the sheet and you want it to still look like the statement it came from.
One consequence worth spelling out: importing uploads the workbook to Google Drive, because that is what an import is. Pasting does not. If the document is sensitive enough that you chose a browser-based converter for it, that difference may matter more than the shading does.
Because one-click export means granting a web page access to your Google Drive. Every converter that offers it has to: it signs you in, takes a Drive permission, and creates the file from its own servers — which means your table goes through those servers too.
It is worth being precise about what the clipboard does and does not buy you, because plenty of pages are vague here. Once your table is in a Google Sheet it is on Google's servers. That is what a Sheet is. What changes is that you choose the moment, it is only the table and never the PDF, and this site never holds a token to your account — there is no sign-in on the page and no Google API script in it.
The PDF itself never leaves your device either way. It is read in your browser, and so is the OCR if the pages are scans. If you would rather not involve Google at all, download the .xlsx and open it in Excel, Numbers or LibreOffice.
Extraction is inference, so the useful habit is a thirty-second sanity check once the table has landed. Three tells, in order of how quickly they catch something:
SUM silently ignores text, so one stray text cell makes the total wrong rather than making it complain. Put =SUM(C2:C40) under the column and compare it against whatever total the document itself printed.=COUNT(C2:C40) counts only numbers; =COUNTA(C2:C40) counts everything that is not empty. When the two disagree, the difference is exactly how many cells in that column are text.If a whole column came through as text, select it and use Format → Number, or Data → Split text to columns if two columns ended up sharing one. A single cell is faster to retype. And if a cell shows an apostrophe you did not expect, that is the guard above doing its job — the value beneath it is the one the document printed.
Two housekeeping moves worth making straight away on a long statement: View → Freeze → 1 row so the headings stay put while you scroll, and a filter over the header row so you can sort by date or by amount without dragging a selection across several hundred lines.
This one catches people out and has nothing to do with the extraction. A spreadsheet decides what counts as a decimal point from its locale, not from the file. In the United Kingdom and the United States 1,250.00 is one thousand two hundred and fifty; in Germany, France, Spain, Italy and much of the rest of Europe that same string means something else entirely, because there the comma is the decimal separator and the full stop is the thousands separator.
So a statement printed in one convention, pasted into a Sheet configured for the other, can land as text rather than as money — and the right-alignment tell above is exactly how you spot it. The fix is not to retype the column. It is File → Settings → Locale, set to match the document, and then paste again.
The same applies in reverse to dates. 03/04/2026 is the third of April to a British reader and the fourth of March to an American one, and your Sheet will pick whichever its locale says without mentioning the ambiguity. A document that writes dates as 2026-04-03 avoids the problem outright; if yours does not, decide which convention it uses before you sort by that column.
Worth knowing before you spend time on it, because none of these is a failure you can extract your way out of:
IMPORTDATA and IMPORTHTML in Sheets pull from a public web address and neither reads a PDF, so a monthly statement means repeating these steps monthly.For the first three the honest answer is that the document has to change, not the converter.
A scan holds a picture of a table, not a table, so there are no characters to copy. Tick Read scanned pages (OCR) before extracting and the text is recognised in your browser, after a one-off download of about 6 MB. Every other tool that serves this query uploads your document to do the same job.
The honest part: the structure survives far better than the characters. All five columns of a five-column statement came back at every scan quality we tried, down to 56 dpi — but on a rough scan some figures were misread. The extractor marks cells that cannot be what their column is, and you can correct them in the preview before you copy. Check the figures against the original.