将数据传递到Excel-通过ASP.NET Web应用程序创建多个工作表

时间:2019-06-07 06:20:42

标签: c# excel

我正在使用C#和Visual Studio2010。我正在使用ASP.NET Web应用程序。 我正在尝试将来自Oracle的数据(数据表中的数据)传递到同一excel中的多个工作表。用户应提示保存文件。我尝试了以下方法,但它会影响性能。是否有任何其他方法可以实现。我不能使用第三方工具。 excel中没有宏,它是从datatable到excel的简单数据传输。在Excel中不需要格式化。数据表非常庞大。

Excel.Application oXL = new Excel.Application();

            Excel.Workbook oWB = oXL.Workbooks.Add(missing);

            Excel.Worksheet oSheet = oWB.ActiveSheet as Excel.Worksheet;

            using (OracleConnection con = new OracleConnection(oradb))
            {
                con.Open();
                test2(oSheet, "select * from table1", "Names", con);
                Excel.Worksheet oSheet2 = oWB.Sheets.Add(missing, missing, 1, missing) as Excel.Worksheet;
                test2(oSheet2, "select * from table2", "Address", con);
                Excel.Worksheet oSheet3 = oWB.Sheets.Add(missing, missing, 2, missing) as Excel.Worksheet;
                test2(oSheet3, "select * from table3", "Phones", con);
            }
        }

        public static void test2(Excel.Worksheet oSheet, string sql, string name, OracleConnection con)
        {
            OracleDataAdapter da = new OracleDataAdapter(sql, con);
            DataTable dt = new DataTable();
            da.Fill(dt);
            if (dt == null || dt.Columns.Count == 0)
            {
            }
            else
            {
                oSheet.Name = name;
                for (var i = 0; i < dt.Columns.Count; i++)
                {
                    oSheet.Cells[1, i + 1] = dt.Columns[i].ColumnName;
                }
                for (var i = 0; i < dt.Rows.Count; i++)
                {
                    for (var j = 0; j < dt.Columns.Count; j++)
                    {
                        oSheet.Cells[i + 2, j + 1] = dt.Rows[i][j];
                    }
                }
            }
        }
    }

如何将数据传递到同一Excel中的多个工作表并提示用户保存文件?

0 个答案:

没有答案