转换DataSet中的多个表为Excel中的多个Sheets

第一种方法:

1. 在设计页面,有一个button按钮,当用户单击按钮的时候,发生转换

 <asp:Button ID="Export" runat="server" Text="Export" OnClick="Export_Click" />

2. 发生转换的代码

   protected void Export_Click(object sender, EventArgs e)
      {
          using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["DemosDatabaseConnectionString"].ConnectionString))
          {
              DataSet ds = new System.Data.DataSet();

              string sql1 = "select * from Customers";
              SqlDataAdapter sda1 = new SqlDataAdapter(sql1, conn);
              sda1.Fill(ds, "Table1");

              string sql2 = "select * from Users";
              SqlDataAdapter sda2 = new SqlDataAdapter(sql2, conn);
              sda2.Fill(ds, "Table2");

              string sq3 = "select * from AccordionContent";
              SqlDataAdapter sda3 = new SqlDataAdapter(sq3, conn);
              sda3.Fill(ds, "Table3");

              //The file save path
              string FileName = "D:\\Testing.xls";
              Application ExcelApp = new Application();
              Workbook ExcelWorkBook = null;
              Worksheet ExcelWorkSheet = null;
             ExcelApp.Visible = true;
             ExcelWorkBook = ExcelApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
            List<string> SheetNames = new  List<string>();
            SheetNames.Add("Customers Information");
            SheetNames.Add("Users Information");
            SheetNames.Add("AccordionContent Information");
             try
            {
                for (int i = 1; i < ds.Tables.Count; i++)
                    ExcelWorkBook.Worksheets.Add();  //Adding New sheet in Excel Workbook
                for (int i = 0; i < ds.Tables.Count; i++)
                {
                    int r = 1;  // Initialize Excel Row Start Position  = 1
                    ExcelWorkSheet = ExcelWorkBook.Worksheets[i + 1];
                     //Writing Columns Name in Excel Sheet
                    for (int col = 1; col < ds.Tables[i].Columns.Count; col++)
                        ExcelWorkSheet.Cells[r, col] = ds.Tables[i].Columns[col - 1].ColumnName;
                    r++;
                     //Writing Rows into Excel Sheet
                    for (int row = 0; row < ds.Tables[i].Rows.Count; row++)  //r stands for ExcelRow and col for ExcelColumn
                    {
                        // Excel row and column start positions for writing Row=1 and Col=1
                        for (int col = 1; col < ds.Tables[i].Columns.Count; col++)
                            ExcelWorkSheet.Cells[r, col] = ds.Tables[i].Rows[row][col - 1].ToString();
                        r++;
                    }
                    ExcelWorkSheet.Name = SheetNames[i];//Renaming the ExcelSheets
                }
                ExcelWorkBook.SaveAs(FileName);
                ExcelWorkBook.Close();
                ExcelApp.Quit();
                Marshal.ReleaseComObject(ExcelWorkSheet);
                Marshal.ReleaseComObject(ExcelWorkBook);
                Marshal.ReleaseComObject(ExcelApp);
            }
            catch (Exception exHandle)
            {
                Console.WriteLine("Exception: " + exHandle.Message);
                Console.ReadLine();
            }
             finally
            {
                foreach (Process process in Process.GetProcessesByName("Excel"))
                    process.Kill();
            }
        }
          Response.Write("Successfully!");
    }

资料来源:
http://www.c-sharpcorner.com/Blogs/10767/generate-excel-with-multiple-sheet-from-dataset.aspx

第二种方法:

2. 发生转换的方法

 protected void Button1_Click(object sender, EventArgs e)
      {
          using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["DemosDatabaseConnectionString"].ConnectionString))
          {
              DataSet ds = new System.Data.DataSet();

              string sql1 = "select * from Customers";
              SqlDataAdapter sda1 = new SqlDataAdapter(sql1, conn);
              sda1.Fill(ds, "Table1");

              string sql2 = "select * from Users";
              SqlDataAdapter sda2 = new SqlDataAdapter(sql2, conn);
              sda2.Fill(ds, "Table2");

              string sq3 = "select * from AccordionContent";
              SqlDataAdapter sda3 = new SqlDataAdapter(sq3, conn);
              sda3.Fill(ds, "Table3");

              var excel = new Microsoft.Office.Interop.Excel.Application();
              var workbook = excel.Workbooks.Add(true);

              AddExcelSheet(ds.Tables[1], workbook);
              AddExcelSheet(ds.Tables[0], workbook);

              workbook.SaveAs(@"D:\MyExcelWorkBook2.xls");
              workbook.Close();

          }

      }

资料来源:

http://stackoverflow.com/questions/12980640/how-to-add-additional-worksheets-to-an-excel-from-datatable

时间: 2024-10-15 02:38:57

转换DataSet中的多个表为Excel中的多个Sheets的相关文章

c#.net循环将DataGridView中的数据赋值到Excel中,并设置样式

Microsoft.Office.Interop.Excel.Application excel =                new Microsoft.Office.Interop.Excel.Application();            excel.SheetsInNewWorkbook = 1;            excel.Workbooks.Add(); //设置Excel列名            excel.Cells[1, 1] = "学号";     

如何使用免费控件将Word表格中的数据导入到Excel中

我通常使用MS Excel来存储和处理大量数据,但有时候经常会碰到一个问题—我需要的数据存储在word表格中,而不是在Excel中,这样处理起来非常麻烦,尤其是在数据比较庞大的时候, 这时我迫切地需要将word表格中的数据导入到Excel中.相信大家也碰到过同样的问题,下面我就给大家分享一下在C#中如何使用免费控件来实现这一功能.这里,我使用了两个免费API, DocX和Spire.Xls. 有需要的朋友可以下载使用.下载地址: DocX:codeplex官网 Spire.Xls: E-iceb

机房收费系统———如何将MSFlexGrid中的数据导入到Excel中

机房收费系统进行了一段时间了,虽然说大体上跟学生信息管理系统一样,不过也有不一样的地方.比如说报表.如何将MSFlexGrid中德数据导入到Excel中等等.这些东西原来没有接触过,第一次接触难免有些陌生.这些问题困扰了我好长-时间,一看到它头都大了.不过,提高班名言——不将就是发现的源动力.本着这一原则,慢慢的攻克了这些问题. 机房收费系统中好几个地方需要将MSFlexGrid中德数据导入到Excel中,这是在学生信息管理系统中没有的功能.首先,首先需要在vb里面引用我们所需要的对象:Micr

Table中合并相同内容列+Excel中合并相同内容列。

Table中合并相同内容列的方法比较好办,网上代码也很多,参照了一些把它封装成jquery 插件,调用起来还是蛮好用的. 这个地方稍微修改了下,有的时候td中内容虽然一样,但是数据库中的value却是不一样的,比如不同的公司,都有人事部,财务部, 公司A的财务部和公司B的财务部不能合并起来,所以我就给td加了个name属性.用于保存部门的ID,集团里面各公司部门ID总归不一样. 调用方式 $(function() {                            $("#tbdianba

【Java】无须额外的包,把Java中的内容输出到Excel中,无乱码,绝对兼容Excel2003与2007

Java输出一段文本到txt中大家基本都会了,这已经是学习Java的必修课了,不会也没有问题,具体可以看<[Java]输入与输出与JDK1.5之后的新型字符串StringBuilder>(点击打开链接).网上对于Java内容转化成Excel的内容大多数都是需要什么poi包,jsl包,一堆奇奇怪怪的jar插件.其实仅仅利用java.io.*;这个基本包就能够把Java中的内容输出到Excel表中,当然,如果你是要处理Mysql数据库不要这样做了,直接一条Mysql的查询命令就能把Mysql的查询

ListView中的数据表格写入Excel中

SaveFileDialog sfd = new SaveFileDialog(); sfd.DefaultExt = "xls"; sfd.Filter = "Excel文?件t(*.xls)|*.xls"; if (sfd.ShowDialog() == DialogResult.OK) {  DoExport(this.listView1, sfd.FileName); } private void DoExport(ListView listView, st

Gridview中的数据导出到excel中

protected void btnExport_Click(object sender, EventArgs e)    {                   //导出全部数据,取消分页        gvInfo.AllowPaging = false;        gvInfo.ShowFooter = false; GetDataSource(condition); Response.Clear();        Response.Buffer = true;        Res

将Jquery EasyUI中DataGird的数据导入Excel中

1.第一步获取前台DataGrid中的数据 var rows = $('#tb).datagrid("getRows");            if (rows.length == 0) {                $("#ShowMsg").html("没有数据可供导出!");                return;            }            var columns = new Array();       

C#将SQL数据库中数据导入Excel中,并将Excel中反导入SQL数据库中

实际的开发中,我们会经常遇到数据的转化的需要,将Excel中的数据转入到SQL中,或将SQL在数据库表中的数据导入到Excel中.代码如下: Code using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windo