asp.net Dataset多个表导入到Excel里

时间:2022-03-20 09:30:16
Dataset里有个多个表。
想把dataset所有表的数据导入一个excel文件里(一个或多个sheet都可以。)
呵呵 一定是asp.net c#(bs)因为form我会写。

5 个解决方案

#1


在DCOM组件服务中给MICROSOFT.EXCEL组件赋予ASP.NET的操作权限,具体步骤:

(1)打开开始菜单的运行对话框,输入dcomcnfg命令,确定,这时会弹出组件服务窗口

(2)展开计算机-〉我的电脑-〉DCOM配置,找到Microsoft Excel应用程序节点,单击右键-〉属性

(3)点击"标识"标签,选择"交互式用户"

(4)选中“安全”选项,在下面三个项目都选择“自定义”,并单击编辑按钮

(5)在启动权限对话框中点击添加按钮,添加相应的用户(注意:如果是WIN2000,XP,则添加“ASPNET”用户,如果是WIN2003,则添加“NETWORK Service”用户),并赋予本地的所有权限 ,访问权限和配置权限和前面一样添加ASPNET用户。


上面设置好后,就可全用 Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
其它的跟winform操作一样了

#2


2种方法都写到例子中了,看后面的方法

http://dotnet.aspx.cc/file/Export-Gridview-To-Excel-With-Multi-Sheet.aspx

#3


孟兄我把代码改成这样。

dataset 添加数据表
DataSet myds = new DataSet();
    DataTable dt = new DataTable();
    DataTable dt1 = new DataTable();
    myds.Tables.Add(dt);
    myds.Tables.Add(dt1);
过程省略。。。。。。。
//遍历dataset里的datatable
        for (int i = 0; i < myds.Tables.Count; i++)
        { 
            Response.Write("<Worksheet ss:Name='Sheet" + (i + 1) + "'>");
            Response.Write("<Table x:FullColumns='1' x:FullRows='1'>");

            //输出标题
            Response.Write("\r\n<Row ss:AutoFitHeight='1'>");
            for (int j = 0; j < myds.Tables[i].Columns.Count; j++)
            {
                Response.Write("<Cell ss:StyleID='Header'><Data ss:Type='String'>" + myds.Tables[i].Columns[j].ColumnName + "</Data></Cell>");
            }
            Response.Write("\r\n</Row>");

            for (int j = 0; j < myds.Tables[i].Rows.Count; j++)
            {
                Response.Write("<Row>");
                for (int c = 0; c < 6; c++)
                {
                    //对于数字,采用Number数字类型
                    if (c > 1)
                    {
                        Response.Write("<Cell ss:StyleID='border'><Data ss:Type='Number'>" + myds.Tables[i].Rows[j][c].ToString() + "</Data></Cell>");
                    }
                    else
                    {
                        Response.Write("<Cell ss:StyleID='border'><Data ss:Type='String'>" + myds.Tables[i].Rows[j][c].ToString() + "</Data></Cell>");
                    }
                }
                Response.Write("</Row>");
            }
            Response.Write("</Table>");
            Response.Write("</Worksheet>");
            Response.Flush();
        }
        Response.Write("</Workbook>");
        Response.End();

#4


该回复于2011-12-05 10:37:59被版主删除

#5


引用 2 楼 net_lover 的回复:
2种方法都写到例子中了,看后面的方法

http://dotnet.aspx.cc/file/Export-Gridview-To-Excel-With-Multi-Sheet.aspx

版主给的链接 访问不了.

#1


在DCOM组件服务中给MICROSOFT.EXCEL组件赋予ASP.NET的操作权限,具体步骤:

(1)打开开始菜单的运行对话框,输入dcomcnfg命令,确定,这时会弹出组件服务窗口

(2)展开计算机-〉我的电脑-〉DCOM配置,找到Microsoft Excel应用程序节点,单击右键-〉属性

(3)点击"标识"标签,选择"交互式用户"

(4)选中“安全”选项,在下面三个项目都选择“自定义”,并单击编辑按钮

(5)在启动权限对话框中点击添加按钮,添加相应的用户(注意:如果是WIN2000,XP,则添加“ASPNET”用户,如果是WIN2003,则添加“NETWORK Service”用户),并赋予本地的所有权限 ,访问权限和配置权限和前面一样添加ASPNET用户。


上面设置好后,就可全用 Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
其它的跟winform操作一样了

#2


2种方法都写到例子中了,看后面的方法

http://dotnet.aspx.cc/file/Export-Gridview-To-Excel-With-Multi-Sheet.aspx

#3


孟兄我把代码改成这样。

dataset 添加数据表
DataSet myds = new DataSet();
    DataTable dt = new DataTable();
    DataTable dt1 = new DataTable();
    myds.Tables.Add(dt);
    myds.Tables.Add(dt1);
过程省略。。。。。。。
//遍历dataset里的datatable
        for (int i = 0; i < myds.Tables.Count; i++)
        { 
            Response.Write("<Worksheet ss:Name='Sheet" + (i + 1) + "'>");
            Response.Write("<Table x:FullColumns='1' x:FullRows='1'>");

            //输出标题
            Response.Write("\r\n<Row ss:AutoFitHeight='1'>");
            for (int j = 0; j < myds.Tables[i].Columns.Count; j++)
            {
                Response.Write("<Cell ss:StyleID='Header'><Data ss:Type='String'>" + myds.Tables[i].Columns[j].ColumnName + "</Data></Cell>");
            }
            Response.Write("\r\n</Row>");

            for (int j = 0; j < myds.Tables[i].Rows.Count; j++)
            {
                Response.Write("<Row>");
                for (int c = 0; c < 6; c++)
                {
                    //对于数字,采用Number数字类型
                    if (c > 1)
                    {
                        Response.Write("<Cell ss:StyleID='border'><Data ss:Type='Number'>" + myds.Tables[i].Rows[j][c].ToString() + "</Data></Cell>");
                    }
                    else
                    {
                        Response.Write("<Cell ss:StyleID='border'><Data ss:Type='String'>" + myds.Tables[i].Rows[j][c].ToString() + "</Data></Cell>");
                    }
                }
                Response.Write("</Row>");
            }
            Response.Write("</Table>");
            Response.Write("</Worksheet>");
            Response.Flush();
        }
        Response.Write("</Workbook>");
        Response.End();

#4


该回复于2011-12-05 10:37:59被版主删除

#5


引用 2 楼 net_lover 的回复:
2种方法都写到例子中了,看后面的方法

http://dotnet.aspx.cc/file/Export-Gridview-To-Excel-With-Multi-Sheet.aspx

版主给的链接 访问不了.