开发者

Excel activity is viewable

I'm using the following code to generate an Excel file using Microsoft.Interop.Excel. The problem is that I can actually see the workbook generation, when the code is executed, an excel document is open on the screen and the doc starts filling out with data. Can this be done somehow in the background?

Thanks

Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
            xlApp.Visible = false;


            if (xlApp == null)
            {
                MessageBox.Show("EXCEL could not be started. Check that your office installation and project references are correct.");
                return false;
            }
            xlApp.Visible = true;

            Workbook wb = xlApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);

            try
            {

                if (details != false)
                {
                    //Workbook wb = xlApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
                    wb.Worksheets.Add();
                    Worksheet detailsWs = (Worksheet)wb.Worksheets[2];

                    for (int i = 0; i < dt.Columns.Count; i++)
                    {
                        detailsWs.Cells[1, i + 1] = dt.Columns[i].Caption;
                    }

                }

                Worksheet ws = (Worksheet)wb.Worksheets[1];
                if (ws == null)
                {
                    MessageBox.Show("Worksheet could not be created. Check that your office installat开发者_JS百科ion and project references are correct.");
                }
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    ws.Cells[1, i + 1] = dt.Columns[i].Caption;
                }
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        ws.Cells[i + 2, j + 1] = dt.Rows[i].ItemArray[j];
                    }
                    worker.ReportProgress((i * 100) / dt.Rows.Count);
                }




                wb.SaveAs(filename, XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlShared, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                wb.Close(true, filename);

                return true;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                // Cleanup
                GC.Collect();
                GC.WaitForPendingFinalizers();

                GC.Collect();
                GC.WaitForPendingFinalizers();



                if (wb != null)
                {
                    wb.Close(Type.Missing, Type.Missing, Type.Missing);
                    Marshal.FinalReleaseComObject(wb);
                }

                if (xlApp != null)
                {
                    xlApp.Quit();
                    Marshal.FinalReleaseComObject(xlApp);
                }
            }


Your code reads:

 xlApp.Visible = false;


 if (xlApp == null)
    {
        MessageBox.Show("EXCEL could not be started. Check that your office installation and project references are correct.");
        return false;
    }

then you write:

xlApp.Visible = true;

Leave this out. It will stay not visible.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜