2017-01-30 6 views
-1

В настоящее время у меня есть две таблицы данных, которые экспортируются в 2 отдельных листа. Как экспортировать эти 2 таблицы данных в один рабочий лист? Кто угодно? Мне было трудно решить эту загадку.экспорт 2 вида сетки в один рабочий лист в Excel

private DataTable SkyvisionMachineData() 
     { 
      string constr = ConfigurationManager.ConnectionStrings["Media_OperationsConnectionString9"].ConnectionString; 
      using (SqlConnection con = new SqlConnection(constr)) 
      { 
       using (SqlCommand cmd = new SqlCommand("SELECT DISTINCT CorporateName, Region FROM MACHINE")) 
       { 
        using (SqlDataAdapter da = new SqlDataAdapter()) 
        { 
         DataTable dt = new DataTable(); 
         cmd.CommandType = CommandType.Text; 
         cmd.Connection = con; 
         da.SelectCommand = cmd; 
         da.Fill(dt); 
         dt.TableName = "Region"; 
         return dt; 
        } 
       } 
      } 
     } 
     private DataTable SkyvisionZoneData() 
     { 
      string constr = ConfigurationManager.ConnectionStrings["Media_OperationsConnectionString9"].ConnectionString; 
      using (SqlConnection con = new SqlConnection(constr)) 

      { 
       using (SqlCommand cmd = new SqlCommand("SELECT DISTINCT CorporateName, Spare, Region FROM dbo.Machine WHERE CorporateName LIKE @CorporateName OR Region like @Region")) 

       { 
        using (SqlDataAdapter da = new SqlDataAdapter()) 
        { 
         Label1.Text = TextBox1.Text; 
         DataTable dt = new DataTable(); 
         cmd.CommandType = CommandType.Text; 
         cmd.Parameters.Add("@CorporateName", SqlDbType.VarChar, 50).Value = Label1.Text; 
         cmd.Parameters.Add("@Region", SqlDbType.VarChar, 20).Value = Label1.Text; 
         cmd.Connection = con; 
         da.SelectCommand = cmd; 
         da.Fill(dt); 
         dt.TableName = "Machine"; 
         return dt; 
        } 
       } 
      } 
     } 
     public DataSet getDataSetExportToExcel() 
     { 
      DataSet ds = new DataSet(); 

      DataTable Machine = new DataTable("Machine Data"); 
      Machine = SkyvisionMachineData(); 

      DataTable Region = new DataTable("Skyvision Zone Data"); 
      Region = SkyvisionZoneData(); 

      ds.Tables.Add(Machine); 
      ds.Tables.Add(Region); 
      return ds; 

     } 
     protected void ExportToExcel_Click(object sender, EventArgs e) 
     { 
      DataSet ds = getDataSetExportToExcel(); 
      using (XLWorkbook wb = new XLWorkbook()) 
      { 
       wb.Worksheets.Add(ds); 
       wb.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center; 
       wb.Style.Font.Bold = true; 
       Response.Clear(); 
       Response.Buffer = true; 
       Response.Charset = ""; 
       Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
       Response.AddHeader("content-disposition", "attachment;filename= DBSearchReport.xlsx 

    "); 
       using (MemoryStream MyMemoryStream = new MemoryStream()) 
       { 
        wb.SaveAs(MyMemoryStream); 
        MyMemoryStream.WriteTo(Response.OutputStream); 
        Response.Flush(); 
        Response.End(); 
       } 
      } 
     } 
+0

Вы знакомы с тем, как слить с помощью DataTable ..? есть много примеров того, как это сделать онлайн – MethodMan

+0

К сожалению, нет. Я был бы очень признателен, если бы вы могли показать мне, как это делается в моем сценарии. –

+0

Я только что сказал вам, что вам следует делать. Простой поиск в Google о том, как объединить данные, в чем проблема, если вы не хотите это делать, а затем Google, как построить инструкцию UNION, и я бы предложил вам преобразовать sql в a Хранимая процедура также – MethodMan

ответ

1

Метод Объединить принимает значения из второй таблицы и объединяет их с первой таблицей, так что первый теперь будет удерживать значения от обоих.

Если вы хотите сохранить оба исходных таблиц, можно скопировать оригинал, а затем сливаются:

dtAll = new DataTable(); 
... 
dtAll.Merge(dtOne); 
dtAll.Merge(dtTwo); 
dtAll.Merge(dtThree); 

Этот метод полезен в цикле, где вы хотите итеративно объединить таблицы данных:

DataTable dtAllCountries = new DataTable(); 

foreach(String strCountry in listCountries) 
{ 
    DataTable dtCountry = getData(strCountry); //Some function that returns a data table 
    dtAllCountries.Merge(dtCountry); 
} 
Смежные вопросы