I have a small program where you can select some database tables and create a excel file with all values for each table and thats my solution to create the excel file.
foreach (var selectedDatabase in this.lstSourceDatabaseTables.SelectedItems)
{
    //creates a new worksheet foreach selected table
    foreach (TableRetrieverItem databaseTable in tableItems.FindAll(e => e.TableName.Equals(selectedDatabase)))
    {
        _xlWorksheet = (Excel.Worksheet) xlApp.Worksheets.Add();
        _xlWorksheet.Name = databaseTable.TableName.Length > 31 ? databaseTable.TableName.Substring(0, 31): databaseTable.TableName;
        _xlWorksheet.Cells[1, 1] = string.Format("{0}.{1}", databaseTable.TableOwner,databaseTable.TableName);
        ColumnRetriever retrieveColumn = new ColumnRetriever(SourceConnectionString);
        IEnumerable<ColumnRetrieverItem> dbColumns = retrieveColumn.RetrieveColumns(databaseTable.TableName);
        var results = retrieveColumn.GetValues(databaseTable.TableName);
        int i = 1;
        (result is a result.Item3 is a List<List<string>> which contains all values from a table and for each row is a new list inserted)
        for (int j = 0; j < results.Item3.Count(); j++)
        {
            int tmp = 1;
            foreach (var value in results.Item3[j])
            {
                _xlWorksheet.Cells[j + 3, tmp] = value;
                tmp++;
            }
        }
    }
}
It works but when you have a table with 5.000 or more values it will take such a long time.
Does someone maybe know a better solution to add the List List string per row than my for foreach solution ?
 
     
     
     
    