public static string Dt2Ltr(DataTable dt, string baslik, string toplanacaklarKolonlar, string haricKolonlar)
        {
            string ltr = "";
            StringBuilder ltr2 = new StringBuilder();
            if (baslik != "")
                //ltr += @"<h5>" + baslik + "</h5><br>";
                ltr2.AppendLine("<h5>" + baslik + "</h5><br>");
            try
            {
                //ltr += @"<table id='gridi' class='table table-bordered table2' style='color: black;'><thead>";
                ltr2.AppendLine("<table id='gridi' class='table table-bordered table2' style='color: black;'><thead>");
                //önceki dönem, sonraki dönem renkelri için
                //string renk = (dt.Columns[j].ColumnName.StartsWith("Ö. ") ? "#f7f1e3" : (dt.Columns[j].ColumnName.StartsWith("S. ") ? "#d1ccc0" : ""));
                if (dt.Rows.Count > 0)
                {
                    //ltr += "<tr style='text-align:center'>";
                    ltr2.AppendLine("<tr style='text-align:center'>");
                    for (int i = 0; i < dt.Columns.Count; i++)
                    {
                        if (haricKolonlar.Contains(dt.Columns[i].ColumnName)) continue;
                        //ltr += " < th class='" + (dt.Columns[i].ColumnName.StartsWith("Ö. ") ? "o" : (dt.Columns[i].ColumnName.StartsWith("S. ") ? "s" : "")) + "'>" + dt.Columns[i].ColumnName + "</th>";
                        ltr2.AppendLine("<th>" + dt.Columns[i].ColumnName + "</th>");
                    }
                    //ltr += "</tr></thead><tbody>";
                    ltr2.AppendLine("</tr></thead><tbody>");
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        //ltr += "<tr>";
                        ltr2.AppendLine("<tr>");
                        for (int j = 0; j < dt.Columns.Count; j++)
                        {
                            //if (dt.Columns[j].DataType == System.Type.GetType("System.DateTime"))
                            //    ltr += "<td nowrap='nowrap' align='center'>" + ((DateTime)dt.Rows[i][j]).ToString("dd.MM.yyyy") + "</td>";
                            string renk = "";// (dt.Columns[j].ColumnName.StartsWith("Ö. ") ? "o" : (dt.Columns[j].ColumnName.StartsWith("S. ") ? "s" : ""));
                            if (haricKolonlar.Contains(dt.Columns[j].ColumnName)) continue;

                            if (dt.Columns[j].DataType == System.Type.GetType("System.Decimal") || dt.Columns[j].DataType == System.Type.GetType("System.Double"))
                            {
                                if (dt.Rows[i][j] == DBNull.Value) dt.Rows[i][j] = 0m;
                                ////2019.03.25 mutlum önceki döeneme göre düşüş varsa kırmızı olsun
                                //if (dt.Columns[j].ColumnName == "Son. Dön. KG")
                                //{
                                //    if ((decimal)dt.Rows[i]["DegOranı"] < 0)
                                //        ltr += "<td align='right' style='background-color:red;color:white;'>" + "<small><i>%" + ((decimal)dt.Rows[i]["DegOranı"]).ToString("N2") + "</i></small>&nbsp; &nbsp; " + Convert.ToDecimal(dt.Rows[i][j].ToString()).ToString("N2") + "</td>";
                                //    else
                                //        ltr += "<td align='right' class='" + renk + "'>" + Convert.ToDecimal(dt.Rows[i][j]).ToString("N2") + "</td>";
                                //}
                                //else
                                {
                                    //ltr += "<td align='right' style='text-align:right' class='" + renk + "' data-order='" + dt.Rows[i][j].ToString() + "'> " + Convert.ToDecimal(dt.Rows[i][j]).ToString("N2") + "</td>";
                                    ltr2.AppendLine("<td align='right' data-order='" + dt.Rows[i][j].ToString() + "'>" + Convert.ToDecimal(dt.Rows[i][j]).ToString("N2") + "</td>");
                                }
                                continue;
                            }

                            if (dt.Columns[j].DataType == System.Type.GetType("System.Int16") || dt.Columns[j].DataType == System.Type.GetType("System.Int32"))
                            {
                                if (dt.Rows[i][j] == DBNull.Value) dt.Rows[i][j] = 0;
                                //ltr += "<td align='right' style='text-align:right' class='" + renk + "' data-order='" + dt.Rows[i][j].ToString() + "'> " + Convert.ToDecimal(dt.Rows[i][j]).ToString("N0") + "</td>";
                                ltr2.AppendLine("<td align='right' style='text-align:right' >" + Convert.ToDecimal(dt.Rows[i][j]).ToString("N0") + "</td>");
                                continue;
                            }

                            if (dt.Columns[j].DataType != System.Type.GetType("System.Double") && dt.Columns[j].DataType != System.Type.GetType("System.Decimal"))
                            {
                                if (dt.Rows[i][j] == DBNull.Value) dt.Rows[i][j] = "";
                                //ltr += "<td class='" + renk + "'>" + dt.Rows[i][j].ToString() + "</td>";
                                ltr2.AppendLine("<td class='" + renk + "'>" + dt.Rows[i][j].ToString() + "</td>");
                                continue;
                            }
                        }
                        //ltr += "</tr>";
                        ltr2.AppendLine("</tr>");
                    }
                    //ltr += "</tbody>";
                    ltr2.AppendLine("</tbody>");
                    //neyler toplanacak
                    if (toplanacaklarKolonlar != "")
                    {
                        string[] ttler = toplanacaklarKolonlar.Split(new string[1] { "," }, StringSplitOptions.RemoveEmptyEntries);
                        decimal[] ttlerd = new decimal[ttler.Length];
                        for (int i = 0; i < ttler.Length; i++)
                        {
                            for (int j = 0; j < dt.Rows.Count; j++)
                            {
                                decimal t = 0.0m;
                                //kolon ismi yerine, kolon nosu gönderilirse ör 6,7
                                //decimal.TryParse(dt.Rows[j][Convert.ToInt16(ttler[i])].ToString(), out t);
                                //kolon ismi gönderilirse
                                decimal.TryParse(dt.Rows[j][ttler[i]].ToString(), out t);
                                ttlerd[i] += t;
                            }
                        }
                        string toplami = "<tr>";
                        for (int j = 0; j < dt.Columns.Count; j++)
                        {
                            if (haricKolonlar.Contains(dt.Columns[j].ColumnName)) continue;

                            bool y = false;
                            for (int i = 0; i < ttler.Length; i++)
                            {
                                //kolon ismi yerine, kolon nosu gönderilirse ör 6,7
                                //if (j.ToString() == ttler[i].ToString())
                                if (dt.Columns[j].ColumnName == ttler[i].ToString())
                                { y = true; toplami += "<td nowrap='nowrap' align='right'><b>" + ttlerd[i].ToString("N2") + "</b></td>"; break; }
                            }
                            if (!y)
                            { toplami += "<td></td>"; }
                        }
                        toplami += "</tr>";
                        //ltr += toplami;
                        ltr2.AppendLine(toplami);
                    }
                }
                //ltr += "</table>";
                ltr2.AppendLine("</table>");
            }
            catch (Exception ex)
            {
                ;
            }
            return ltr2.ToString();//ltr;
        }