Quantcast
Channel: Últimos conteúdos
Viewing all articles
Browse latest Browse all 14190

c# criar arquivo .xls aplicação para de responder ate terminar

$
0
0

quando a aplicação vai criar um arquivo .xls de 9 colunas e 20000 linhas esta demorando cerca de 10 minutos para criar e a aplicação fica travada durante todo esse tempo

 

tem como diminuir o tempo ou fazer ela nao travar?

 

codigo

 

 private void button1_Click(object sender, EventArgs e)
        {

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

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

                xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
                int g = 0;
                for (int i = 0; i < Globals.Items_Info.itemstypelist.Count; i++)
                {
                    g++;
                    xlWorkSheet.Cells[g, 1] = Globals.Items_Info.itemsidlist[i];
                    xlWorkSheet.Cells[g, 2] = Globals.Items_Info.itemsnamelist[i];
                    xlWorkSheet.Cells[g, 3] = Globals.Items_Info.itemslevellist[i];
                    xlWorkSheet.Cells[g, 4] = "No";
                    xlWorkSheet.Cells[g, 5] = "No";
                    xlWorkSheet.Cells[g, 6] = "No";
                    xlWorkSheet.Cells[g, 7] = "No";
                    xlWorkSheet.Cells[g, 8] = "No";
                    xlWorkSheet.Cells[g, 9] = "No";
                }
              

                xlWorkBook.SaveAs(Application.StartupPath + @"\Cbot.xls", Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue,
                Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
                xlWorkBook.Close(true, misValue, misValue);
                xlApp.Quit();

                liberarObjetos(xlWorkSheet);
                liberarObjetos(xlWorkBook);
                liberarObjetos(xlApp);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Erro : " + ex.Message);
            }

        private void liberarObjetos(object obj)
        {
            try
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
                obj = null;
            }
            catch (Exception ex)
            {
                obj = null;
                MessageBox.Show("Ocorreu um erro durante a liberação do objeto " + ex.ToString());
            }
            finally
            {
                GC.Collect();
            }
        }


Viewing all articles
Browse latest Browse all 14190