data lens: excel, log, csv viewer & editor for jira
Atlassian Marketplaceavailable nowruns on Atlassian
Install from the Atlassian Marketplacefree for sites up to 10 users
What the node left behind when it failed is the first thing at the scene. Take the canary: it counts the ERROR, WARN, INFO, DEBUG and TRACE lines on the way in, and a click brings one level into view.
The log from the failing node, the CSV export and the spreadsheet the customer sent all end up attached to the issue, where reading any of them has meant a download first. Data Lens: Excel, Log, CSV Viewer & Editor for Jira opens them on the issue. The panel lists the issue's data file attachments, and the one you pick renders as a paged table right there, its bytes fetched in small ranges through the Jira API as the person viewing the issue, so someone who cannot download an attachment cannot read it through the viewer either. It opens logs and plain text, CSV and TSV, JSONL and NDJSON, Parquet, Excel workbooks and the gzip-wrapped .log.gz, .jsonl.gz and .csv.gz. A log is line indexed and scanned for severity on the way in.
- opens
- logs and plain text (.log, .txt, .out), CSV and TSV, JSONL and NDJSON, Parquet with snappy, gzip, zstd or lz4 columns, Excel .xlsx and .xlsm, and the gzip-wrapped .log.gz, .jsonl.gz and .csv.gz
- runs on
- Jira Cloud, on Atlassian, with no vendor servers
- store
- on the Atlassian Marketplace
- version
- 3.5.0, published 2026-11-06, approved 2026-09-14

what it does
- The panel: press the app actions button under the issue title and choose Data Lens; it lists the issue's data files, and when exactly one is a supported format it opens directly
- Logs and plain text: line indexed; once the level scan finishes, chips show how many ERROR, WARN, INFO, DEBUG and TRACE lines the file has, one click filters to a level and a second click clears it; stack-trace continuation lines stay attached
- CSV and TSV: delimiter sniffing, header detection and quoted fields
- JSONL and NDJSON: records indexed in the background while the first rows render
- Excel: the first sheet with headers detected and date and number formats applied, every sheet listed in the Schema tab, macros never run; a legacy .xls is refused with a plain message
- Parquet: a Schema tab with column types, codecs, encodings and per-column statistics
- Search: scans the whole file and reports a hit count; the arrows jump between matches and Aa toggles case
- Gzip: .log.gz, .jsonl.gz and .csv.gz inflate in the browser under a 384 MB decompressed ceiling; a larger file asks for a download instead
- Row detail: any row opens whole, with a copy button
- Editing: double-click a CSV or TSV cell and type; the change waits in a list until you confirm it, and the file is saved as a new attachment beside the original, which stays as it was
- JSON: an array of objects opens as a table, any other document in the detail pane
the file stays in jira
The panel reads the attachment with your own access, straight from Atlassian in your browser and never through our servers, so the file needs no download and leaves no copy on a laptop. When you edit a cell, the edited file is added as a new attachment next to the original, a comment on the work item names the change, and nothing is deleted.
what it asks for
- read:jira-work, the classic read scope: the attachment list of the issue the panel is open on, then byte ranges of the one attachment you chose to open, fetched as you
- Ten new permissions, used only when you press Apply: two writes, attachments (your edits saved as a new attachment beside the untouched original) and comments (the change noted on the work item), and the eight reads Jira requires beside them: attachments, comments and their properties, users, avatars, groups, projects and project roles; the app never deletes an attachment
- What it stores: nothing on any server outside Atlassian; your browser keeps the theme, the ids of the attachments you open and the text of your searches (up to 200 of each, behind the counts in the trial notice), the notices it has shown and your answer to the one review prompt
- Permissions follow Jira: someone who cannot download an attachment cannot see it through the viewer either
ask rovo about an attachment
On a site with Rovo, the app adds an agent named Lens Attachment Reader to Rovo Chat. Ask it about a file attached to the open work item and it reads the file through the same reader the panel uses, then answers from what it read: the columns and their types, the row or line count, the first rows, the error lines of a log with their line numbers, or the rows that contain a word you name. The file is read as you, so the agent sees only what you can see, and the app itself sends nothing outside Atlassian. A CSV, JSONL, log or text file is read in its first 4 MB, and the answer says which part it covers. The app is listed on the Marketplace AI and Rovo collection.
price, as the store shows it
Free up to 10 users. Past 10 users every user is billed: USD 3.35 per user per month for sites up to 100 users, less per user on larger sites. Billing runs through the Atlassian Marketplace, an annual plan costs ten times the monthly rate, and every paid plan starts with a 30-day free trial.

what's new
- 3.5.0published 2026-11-06
The grid drew some Excel time formats wrong. 14:30 in a cell formatted [Red]h:mm came out as [re31]14:30. With [m], which counts minutes, it came out as [12], and with [s], for seconds, as [0]. These now read 14:30, 870 and 52200, and 14:30 typed over a value in a minutes cell is saved, where it was refused.
A date whose format starts with a tag such as [DBNum1] or [ENG] reads as the plain date, with nothing in front. Dates under a language tag such as [$-409] already showed without the tag here.
Not everything is right. A format with a condition, [>100] for one, shows the number unformatted, and a date under [>100] changed for the worse: it showed with stray characters in front and now shows as a number. A time with no date under a date format shows a day in December 1899.
- 3.4.0published 2026-11-06
2026-10-28 typed into an empty cell of an Excel sheet reached the new attachment as text in 3.3.0, even where the sheet formats that cell as a date. There it now arrives as a date, and so does one typed into a new row under a column of dates.
Some entries in such a cell are refused at Apply, which says what to type instead and adds no attachment: 10/28/2026 is one. So are a time on its own (14:30) where the cell shows a date and a time, and a bare number such as 2026. A word like TBD typed there still goes in as text; the confirmation names the cell, and the comment on the work item quotes the word as typed.
Not every empty cell is one of these. One with no date or time format, on itself, its row or its column, still takes a typed date as text. A row you add borrows from the last filled cell above it when the sheet gives it no format and that cell holds a date or a time, so under 2026-10-27 its cell is a date cell.
- 3.3.0published 2026-11-05
Type 10/28/2026 or 2:30 pm over a date or a time in an Excel sheet, and Apply now refuses it: the message says how to type it, and nothing is written, so no attachment is added. TBD and other words still go through as text. The confirmation names each of those cells first, and the saved banner names them again.
Apply also refuses a sheet with a row or cell tag we can't read safely, so nothing reaches the work item. In 3.2.0 such a file could land as an attachment with broken XML.
14:30 typed over a time reaches the new attachment as a time; 3.2.0 wrote text there, which a sum in Excel leaves out. A cell that holds noon opens in the edit box as 12:00:00, not on a day in 1899, and the comment on the work item now quotes it the same way.
more
- reading data attachments in Confluence and Jira
- every format, every product
- the Confluence edition
- security policy
- support
Pricing, invoices and licensing questions go to sales@twilightventures.dev; anything else about the product to support@twilightventures.dev.