View Single Post
 
Old 06-15-2012, 02:11 AM
krishnaraj.l krishnaraj.l is offline Windows 7 64bit Office 2007
Novice
 
Join Date: Jun 2012
Posts: 1
krishnaraj.l is on a distinguished road
Default Export into excel hangs all application/keyboard inaccessible/halts the system

Hi,

Our Project using Export functionality from .net 2.0 windows forms application. And it was working great in all OS and in MS Office versions except MS Office 2007 (Windows 7 OS, 64 bit).

When export excel event is fired from our application and after the report opened in MS Excel, that movement onwards none of the application can be editable.

Enclosed Complete source code here...
Code:
    public partial class ExportExcelIssue : Form
    {
        public static int Counter=0;
        public String strPath = "";

        public void CreateExcel()
        {
            Counter = Counter + 1;

            Excel.Application xlApp;
            Excel.Workbook xlWorkBook;
            Excel.Worksheet xlWorkSheet;
            object misValue = System.Reflection.Missing.Value;

            xlApp = new Excel.ApplicationClass();
            xlWorkBook = xlApp.Workbooks.Add(misValue);

            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
            xlWorkSheet.Cells[1, 1] = "TEST";

            string strTempPath = System.Environment.GetEnvironmentVariable("TEMP");
            DirectoryInfo objInfo = new DirectoryInfo(strTempPath);

            strPath = strTempPath + "\\Excel" + Counter + ".xls";

            xlWorkBook.SaveAs(strPath, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
            xlWorkBook.Close(true, misValue, misValue);
            xlApp.Quit();

            object Delete;
            Delete = xlApp;           

            if (!WithoutCom.Checked)
            {
                 ReleaseComObject(ref Delete);
            }

            if (!WithoutGC.Checked)
            {
                GC.Collect();
            }

            if ((GCWithWFPF.Checked & WithoutGC.Checked) || (GCWithWFPF.Checked & !WithoutGC.Checked))
            {

                GC.WaitForPendingFinalizers();
            }        

            try
            {
                System.Diagnostics.Process.Start(strPath);
            }

            catch (Exception ex)
            { MessageBox.Show(ex.Message); }

          }

         private void ReleaseComObject(ref Object o)
         {
            int releaseObject = 1;
            while (releaseObject > 0)
            {
                releaseObject = System.Runtime.InteropServices.Marshal.ReleaseComObject(o);
            };
         }

        private void button1_Click(object sender, EventArgs e)
        {
            CreateExcel();
        }


        private void checkBox2_CheckedChanged(object sender, EventArgs e)
        {
            if (GCWithWFPF.Checked)
            {
                WithoutGC.Checked = false;
                WithoutGC.Enabled = false;
            }

            else {

                WithoutGC.Enabled = true;
            }
        }

        private void WithoutGC_CheckedChanged(object sender, EventArgs e)
        {
            if (WithoutGC.Checked)
            {
                GCWithWFPF.Checked = false;
                GCWithWFPF.Enabled = false;
            }

            else
            {

                GCWithWFPF.Enabled = true;
            }

        }
  }
Reply With Quote