Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

eluancardoso

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

Recommended Posts

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;
xlWorkSheet.Cells[g, 2] = Globals.Items_Info.itemsnamelist;
xlWorkSheet.Cells[g, 3] = Globals.Items_Info.itemslevellist;
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();
}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Da pra tentar fazer ela não travar se você estiver usando um aplicativo que não seja um macro do excel.

 

Tente pesquisar sobre Threads:

 

https://www.google.com.br/search?client=opera&q=c%23+threads&sourceid=opera&ie=UTF-8&oe=UTF-8

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.