Here man this is large piece of the puzzle and this should run but it is missing a very important piece. Just look up file handles and how to release them.
void BtnConvertClick(object sender, System.EventArgs e)
{
excelApp = new Excel.ApplicationClass();
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo ("en-US");
workBook = excelApp.Workbooks.Add(Missing.Value);
//progressbar setting
prgProg.Maximum = chcklstTables.CheckedIndices.Count;
int prgValue = 0;
string TableName = string.Empty; //table name to naming the sheets
//all tablenames are in checklistbox, so check only checked items
foreach(int indexChecked in chcklstTables.CheckedIndices)
{
Application.DoEvents();
prgValue++;
prgProg.Value = prgValue;
sqlCmd = "SELECT * FROM " + chcklstTables.Items[indexChecked].ToString();
myDtExp = dbe.GetDataTable(connstr,sqlCmd);
TableName = chcklstTables.Items[indexChecked].ToString();
//check if table exists...
if (myDtExp == null)
{
lstProgress.Items.Add("TABLE " + TableName + " DOESN'T EXISTS IN DB...");
continue;
}
//if table name is more than 31 characters - max. lenght for Excel sheet name, shorten it...
if(TableName.Length > 31)
{
lstProgress.Items.Add("TABLE NAME " + TableName + " HAS BEEN SHORTED TO 31 CHARACTERS: " + TableName.Substring(0,31));
TableName = TableName.Substring(0,31);
}
try
{
//add new sheet to workbook...
sheet = (Excel.Worksheet) workBook.Sheets.Add(Missing.Value,Missing.Value,1,Excel.XlSheetType.xlWorksheet);
sheet.Name = TableName;
}
catch(Exception ex1)
{
lstProgress.Items.Add("TABLE " + TableName + " HAS PRODUCED ERROR");
}
//this code produces 100% CPU usage...
try
{
int ColumnIndex=0;
foreach(DataColumn col in myDtExp.Columns)
{
Application.DoEvents();
ColumnIndex++;
excelApp.Cells[1,ColumnIndex]=col.ColumnName;
}
int rowIndex=0;
foreach(DataRow myRow in myDtExp.Rows)
{
Application.DoEvents();
rowIndex++;
ColumnIndex=0;
foreach(DataColumn col in myDtExp.Columns)
{
ColumnIndex++;
excelApp.Cells[rowIndex+1,ColumnIndex]=myRow[col.ColumnName].ToString();
}
}
}
catch(Exception ex2)
{
lstProgress.Items.Add("TABLE " + TableName + " HAS PRODUCED ERROR");
}
lstProgress.Items.Add(TableName + " ... Done");
}
//save workbook to specified folder...
workBook.SaveAs("C:\\test.xls",Excel.XlFileFormat.xlXMLSpreadsheet,Missing.Value ,Missing.Value ,
false, false, Excel.XlSaveAsAccessMode.xlNoChange,Missing.Value ,
Missing.Value ,Missing.Value ,Missing.Value ,Missing.Value);
//release objects from memory...
myDtExp.Dispose();
excelApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(workBook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
workBook = null;
sheet = null;
excelApp = null;
MessageBox.Show ("Operation done...");
}