# Connecting to Excel

> Sisense enables easy and quick access to tables contained within Excel spreadsheets. There are two options for uploading data: The first option is to upload your file to the Sisense Server from your local machine. Once the file is uploaded, the data is imported into the ElastiCube as it was at the time the file was uploaded. The second option is to define the location of your files on the Sisense Server.

*Source: https://docs.sisense.com/main/SisenseLinux/connecting-to-excel.htm*

---

Last updated: June 10, 2026

|  |  |
| --- | --- |
| [Tier](https://www.sisense.com/pricing/#pricing) | [Deployment](https://docs.sisense.com/main/SisenseLinux/introduction-to-sisense-cloud-managed-services.md#ComparisonofManagedCloudandSelfHosted) |
| Launch     Grow    Enterprise | Cloud     On-Prem |

Sisense enables easy and quick access to tables contained within Excel spreadsheets.
  
There are two options for uploading data:

- The first option is to upload your file to the Sisense Server from your local machine. Once the file is uploaded,
  the data is imported into the ElastiCube as it was at the time the file was uploaded.
- The second option is to define the location of your files on the Sisense Server. This is the preferred option if
  your Excel files frequently change, but remain in the same location on the Sisense Server, as the data is taken from
  the Excel files each time the ElastiCube is built.

  **Note:**

  If you are on a Linux deployment, place your files into a sub-folder created in:
  `opt/sisense/storage/`

When you import multiple files from a folder and build your ElastiCube, you have the option to combine the data
together in a single table. To build multiple tables with separate tables for each file, you must repeat the process
for each file you want to import as a table. If you have any questions about data accumulation between builds, please
contact Sisense Support.

[Preparing your Excel files before adding them to your schema in the ElastiCube](#)

Use the following guidelines to prepare and verify Excel files before connecting them with the ElastiCube.

Learn more about Sisense's Excel connector.

## Structure Your Excel Sheet

All Excel data must be imported into Sisense in a **tabular format**, to allow for accurate data
categorization.

Characteristics of Tabular Data include:

1. Each **sheet** represents a **class**, for example customers, sales, employees.
2. Each **column** represents a **variable**, for example revenue, name, address.
3. Each **row** represents a **single observation**, for example customer X's details.
     
   ![Image(128)](https://docs.sisense.com/main/Resources/Images/image(128).png)

## Remove Blank Rows and Duplicate Headers

Remove blank rows OR rows after the first column that have duplicate headers. Blank rows may return incorrect
calculations and results.

![Image(130)](https://docs.sisense.com/main/Resources/Images/image(130).png)

**Blank Rows**: Delete rows 4 and 8 if they contain no data.

**Additional Headers**: Delete row 13 as it has the same titles as the main headers. If this heading
represented a different class of data, a new sheet should be created.

## Remove All Unstructured Data

Remove all unstructured data from each sheet, such as charts, images or non-data elements. Unstructured data cannot
be imported, and may result in other data being obscured.

![Image(131)](https://docs.sisense.com/main/Resources/Images/image(131).png)

**Images, Charts and Non-Data Elements**: All non-data elements must be removed from the sheet, such as
the chart in the image above. All visualization based on Excel data can be created in a dashboard using Sisense.

## Rename/Remove Duplicate Column Names

Rename or remove columns with the same name. Ensure all columns have a unique name. Columns with the same name cannot
be imported into the ElastiCube.

![Image(132)](https://docs.sisense.com/main/Resources/Images/image(132).png)

**Column Names:** Rename columns with the same name, and ensure all columns have a unique name. For
example, in the above example CompanyName appears twice. Once column should be given a different name such as
Secondary CompanyName. In the ElastiCube, you can rename any column as you wish.

## Modify Columns for Quicker Analysis

Consolidate columns as much as possible into a single variable. For example, instead of having a column for each
month of the year, it is best to have a single column with all dates. Unconsolidated columns limit the ability to
analyze and segment data.
  
![Image(133)](https://docs.sisense.com/main/Resources/Images/image(133).png)

**Consolidate Columns:** Data should be consolidated into a single column for each variable. In the
example above instead of having revenue reflected separately as a column for each month, it is best to consolidate the
data into a single column for date and another for revenue. This logic should be applied to any other segments such as
summary by country, or channel, and so forth.

**Additional Methods and Tools for Consolidating (Transposing) Columns**

To consolidate or transpose columns in your files, you can use one or both of the following methods:

- Use an Excel macro to transpose data. This is useful when your data is already in Excel or easy to put into Excel.
- Create custom SQL. This method should be used if importing your data into Excel is more difficult, or the amount
  of data is causing poor performance in Excel. This method requires basic SQL knowledge.

![Image(134)](https://docs.sisense.com/main/Resources/Images/image(134).png)

To learn more about both of the above methods, and to download the macro, see the [Data Transpose Guide](https://support.sisense.com/kb/en/article/data-transpose-guide).

## Convert Scientific Formatting to Numeric Formatting

Convert cells with scientific formatting to another number format. Data in scientific format cannot be imported
correctly into the ElastiCube.

![Image(135)](https://docs.sisense.com/main/Resources/Images/image(135).png)

**Scientific Format:** Convert all values in scientific format to another number format such as number,
currency, accounting, fraction and so forth.

## Create Identical Files when Appending Several Files

When appending data from several Excel files together, the data in the files must have the same column structure and
data types, and the sheets you want to append must all have the same name.

For example, the three files below have the same structure and data types, but different sheet names (Jan, Feb,
March). Sisense cannot append the data in these files, because it does not recognize the files as identical.

![Image(136)](https://docs.sisense.com/main/Resources/Images/image(136).png)

However, if you rename the sheets so they all have the same name (Sheet1), Sisense recognizes these files as
identical, and can successfully append the data in these files.

![Image(137)](https://docs.sisense.com/main/Resources/Images/image(137).png)

## Troubleshooting

When importing an Excel spreadsheet with the XLSX format, if you get the error: "Unable to connect to the
specified file. Corrupt OpenXML document.", try saving the file as XLS and importing it again. If this works,
keep in mind that in an XLS workbook, the row limit is 65,536 (216) and 256 columns (28) which correspond to the
column IV. With XLSX workbooks, limits are 1,048,576 rows (220) and 16,384 columns (214).

**Note:**

For the list of supported connectors, see [Data Source Connectors](https://docs.sisense.com/main/SisenseLinux/introduction-to-data-sources.md).

  

## Importing Data From Your Excel Files

1. In the Data page, open an ElastiCube or create a new ElastiCube.
2. In the ElastiCube, click ![+Data](https://docs.sisense.com/main/Resources/Images/+Data.png); the
   Add Data dialog box is displayed.
     
   ![ConnMgmtChooseConnector](https://docs.sisense.com/main/Resources/Images/connMgmtChooseConnector.png)
3. Choose an available [managed connection](https://docs.sisense.com/main/SisenseLinux/data-source-connection-management.md#AccessingandManagingAvailableConnections), or create a [new connection](https://docs.sisense.com/main/SisenseLinux/data-source-connection-management.md#CreatingNewConnections), for **Microsoft Excel**. The Microsoft Excel Connect area is displayed.
     
   ![8 5excelonline1thumb](https://docs.sisense.com/main/Resources/Images/8-5excelonline1thumb0300.png)
4. Select the relevant option for importing your data:

   - **File Upload**

     1. Select this option to import your data from your CSV file. If the file is updated later, you'll need to upload it again. To upload the file, click **Browse** and navigate to the file to be uploaded or drag the CSV file to the File Upload area.  
        ![8-5CSVfileuploadthumb0300.png](https://docs.sisense.com/main/Resources/Images/8-5CSVfileuploadthumb0300.png)  
         The uploaded file is added to the Uploads list. You can delete the file by clicking ![8 5trashicon](https://docs.sisense.com/main/Resources/Images/8-5trashicon1.png)  
         and confirming you want to delete the file.
     2. Select the relevant CSV file(s) to be uploaded.
     3. (Optional) Toggle the **Union Selected** switch to append several CSV files together when the data is imported into the ElastiCube. The data in the files must have the same column and data types.
     4. After you have finished uploading the relevant CSV files, select them from the upload list and click **Next**. Continue to **Step 5**.
   - **Server Access**

     This is a security option that helps you mitigate Local File Inclusion (LFI) attacks. Attackers could attempt to provide the application with a full input file path outside the current working directory. This could allow them to see the contents of other files stored on the computer running Sisense. To prevent this, you can define specific paths and folders for CSV and Excel files on the Sisense server.

     1. Select this option to define the location of your files on the Sisense Server if your CSV files frequently change, but remain in the same location on the Sisense Server as the data is taken from the CSV files each time the ElastiCube is built.
     2. Select **Input Folder Path** and enter the full file path with the file name where your Excel files are located. This displays each Excel file in the folder in the next screen where you select what tables to add to the ElastiCube.  
         OR  
         Select Input File Path and enter the full file path with the file name and its extension of your CSV file. For example, C:\Example.csv. This file displays all the tables in the CSV file on the next screen where you select what tables to add to the ElastiCube.
     3. (Optional) Toggle the Union Selected switch to append several Excel files together when the data is imported into the ElastiCube. The data in the files must have the same column and data types.
     4. After you have finished defining the locations of your CSV files, click **Next** and continue to **Step 5**. A list of CSV files in the directory are displayed.  

        ![Xl Server Access dialog(4)](https://docs.sisense.com/main/Resources/Images/Xl_Server_Access_dialog(4)_1081x565.png)
5. From the **Select Table list**, click ![8-5CSVpreview1.png](https://docs.sisense.com/main/Resources/Images/8-5CSVpreview1.png)to **select** preview the columns in the Excel file and display the
   Settings, which provides more options for customizing your data.
6. In the Settings area, define the following settings:
   - **Culture**: Select the culture for your Excel. This defines settings such as the format of the
     date and time or delimiter (decimal or comma) used in your Excel file. To change the default culture, see
     [Changing the Default Culture](https://docs.sisense.com/main/SisenseLinux/changing-the-default-culture.md).
   - **Fields in First Row**: Enables you to specify table column names based on the header in the
     first row of the spreadsheet.
   - **Static Range**: Selecting Static Range option enables you to select a specific range of data in
     the sheet. Data needs to be in a table structure, starting at the top left cell of the range, with field names
     as the first row. Define two cells, each with a leading $ sign and a colon as a delimiter. For example, $A1:$E10
     is a static range A1 to E10.

     **Note:**

     Your Excel file must not contain empty rows before the static range.
7. After you have selected all the relevant tables, click **Done**. The tables are added to your schema
   in Sisense.

## Out-of-Memory Issues

When building an ElastiCube with this connector, you might receive an "out of memory" error. To add more
memory, see [Troubleshooting Performance Issues](https://docs.sisense.com/main/SisenseLinux/troubleshooting-performance-issues.md).

## BaseURL and File Uploads

If you have implemented BaseURLs with Nginx, the maximum CSV or Excel file size you can upload is 1.5mb. To upload
files larger than 1.5mb, you need to add the following line of code to your ngnix.conf file located on the Sisense
Server:

`client_max_body_size 220M;`

Where <200M> is the size in megabytes that you want to allow.

**Note:**

The location of the ngnix.conf file depends on where you installed Ngnix.
  
This line should be added to the server object as shown below:

  

| Before | After |
| --- | --- |
| location ~/reporting(/.\*)$ {  set $path $1;  proxy\_pass http://127.0.0.1:8081$path$is\_args$args;  proxy\_http\_version 1.1;  proxy\_set\_header Upgrade $http\_upgrade;  proxy\_set\_header Connection "upgrade";  proxy\_set\_header X-Real-IP $remote\_addr;  proxy\_set\_header X-Forwarded-For $remote\_addr;  proxy\_set\_header Host $host;  proxy\_connect\_timeout 6000;  proxy\_send\_timeout 6000;  proxy\_read\_timeout 6000;send\_timeout 6000;  }  } | location ~/reporting(/.\*)$ {  client\_max\_body\_size 200M;  set $path $1;  proxy\_pass http://127.0.0.1:8081$path$is\_args$args;  proxy\_http\_version 1.1;  proxy\_set\_header Upgrade $http\_upgrade;  proxy\_set\_header Connection "upgrade";  proxy\_set\_header X-Real-IP $remote\_addr;  proxy\_set\_header X-Forwarded-For $remote\_addr;  proxy\_set\_header Host $host;  proxy\_connect\_timeout 6000;  proxy\_send\_timeout 6000;  proxy\_read\_timeout 6000;  send\_timeout 6000;  }  } |
