【问题标题】:How to Export Multiple Datasets to Single ExcelSheet?如何将多个数据集导出到单个 Excel 工作表?
【发布时间】:2014-02-14 05:00:39
【问题描述】:

我有两个数据集,其中第一个数据集有 6 行,第二个数据集有“N”行数,第二个数据集行数不断变化,我需要将两个数据集都导出到一个 excelsheet 中。两个数据集都有标题,所以我需要使用 c# 将两个数据集与标题导出到单个 excelsheet 中。任何人都可以帮助我提供 c# 中的示例代码

【问题讨论】:

    标签: asp.net sql-server-2008 c#-4.0


    【解决方案1】:

    在你必须创建之前

    1. using Excel = Microsoft.Office.Interop.Excel;//in header,and Add correct refference
    2. Excel.Application excelHandle1 = PrepareForExport(Ds); //add handle in calling function excelHandle1.Visible = true;
    
    
    public Excel.Application PrepareForExport(System.Data.DataSet ds,string[] sheet)
    {
            object missing = System.Reflection.Missing.Value;
            Excel.Application excel = new Excel.Application();
            Excel.Workbook workbook = excel.Workbooks.Add(missing);
    
            DataTable dt1 = new DataTable();
            dt1 = ds.Tables[0];
            DataTable dt2 = new DataTable();
            dt2 = ds.Tables[1];
    
    
            Excel.Worksheet newWorksheet;
            newWorksheet = (Excel.Worksheet)excel.Worksheets.Add(missing, missing, missing, missing);
            newWorksheet.Name ="Name of data sheet";
    

    // 对于第一个数据表 dt1..

            int iCol1 = 0;
            foreach (DataColumn c in dt1.Columns)
            {
                iCol1++;
                excel.Cells[1, iCol1] = c.ColumnName;
            }
    
            int iRow1 = 0;
            foreach (DataRow r in dt1.Rows)
            {
                iRow1++;
    
                for (int i = 1; i < dt1.Columns.Count + 1; i++)
                {
    
                    if (iRow1 == 1)
                    {
                        // Add the header the first time through 
                        excel.Cells[iRow1, i] = dt1.Columns[i - 1].ColumnName;
                    }
    
                    excel.Cells[iRow1 + 1, i] = r[i - 1].ToString();
                }
    
            }
    

    // 用于第二个数据表 dt2..

            int iCol2 = 0;
            foreach (DataColumn c in dt2.Columns)
            {
                iCol2++;
                excel.Cells[1, iCol] = c.ColumnName;
            }
    
    
            int iRow2 = 0;
            foreach (DataRow r in dt2.Rows)
            {
                iRow2++;
    
                for (int i = 1; i < dt2.Columns.Count + 1; i++)
                {
    
                    if (iRow2 == 1)
                    {
                        // Add the header the first time through 
                        excel.Cells[iRow2, i] = dt2.Columns[i - 1].ColumnName;
                    }
    
                    excel.Cells[iRow2 + 1, i] = r[i - 1].ToString();
                }
    
            }
    
    
    
    
        return excel;
    }
    

    【讨论】:

      【解决方案2】:

      首先你必须声明命名空间:

      using Excel = Microsoft.Office.Interop.Excel;
      
      public static void Main(string[] args) {
      
              DataTable dt1 = new DataTable("Employee");
              dt1.Columns.Add("Employee ID");
              dt1.Columns.Add("Employee Name");
              dt1.Rows.Add("1", "ABC");
              dt1.Rows.Add("2", "DEF");
              dt1.Rows.Add("3", "PQR");
              dt1.Rows.Add("4", "XYZ");
      
              DataTable dt3 = new DataTable("Department");
              dt3.Columns.Add("Department ID");
              dt3.Columns.Add("Department Name");
              dt3.Rows.Add("1", "IT");
              dt3.Rows.Add("2", "HR");
              dt3.Rows.Add("3", "Finance");
              DataSet ds = new DataSet();
              ds.Tables.Add(dt1);
              ds.Tables.Add(dt3);
      
             Excel._Application app = new Microsoft.Office.Interop.Excel.Application();
              Excel._Workbook workbook = app.Workbooks.Add(Type.Missing);
      
              Excel._Worksheet worksheet = null;
              app.Visible = false;
              worksheet = workbook.Sheets["Sheet1"];
              worksheet = workbook.ActiveSheet;
      
              worksheet.Name = "Exported from gridview";
              int z = 1;
              for (int x = 0; x < ds.Tables.Count; x++)
              {
                  int r = z;
                  int t = r + 1;
                  for (int i = 1; i < ds.Tables[x].Columns.Count + 1; i++)
                  {
                      worksheet.Cells[r, i] = ds.Tables[x].Columns[i - 1].Caption;
                  }
                  for (int i = 0; i < ds.Tables[x].Rows.Count; i++)
                  {
                      for (int j = 0; j < ds.Tables[x].Columns.Count; j++)
                      {
                          worksheet.Cells[i + t, j + 1] = ds.Tables[x].Rows[i]
                          [j].ToString();
                      }
                  }
                  z = ds.Tables[x].Rows.Count + 3;
              }
              string textPath = "e:\\output.xls";
              if (File.Exists(textPath))
              {
                  File.Delete(textPath);
              }
      
              workbook.SaveAs(textPath, Type.Missing, Type.Missing, Type.Missing,
               Type.Missing,
               Type.Missing, 
               Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive,
               Type.Missing, Type.Missing, Type.Missing, Type.Missing);
              app.Quit();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-28
        • 1970-01-01
        • 2010-11-07
        • 1970-01-01
        • 1970-01-01
        • 2011-11-29
        相关资源
        最近更新 更多