Diskuze: formatovanie taublky pri exporte do excelu

C# .NET .NET (C# a Visual Basic) formatovanie taublky pri exporte do excelu American English version English version

Aktivity (1)
Avatar
klanduch
Člen
Avatar
klanduch:5.10.2015 14:08

Zdravim,

uz dlsie nemozem vyriesit jeden problem.

Pri exporte do Excelu pouzivam klasicky triedu na export.

public static void Export(string fileName, GridView gv)
 {
     HttpContext.Current.Response.Clear();
     HttpContext.Current.Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", fileName));
     //HttpContext.Current.Response.ContentType = "application/ms-excel";
     //HttpContext.Current.Response.ContentType = "application/vnd.ms-excel"; /* Excel 2003 */
     HttpContext.Current.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; /* Excel 2007 */

     // Prekodovanie
     HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Unicode;
     HttpContext.Current.Response.BinaryWrite(System.Text.Encoding.Unicode.GetPreamble());

     using (StringWriter sw = new StringWriter())
     {
         using (HtmlTextWriter htw = new HtmlTextWriter(sw))
         {
             // Create a form to contain the grid
             Table table = new Table();
             // pridať riadok hlavička do tabuľky
             if (gv.HeaderRow != null)
             {
                 GridViewExport.PrepareControlForExport(gv.HeaderRow);
                 gv.HeaderRow.Style.Add("background-color", "#FFFFFF");
                 //Ak chcem zmenit formatovanie hlavičky farba pozadia nezávisle jednotlivé bunky
                 for (int index = 0; index < gv.HeaderRow.Cells.Count; index++)
                 {
                     gv.HeaderRow.Cells[index].Style.Add("background-color", "#99CCFF");
                 }
                 table.Rows.Add(gv.HeaderRow);
             }
             // pridať každý z dátových riadkov
             int index2 = 1;
             foreach (GridViewRow row in gv.Rows)
             {
                 GridViewExport.PrepareControlForExport(row);
                 //Ak chcem zmenit formatovanie riadkov - každý druhý riadok ofarbiť
                 if (index2 <= gv.Rows.Count)
                     {
                        if (index2 % 2 != 0)
                         {
                             for (int index3 = 0; index3 < row.Cells.Count; index3++)
                             {
                                 row.Cells[index3].Style.Add("background-color", "#eed0bb");
                             }
                         }
                     }
                     index2++;

                 table.Rows.Add(row);
             }
             // pridať riadok päta do tabuľky
             if (gv.FooterRow != null)
             {
                 GridViewExport.PrepareControlForExport(gv.FooterRow);
                 table.Rows.Add(gv.FooterRow);
             }
             // vykresliť tabuľku do htmlwriter
             table.RenderControl(htw);
             // vykresliť htmlwriter do odpovede Respose
             HttpContext.Current.Response.Write(sw.ToString());
             HttpContext.Current.Response.End();
         }
     }
 }

Nemám problém napr. naformátovať hlavičku ani napr. zmeniť farbu pozadia kazdemu druhemu riadku ako to je v kode hore.

Ale neviem ako zmeniť napr. farbu riadka podľa kodu (jeden znak) v nejakom stlpci, ktorý je visible false.

Na samotnej stránke to v gride viem cez RowDataBound ale pri exporte do Excelu uz nie.

Viete poradiť.

Dik za rady

 
Odpovědět 5.10.2015 14:08
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.