For working with uploaded files, Stimulsoft Server has a special type of a StiItem - StiFileItem, which has some specific features and capabilities. StiFileItem is an element that provides storing files, uploaded by users. Some files contain data that can be used in the reports as a data source – these are XLS documents, CSV tables, DBF databases, JSON strings etc. Getting the structured data from these files is possible using the StiFileItem.GetData (StiFileItem.GetDataAsync) method. At creation of a StiFileItem you must specify the type of data which the loaded file contains. Allowed values listed in enumeration StiFileType:

Unknown - Unsupported file type

ReportSnapshot - Rendered report

Pdf – PDF file

Xps – XPS file

Html – HTML file

Text – Text file

RichText – RichText file format (RTF)

Word – MS Word document file

Excel – MS Excel document file

PowerPoint – MS PowerPoint presentation file

OpenDocumentWriter – OpenDocument file for Writer

OpenDocumentCalc – OpenDocument file for Calc

Data - One of multiple data format

Image - One of multiple image format

Xml – XML file

Xsd – XSD file

Csv – CSV file

Dbf – DBF file

Sylk – SYLK file

Dif – DIF file

Json - Data in the JSON format

 

These examples create an element of the StiFileItem type, load a file into it and receive the data as a table from it:

 

.NET API

...

public void FileItemGetData()

{

var connection = new Stimulsoft.Server.Connect.StiServerConnection("localhost:40010");

connection.Accounts.Users.Login("UserName@example.com", "Password");

 

const string excelFileName = @"C:\sample.xls";

 

var fileItem = connection.Items.Root.NewFile("ExcelFile", StiFileType.Excel).Save();

fileItem.UploadFromFile(excelFileName);

 

var table1 = fileItem.GetData("Sheet1");

var rowsCount = table1.Rows.Count;

 

connection.Accounts.Users.Logout();

}

...

 

 

An asynchronous method:

 

.NET API

...

public async void FileItemGetDataAsync()

{

var connection = new Stimulsoft.Server.Connect.StiServerConnection("localhost:40010");

await connection.Accounts.Users.LoginAsync("UserName@example.com", "Password");

 

const string excelFileName = @"C:\sample.xls";

 

var fileItem = await connection.Items.Root.NewFile("ExcelFile", StiFileType.Excel).SaveAsync();

await fileItem.UploadFromFileAsync(excelFileName);

 

var table1 = await fileItem.GetDataAsync("Sheet1");

var firstCellData = table1.Rows[0].ItemArray[0];

 

await connection.Accounts.Users.LogoutAsync();

}

...