# PDF, Excel, CSV & Word

> Open PDFs, spreadsheets and Word documents alongside your notes — searchable, linkable, and readable by the AI.

Source: https://docs.docgraph.app/formats/overview/

A DocGraph vault isn't only HTML and Markdown. Drop a PDF, an Excel workbook, a CSV or a Word document into the folder and it becomes a first-class part of the vault: it opens in the app, its text is searchable, and the chat assistant can retrieve from it. These formats are **read-only** — DocGraph shows them, indexes them, and links to them, but doesn't edit them.

*[Screenshot: A one-page PDF memo rendered in DocGraph's viewer, with the vault's file tree alongside it and the native PDF zoom and download controls at the bottom.]*

## Getting there

There is no import step. Copy the file into your vault folder — in Finder, from another app's export dialog, or by dragging it onto the file tree — and it appears in the tree straight away, with a format badge (`MD`, `PDF`, `XLS`, `CSV`, `DOC`, `TXT`, `RTF`, `JSON`, `WB`, `IMG`) where an HTML note shows none at all. A scanned PDF's badge reads **Scan**. Click it like any other file.

The file watcher picks up new files while the app is running, so you don't need to reopen the vault or rebuild anything.

## Core tasks

### Read a PDF

PDFs render in the system's own PDF viewer, embedded in the document pane — real pages, real fonts, with the built-in zoom, page-fit and download controls. This is a genuine PDF render, not a text extraction, so layout, tables and images all appear as they do in any other PDF reader.

### Read a spreadsheet

Excel workbooks (`.xlsx`, `.xlsm`, `.xls`) and OpenDocument spreadsheets (`.ods`) render as a read-only grid — one heading and one table per sheet, in sheet order:

*[Screenshot: A three-sheet Excel workbook rendered as read-only tables: a "Counts" sheet, a "Sites" sheet, and a "Notes" sheet, each under its own heading.]*

What you see is **cell values as last saved by Excel** — DocGraph reads the stored results, not the formulas. Formulas, charts, conditional formatting, colours and merged-cell layout are not reproduced. A banner at the top of the document says so and offers the next step: **Import as Table** makes an [editable copy](#turn-a-spreadsheet-into-an-editable-table) and opens it, and **Open in its app** hands the file to your Mac's default app for it. Its **×** dismisses that kind of banner for this vault.

A CSV renders through the same grid, as a single unnamed sheet with its first row treated as the header:

*[Screenshot: A CSV of field survey records rendered as a table with Date, Site, Region, Species, Count, Observer and Verified columns.]*

### Read a Word document

`.docx` files open in a **reader view** — a centred prose column showing the document's text and heading structure:

*[Screenshot: A Word document rendered as a centred reader view, with its headings styled as document headings and its paragraphs as prose.]*

This is text content only. Images, tables-as-laid-out, page geometry, fonts and styling from the original Word file are not reproduced, and the banner says as much. Its **Open in its app** button opens the file in your Mac's default app for Word documents. It is designed for reading and searching the *content* of a Word document that someone sent you — not for reviewing its formatting.

### Read a plain-text or RTF file

Plain text (`.txt`, `.text`) and Rich Text (`.rtf`) files open in the same reader view. A text file keeps its line breaks, and each blank-line-separated block reads as a paragraph. Accented and non-Latin text reads correctly whether the file is UTF-8, UTF-16 (with a byte-order mark) or an older Windows encoding. No headings are guessed, so the Outline stays empty.

An RTF file shows its text with the formatting stripped, under a notice saying so, with **Open in its app** to open it in the app your Mac uses for RTF. Plain text gets no notice: the reader view is the file.

### Adjust width and text size

Spreadsheets, CSVs, Word, plain-text and RTF files take the same reading controls as a note: the **Display & reading** popover in the toolbar (text size, line spacing, font and full width). A PDF and an image don't; use the PDF viewer's own zoom. See [Reading preferences](https://docs.docgraph.app/editing/reading/#reading-preferences).

### Edit a JSON file

A `.json` file opens in the `<>Source` editor only; the **Edit** pill is locked. You get JSON highlighting, folding by bracket, and **Format document**.

- **Comments and trailing commas** (the `tsconfig.json` style) are accepted, and `//` and `/* */` comments are coloured.
- **Errors are marked where they are.** The first syntax error gets a red dot in the gutter and an underline; point at it for the reason, with line and column. ⌘⇧M opens the problems list and F8 jumps to the next error.
- **Format** leaves a broken file untouched and moves the cursor to the error instead. On a valid file it keeps numbers as you wrote them (`1.50` stays `1.50`), and Windows line endings and a byte-order mark survive saving.

### Turn a spreadsheet into an editable table

Read-only is the rule, with one deliberate exception: right-click an `.xlsx`, `.xlsm`, `.xls`, `.ods` or `.csv` in the file tree and choose **Import as Table…** to copy its rows into a [managed DocGraph table](https://docs.docgraph.app/tables-charts/overview/), which *is* editable and can be queried and charted.

*[Screenshot: The file-tree context menu on a spreadsheet, showing "Import as Table…" among the file actions.]*

This creates a copy. The original file is untouched, and the two do not stay in sync afterwards. A workbook with several sheets becomes one table per sheet, plus a new page next to the file that embeds them; see [Tables, Charts & Queries](https://docs.docgraph.app/tables-charts/overview/) for what you can do with the result.

### Search inside them

Text extracted from all of these formats goes into the same full-text index as your notes, so keyword search reaches inside a PDF's text layer, a spreadsheet's cells, and a Word document's paragraphs:

*[Screenshot: Search results for "Ochre sea star" showing in-file matches inside a CSV and inside an Excel workbook, with the matching cells highlighted in context.]*

Spreadsheet matches show their row as pipe-separated cells, so you can see which record matched. PDF matches carry a `Page N` breadcrumb.

A scanned PDF has no text layer, so there is nothing to search until you make it searchable — see [Scanned PDFs & Images](https://docs.docgraph.app/formats/scans/).

The same extracted text feeds the [chat assistant's](https://docs.docgraph.app/ai/chat/) retrieval, so a vault-wide question can find and cite a passage from a PDF or a Word document exactly as it would from a note.

### Link to them

An ordinary link from a note reaches these files:

```html
<a href="research/Coastal Survey — data sharing memo.pdf">the signed memo</a>
```

The link resolves, the target appears in the [graph](https://docs.docgraph.app/graph/overview/), and the note shows up in the memo's [Links](https://docs.docgraph.app/panels/overview/#links-inbound-and-outbound) panel, under **In**. Note that links only go *one way*: a PDF or spreadsheet has no outbound links of its own, so it always sits at the edge of the graph as a leaf.

## Reference

| Format | Extensions | How it's shown | Text indexed |
|---|---|---|---|
| PDF | `.pdf` | Native PDF render | Yes — text layer only |
| Excel | `.xlsx`, `.xlsm`, `.xls` | Read-only grid, one table per sheet | Yes |
| OpenDocument | `.ods` | Read-only grid | Yes |
| CSV | `.csv` | Read-only grid, single sheet | Yes |
| Word | `.docx` | Reader view, text + headings | Yes |
| Plain text | `.txt`, `.text` | Reader view, blank lines as paragraphs | Yes |
| Rich Text | `.rtf` | Reader view, formatting stripped | Yes |
| JSON | `.json` | The `<>Source` editor, with folding and **Format document** ([details](#edit-a-json-file)) | Yes |
| Images | `.png`, `.jpg`, `.jpeg`, `.gif`, `.webp`, `.svg`, `.avif`, `.bmp`, `.ico` | Opened for viewing | Only once you [make it searchable](https://docs.docgraph.app/formats/scans/) |

### Size and complexity limits

| Limit | Value |
|---|---|
| PDF text extraction | Files above 64 MB are shown but not indexed |
| Spreadsheet file size | Files above 64 MB are not read |
| Spreadsheet cells indexed | 50,000 cells total across all sheets |
| Word document | 64 MB file, 48 MB of uncompressed document text |
| Dragging files onto the tree | 256 MB per file |

Exceeding a limit affects *indexing*, not viewing — a very large PDF still opens, it just won't be searchable.

## Limits & troubleshooting

**A scanned PDF has no text to find — until you ask.** DocGraph reads a PDF's text layer, and a PDF that is really a photograph of a page has none, so it displays perfectly and returns nothing in search. Its badge reads **Scan**, and opening it shows a strip offering **Make Searchable**, which reads the text on your Mac. See [Scanned PDFs & Images](https://docs.docgraph.app/formats/scans/).

**There is no editing, and no round-trip.** The `<>Source` button is disabled on these formats (its tooltip reads *"View-only document — no editable source"*), and **Edit** (`⌘E`) just shows the reader view. To change the file, edit it in the app that owns it and save it back into the vault — DocGraph picks up the change automatically. **Import as Table** copies data out; nothing writes back.

**The per-file AI actions read the same text search does.** Right-clicking a PDF, Excel, Word or CSV file offers **Summarize**, **Suggest tags** and **Ask AI about this**. These run on the file's extracted text — the same projection that feeds search, chat and the link graph — so a summary of a spreadsheet is about its cells and a summary of a PDF is about its pages.

**Other formats are invisible, not broken.** `.doc` (the pre-2007 Word format), `.pptx`, archives, and audio and video files are not listed in the file tree. They can sit in the vault folder and can be linked to from a note without the link being reported as broken — they just can't be opened from the tree. Audio and video are the exception worth knowing: they don't appear in the tree, but a note that embeds one with `<audio controls>` or `<video controls>` plays it, streamed in chunks.
