# How can read local excel from designer?

**URL:** <https://forum.inductiveautomation.com/t/how-can-read-local-excel-from-designer/113651>\
**Category:** Ignition\
**Created:** [January 30, 2026, 5:13am UTC](https://forum.inductiveautomation.com/t/how-can-read-local-excel-from-designer/113651 "2026-01-30T05:13:38Z")\
**Posts on this page:** 1\
**Showing post:** 9

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [January 30, 2026, 4:39pm UTC](https://forum.inductiveautomation.com/t/how-can-read-local-excel-from-designer/113651/9 "2026-01-30T16:39:38Z")

</div>

> [@philin15](#):
>
> when I run it in button script

If the button is in **Perspective** , then the script is running on the gateway, not wherever the Perspective session is. This is a fundamental limitation of Perspective's architecture. You **cannot** access local files on the client machine from Perspective, because that would be behavior indistinguishable from malware.

If you want to process a file the user provides in Perspective, the **only option** is the file upload component.

I'll also make a quick note here and say that you should not trust LLMs to help you write Ignition code.

```python
system.util.getStackTrace

```

There is not and has never been a `system.util.getStackTrace` function. Already you are being set up for failure with an LLM, because it's going to happily throw lots and lots of unnecessary code at you that only makes it harder to understand what's going on.

Here's a ready made script you can adapt, graciously provided by @JordanCClark:

> [@Copying an Excel file to a table's dataset](https://forum.inductiveautomation.com/t/copying-an-excel-file-to-a-tables-dataset/34942/13):
>
> Got my paperwork done early, so here's a sample to read from an Excel file EDIT: Reworked a bit to work with both .xls and .xlsx files EDIT: Modified to properly cast data types EDIT: Added handler for formula cell types EDIT: Added parameters to optionally specify sheet, row, and column numbers Reading back a file created from my other example: def excelToDataSet(fileName, hasHeaders = False, sheetNum = 0, firstRow = None, lastRow = None, firstCol = None, lastCol = None): import org.apac…

---

_[View the full topic](https://forum.inductiveautomation.com/t/how-can-read-local-excel-from-designer/113651)._
