带有互操作库的临时 excel 文件

我正在使用互操作库从数据表创建 excel,所以我的方法很简单:


public bool WriteDataTableToExcel(System.Data.DataTable dataTable, string worksheetName, string saveAsLocation, string ReporType)

{

    Microsoft.Office.Interop.Excel.Application excel;

    Microsoft.Office.Interop.Excel.Workbook excelworkBook;

    Microsoft.Office.Interop.Excel.Worksheet excelSheet;

    Microsoft.Office.Interop.Excel.Range excelCellrange;


    try

    {

        // Start Excel and get Application object.

        excel = new Microsoft.Office.Interop.Excel.Application();


        // for making Excel visible

        excel.Visible = false;

        excel.DisplayAlerts = false;


        // Creation a new Workbook

        excelworkBook = excel.Workbooks.Add(Type.Missing);


        // Workk sheet

        excelSheet = (Microsoft.Office.Interop.Excel.Worksheet)excelworkBook.ActiveSheet;

        excelSheet.Name = worksheetName;



        excelSheet.Cells[1, 1] = ReporType;

        excelSheet.Cells[1, 2] = "Date : " + DateTime.Now.ToShortDateString();


        // loop through each row and add values to our sheet

        int rowcount = 2;


        foreach (DataRow datarow in dataTable.Rows)

        {

            rowcount += 1;

            for (int i = 1; i <= dataTable.Columns.Count; i++)

            {

                // on the first iteration we add the column headers

                if (rowcount == 3)

                {

                    excelSheet.Cells[2, i] = dataTable.Columns[i - 1].ColumnName;

                    excelSheet.Cells.Font.Color = System.Drawing.Color.Black;


                }

如您所见,我正在使用以下代码将 excel 保存到路径:


excelworkBook.SaveAs(saveAsLocation);

调用此方法后,我用它 Process.Start(fileName);来打开 excel 文件。它工作得很好,但我想要实现的是打开这个 excel 而不将它保存到我只想打开的路径,比如临时文件。我怎样才能做到这一点?


手掌心
浏览 103回答 1
1回答

红糖糍粑

您正在保存文件而不是显示您的 Excel 实例:&nbsp; &nbsp; ...&nbsp; &nbsp; //now save the workbook and exit Excel&nbsp; &nbsp; //excelworkBook.SaveAs(saveAsLocation); ;&nbsp; &nbsp; //excelworkBook.Close();&nbsp; &nbsp; //excel.Quit();&nbsp; &nbsp; excel.Visible = true;&nbsp; &nbsp; return true;}您首先设置excel.Visible = false;,这将使 excel 作为后台进程。相反,在范围的末尾,excel.Visible = true;在所有计算完成后添加。我注释掉了不需要的行,以便您可以看到我将新行放在哪里。
打开App,查看更多内容
随时随地看视频慕课网APP