2013-04-11 2 views
1

Я использую следующие две функции для экспорта данных gridview в excel. Проблема в том, что данные экспортируются полностью, но выравниваются по правому краю, мне нужно выравнивание по центру, я не могу это понять вне. Смогите помочь мне в этом отношении. Любая помощь будет принята с благодарностью.Выравнивать текст CENTER при экспорте в excel

public static void GenerateExcel(GridView gv) 
     { 
      HttpContext.Current.Response.Clear(); 
      HttpContext.Current.Response.AppendHeader("Content-disposition", "attachment; filename=Leave_Report.xls"); 
      HttpContext.Current.Response.ContentType = "application/ms-excel"; 

      using (StringWriter sw = new StringWriter()) 
      { 
       using (HtmlTextWriter htw = new HtmlTextWriter(sw)) 
       { 
        // Create a table to contain the grid 
        Table table = new Table(); 

        // include the gridline settings 
        table.GridLines = gv.GridLines; 

        // add the header row to the table 
        if (gv.HeaderRow != null) 
        { 
         PrepareControlForExport(gv.HeaderRow); 
         table.Rows.Add(gv.HeaderRow); 
        } 
        //Make Header Coloruful 

        for (int j = 0; j < gv.Columns.Count; j++) 
        { 
         //Apply style to Individual Cells 
         gv.HeaderRow.Cells[j].Style.Add("background-color", "#4DB4EE"); 

        } 

        // add each of the data rows to the table 
        foreach (GridViewRow row in gv.Rows) 
        { 
         PrepareControlForExport(row); 
         table.Rows.Add(row); 
        } 

        // add the footer row to the table 
        if (gv.FooterRow != null) 
        { 
         PrepareControlForExport(gv.FooterRow); 
         table.Rows.Add(gv.FooterRow); 
        } 

        // render the table into the htmlwriter 
        table.RenderControl(htw); 

        // render the htmlwriter into the response 
        HttpContext.Current.Response.Write(sw.ToString()); 
        HttpContext.Current.Response.End(); 
       } 
      } 


     } 


private static void PrepareControlForExport(Control control) 
    { 
     for (int i = 0; i < control.Controls.Count; i++) 
     { 
      Control current = control.Controls[i]; 
      if (current is LinkButton) 
      { 
       control.Controls.Remove(current); 
       control.Controls.AddAt(i, new LiteralControl((current as LinkButton).Text)); 
      } 
      else if (current is ImageButton) 
      { 
       control.Controls.Remove(current); 
       control.Controls.AddAt(i, new LiteralControl((current as ImageButton).AlternateText)); 
      } 
      else if (current is HyperLink) 
      { 
       control.Controls.Remove(current); 
       control.Controls.AddAt(i, new LiteralControl((current as HyperLink).Text)); 
      } 
      else if (current is DropDownList) 
      { 
       control.Controls.Remove(current); 
       control.Controls.AddAt(i, new LiteralControl((current as DropDownList).SelectedItem.Text)); 
      } 
      else if (current is CheckBox) 
      { 
       control.Controls.Remove(current); 
       control.Controls.AddAt(i, new LiteralControl((current as CheckBox).Checked ? "True" : "False")); 
      } 

      if (current.HasControls()) 
      { 
       PrepareControlForExport(current); 
      } 
     } 
    } 
+0

Что вы пробовали ??????????? –

+0

Я пытаюсь работать с wSheet.get_Range («B3», «B3»). HorizontalAlignment = Constants.xlCenter; но для этого мне нужно изменить целую функцию, я пытаюсь найти способы в вышеупомянутой функции для выравнивания текста с центром – 2013-04-11 05:24:38

+0

, пожалуйста, просмотрите обновленный ответ. –

ответ

0

попробовать

wSheet.get_Range("B3", "B3").HorizontalAlignment = HorizontalAlign.Center; 

вместо

wSheet.get_Range("B3", "B3").HorizontalAlignment = Constants.xlCenter; 
0

Попробуйте

 foreach (GridViewRow row in gv.Rows) 
     { 
      foreach (TableCell cell in row.Cells) 
      { 
       cell.Attributes.CssStyle["text-align"] = "center"; 
      } 
     } 
Смежные вопросы