public void LoadData(IConnection connection, IDatastore datastore, ReportProgressMethod reportProgress)
        {
            ExcelConnectionObject excelConnection = (ExcelConnectionObject)connection.GetConnection();
            ExcelWorksheet        worksheet       = excelConnection.Worksheet;

            for (int rowNumber = 1; rowNumber <= worksheet.Dimension.End.Row; rowNumber++)
            {
                // If first row, the build MetaData
                if (rowNumber == 1)
                {
                    for (int columnNumber = 1; columnNumber <= worksheet.Dimension.End.Column; columnNumber++)
                    {
                        string columnName = worksheet.GetValue(rowNumber, columnNumber).ToString();
                        datastore.AddColumn(new ColumnMetadata(columnName));
                    }
                    continue;
                }

                // All other rows go to the data
                object [] rowData = new object [worksheet.Dimension.End.Column];
                for (int columnNumber = 1; columnNumber <= worksheet.Dimension.End.Column; columnNumber++)
                {
                    rowData[columnNumber - 1] = worksheet.GetValue(rowNumber, columnNumber);
                }
                datastore.AddData(rowData);

                if (StatusHelper.MustShowProgress(rowNumber - 1, worksheet.Dimension.End.Row) == true)
                {
                    reportProgress(new SimpleProgressReport("Loaded " + rowNumber + " of " + worksheet.Dimension.End.Row + " records"));
                }
            }
        }
        public void WriteData(IConnection connection, SDK.Database.IDatabaseInterface databaseInterface, SDK.Database.IDatastore dataObject, ReportProgressMethod reportProgress)
        {
            ExcelConnectionObject excelConnection = (ExcelConnectionObject)connection.GetConnection();
            ExcelWorksheet        worksheet       = excelConnection.Worksheet;

            // Write columnheaders into the worksheet
            foreach (var column in dataObject.Metadata.Columns)
            {
                worksheet.SetValue(1, column.Value.ColumnIndex + 1, column.Value.ColumnName);
            }

            // Write data into the worksheet
            for (int row = 0; row < dataObject.Count; row++)
            {
                object[] data = dataObject[row];
                for (int column = 0; column < data.Length; column++)
                {
                    worksheet.SetValue(row + 2, column + 1, data[column]);
                }
            }

            excelConnection.Package.Save();
        }