private void AppendRows(DataTable sourceDataTable, ExcelWorksheet worksheet) { const int FIRST_ROW = 2; for (int row = FIRST_ROW; row <= worksheet.Dimension.End.Row; row++) { ExcelRangeBase sheetRow = worksheet.Cells[row, 1, row, worksheet.Dimension.End.Column]; DataRow dataRow = sourceDataTable.NewRow(); foreach (ExcelRangeBase cell in sheetRow) { DataColumn column = sourceDataTable.Columns[cell.Start.Column - 1]; try { if (String.IsNullOrEmpty(cell.Text)) { dataRow[cell.Start.Column - 1] = DBNull.Value; } else if (column.DataType == typeof(DateTime)) { dataRow[cell.Start.Column - 1] = DataTypeParser.GetAsDateTime(cell.Text); } else { dataRow[cell.Start.Column - 1] = cell.Text; } } catch { Logger.LogActivity("{0} [{1}]: could not add {2}", column.ColumnName, column.DataType, cell.Text); } } sourceDataTable.Rows.Add(dataRow); } }