logo

Moving data from an Excel file to a block

This example describes getting data from an *.xlsx file and writing them to a block using a script.
As an example, we will use a file with average grades of students. Add a block to the process context with fields Last Name (String type), Average Grade (Fraction type) and File variable (File type).
For the script to work, add the assembly:
Aspose.Cells
Namespaces:
using Aspose.Cells;
using EleWise.ELMA.Model.Common;
using EleWise.ELMA.Model.Entities;
using EleWise.ELMA.Model.Entities.ProcessContext;
using EleWise.ELMA.Model.Managers;
using EleWise.ELMA.Model.Types.Settings;
using EleWise.ELMA.Model.Services;
 
Script text:
int StartRow=1; //row number in the Excel file, to start writing Date with (numeration starts with 0)
int EndRow=10;//maximum possible rows in a file
var workbook = new Workbook(context.File.ContentFilePath); //load a file from a variable
var worksheet = workbook.Worksheets[0]; //number of the sheet to take Date from
for (int row = StartRow; row <= EndRow; row++) {
    if(worksheet.Cells[row, 0].StringValue != "" && worksheet.Cells[row, 1].StringValue != "") //if the Date are not empty
    {
        var newRow = InterfaceActivator.Create<P_Document_Block>(); //create a new block item, specify the block class name
                newRow.Last Name = worksheet.Cells[row, 0].StringValue; //write the last name
                newRow.AverageGrade= worksheet.Cells[row, 1].DoubleValue; //write the average grade
        context.Block.Add(newRow); //add an item to the block
    }
}
 

Moving data from a two-dimensional Excel table

Let's take a look at getting data from an *.xlsx file and writing them to a block inside a block using a script.

As an example, we will use a Plan file. Add a File variable and a block with an Entry List string field and an Entry List Information block to the process context. Add the fields Date, Shift, Plan and Equipment to the Classification Scheme Information block.

 

Script text:

var workbook = new Workbook(context.DokumentExcel.CurrentVersion.File.ContentFilePath); //load a file from the context variable
var worksheet = workbook.Worksheets["Plan"]; //find a sheet by name
int StartColumn = 5; //Excel file column number to start writing Date with (numeration starts with 0)
int EndColumn = worksheet.Cells.MaxColumn; //maximum allowed number of columns in the file 
int StartRow=5; //Excel file row number to start writing Date with (numeration starts with 0)
int EndRow=worksheet.Cells.MaxRow;//maximum possible number of rows in the file
var datetimelist = new List<DateTime>(); // create a sheet for storing dates
for (int column = StartColumn; column <= EndColumn; column += 2) // apply a cycle to each column
{
    if (worksheet.Cells[0, column].StringValue != "") //if Date are not empty
{
        datetimelist.Add(worksheet.Cells[0, column].DateTimeValue); // add a date to the created sheet
}
    else ;
}
int count = datetimelist.Count(); // count the number of dates
for (int row = StartRow; row <= EndRow; row +=3) // apply a cycle to rows
{
    if(worksheet.Cells[row, 1].StringValue != "") //if Date are not empty
    {
        var newrow = InterfaceActivator.Create<EntryListInformation>(); // create a "Entry List Information" block item 
        for (int i = 0; i < count; i++) // apply a cycle to columns
        {
            int col = 5 + i * 2; // get the number of the column with the Day shift
            int colnight = col + 1; // get the number of the column with the Night shift
            var Date = worksheet.Cells[0, col].DateTimeValue; // write the date
            if (worksheet.Cells[row, col].StringValue != "0" && !String.IsNullOrEmpty(worksheet.Cells[row, col].StringValue)) // if the plan for the day is not null or 0
            {
                var newfindrowinfo = InterfaceActivator.Create<EntryListInformation_Plan>(); // create a "Plan" block item 
                newfindrowinfo.Date = Date; // write the date
                newfindrowinfo.Shift = new DropDownItem(worksheet.Cells[2, col].StringValue); // write the shift
                newfindrowinfo.Plan = Convert.ToDouble(worksheet.Cells[row, col].Value); // write the plan
                newfindrowinfo.Equipment = worksheet.Cells[row, 0].StringValue; // write the equipment
                newfindrowinfo.Save(); // save
                newrow.Add(newfindrowinfo); // add the block item to the block
            }
            if (worksheet.Cells[row, colnight].StringValue != "0" && !String.IsNullOrEmpty(worksheet.Cells[row, colnight].StringValue)) // if the plan for the night is not null or 0
            {
                var newfindrowinfo = InterfaceActivator.Create<EntryListInformation_Plan>(); // create a "Plan" block item
                newfindrowinfo.Date = Date; // write the date
                newfindrowinfo.Shift = new DropDownItem(worksheet.Cells[2, col].StringValue); // write the shift
                newfindrowinfo.Equipment = worksheet.Cells[row, 0].StringValue; // write the equipment
                newfindrowinfo.Plan = Convert.ToDouble(worksheet.Cells[row, colnight].Value); // write the plan
                newfindrowinfo.Save(); // save
                newrow.Add(newfindrowinfo); // add the block item to the block
            }
        }
        context.EntryListInformation.Add(newrow); // add a row to the block
    }
    else
    {
        Logger.Log.Error("the file is empty");
    }
}