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