0

我有一个包含多个页面的电子表格。当我单击一个按钮时,我需要打开这个电子表格并将从数据库返回的所有数据(数据集/数据表)写入电子表格中的一个页面。我看到了很多文章用于将数据集导出到新的 Excel 工作表。如何打开现有电子表格并使用 asp.net/C# 将数据集写入其中?

请帮忙..

谢谢。

更新:

基本上我有以下代码将数据集导出到新的 Excel 工作表。

私人无效createDataInExcel(数据集ds)
{

    Application oXL;

    _Workbook oWB;

    _Worksheet oSheet;

    Range oRng;

    string strCurrentDir = Server.MapPath(".") + "\\excelreports\\";

    try
    {

        oXL = new Application();

        oXL.Visible = false;

        //Get a new workbook.

        oWB = (_Workbook)(oXL.Workbooks.Add(Missing.Value));

        oSheet = (_Worksheet)oWB.ActiveSheet;

        //System.Data.DataTable dtGridData=ds.Tables[0];

        int iRow = 2;

        if (ds.Tables[0].Rows.Count > 0)
        {


            for (int j = 0; j < ds.Tables[0].Columns.Count; j++)
            {

                oSheet.Cells[1, j + 1] = ds.Tables[0].Columns[j].ColumnName;

            }

            // For each row, print the values of each column.

            for (int rowNo = 0; rowNo < ds.Tables[0].Rows.Count; rowNo++)
            {

                for (int colNo = 0; colNo < ds.Tables[0].Columns.Count; colNo++)
                {

                    oSheet.Cells[iRow, colNo + 1] = ds.Tables[0].Rows[rowNo][colNo].ToString();

                }
                iRow++;

            }              

        }

        oRng = oSheet.get_Range("A1", "IV1");

        oRng.EntireColumn.AutoFit();

        oXL.Visible = false;

        oXL.UserControl = false;

        string strFile = "excelreport" + DateTime.Now.Ticks.ToString() + ".xls";//+

        oWB.SaveAs(strCurrentDir +strFile, XlFileFormat.xlWorkbookNormal, null, null, false, false, XlSaveAsAccessMode.xlShared, false, false, null,null, null);

        // Need all following code to clean up and remove all references!!!

        oWB.Close(null, null, null);

        oXL.Workbooks.Close();

        oXL.Quit();

        Marshal.ReleaseComObject(oRng);

        Marshal.ReleaseComObject(oXL);

        Marshal.ReleaseComObject(oSheet);

        Marshal.ReleaseComObject(oWB);


    }

    catch (Exception theException)
    {

        Response.Write(theException.Message);

    }
    Response.Write("data exported");

}

是否可以改进上述代码以将数据集写入现有工作表?此外,使用上述代码将数据写入 Excel 工作表大约需要一分钟。我不明白为什么要花这么长时间。

4

1 回答 1

0

不是 100% 确定您的代码在哪里,但是使用项目中引用的 excel com 对象,您可以使用 Workbooks._Open 方法打开一个工作簿,然后您可以使用工作簿的工作表集合和获取_项目。

如果您需要向工作簿添加工作表,您可以使用工作表上的添加。

也许如果您发布您拥有的代码,我们可以建议在哪里改进它。

这条线

oWB = (_Workbook)(oXL.Workbooks.Add(Missing.Value));

正在创建一个新工作簿。采用

string workbookPath = "c:/SomeWorkBook.xls";

oWB = Workbooks.Open(workbookPath,
        0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "",
        true, false, 0, true, false, false);

现在这取决于您要做什么添加新工作表,使用现有工作表等。

这是一个代码项目链接,在此处更深入地显示

于 2010-02-19T13:43:21.230 回答