File
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();
}
...