Click here to Skip to main content
15,889,637 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
HI,

I am created a window app for sending email to our user. I have created a html table in my program aand sending via email .


My html table email display correctly in browser but in Microsoft office outlook 2007 is display completely horrible.

Please see image attachment.

1. Display HTml table like this in Microsoft office outlook 2007
image[^]

2. Display html table in web looking good.
image[^]
Calling Both function
C#
sb.Append(_clsManageConnection.CreateTableHeader(_ds, 1, 3, "", SkipColumn, false, false, inLineStyle, false, true, countHeader-1, tbodyStyle, true, blankHeaderText, true,SkipColumn.Length-1));

                        
sb.Append(_clsManageConnection.BindDataIntoTable(_ds, "", SkipColumn, false, false, false, 0,false, 0, false, countHeader - 1, true, "", _htRowChange, "NodeType", RowMargeColumn,true,1));




Code for creating header
C#
public string CreateTableHeader(DataSet _dtRecord, int databaseIndex, int totalHeader, string CheckColumn, string[] SkipColumn, bool isSerialNo, bool isBlankColumn, string inlineStyle, bool _isColumnRemove, bool _isHeaderBlank, int _headerBlankLength, string tbodyStyle, bool IsBlankHeaderNotRowSpan, string BlankHeaderText, bool IsPrintTextInBlank, int SubStractMargingHeaderRowCount)
       {
           if (databaseIndex > 1)
           {
               for (int i = 1; i < databaseIndex; i++)
               {
                   _dtRecord.Tables.RemoveAt(0);
                   _dtRecord.AcceptChanges();
               }
           }
           StringBuilder sbHeader = new StringBuilder();
           bool isMultiLastColumn = false;
           sbHeader.Append("<table width='1024px' border='1' id='excelTable" + databaseIndex + "' cellspacing='0' style='" + inlineStyle + "'>");
           sbHeader.Append("<thead style='" + tbodyStyle + "font-family:verdana;font-size:8pt;'>");
           ArrayList _arrColumnAddedList = new ArrayList();
           bool _isSerialNumber = isSerialNo;
           for (int _totalHeader = 0; _totalHeader < totalHeader; _totalHeader++)
           {
               string _serialNamePrint = string.Empty;
               bool isSerialNamePrint = false;
               if (_totalHeader == (totalHeader - 1) && _isSerialNumber)
               {
                   _serialNamePrint = "No";
                   isSerialNamePrint = true;
               }
               if (isMultiLastColumn)
                   isMultiLastColumn = false;
               if (_dtRecord.Tables[0].Columns.Count > 0)
               {
                   sbHeader.Append("<tr style='" + tbodyStyle + "font-family:verdana;font-size:8pt;'>");
                   string previousCol = string.Empty;
                   int _totalCol = 0;
                   bool _isFirstRow = true, _isBlankColumn = isBlankColumn, _isSerialNo = isSerialNo;
                   string fontWeightStyle = string.Empty;
                   for (int headerCount = (_isSerialNo == true ? -1 : 0); headerCount < _dtRecord.Tables[0].Columns.Count; headerCount++)
                   {
                       if (_isSerialNo)
                       {
                           if (_totalHeader == (totalHeader - 1) && isSerialNamePrint == true && _isSerialNumber)
                           {
                               sbHeader.Append("<th style='background-color:#002060;color:white;font-family:verdana;font-size:8pt;'>" + _serialNamePrint + "</th>");
                               isSerialNamePrint = false;
                           }
                           else
                               sbHeader.Append("<th style='background-color:#002060;color:white;font-family:verdana;font-size:8pt;'></th>");
                           _isSerialNo = false;
                           continue;
                       }
                       if (_isBlankColumn == true && !SkipColumn.Contains(_dtRecord.Tables[0].Columns[headerCount].ColumnName.ToString().Trim()))
                       {
                           if (_totalHeader == (totalHeader - 1) && _isBlankColumn && !_arrColumnAddedList.Contains(_dtRecord.Tables[0].Columns[headerCount].ColumnName))
                           {
                               sbHeader.Append("<th style='background-color:#002060;color:white;font-family:verdana;font-size:8pt;'>" + _dtRecord.Tables[0].Columns[headerCount].ColumnName.ToString().Trim() + "</th>");
                               _arrColumnAddedList.Add(_dtRecord.Tables[0].Columns[headerCount].ColumnName);
                           }
                           else
                               sbHeader.Append("<th style='background-color:#002060;color:white;font-family:verdana;font-size:8pt;'></th>");
                           continue;
                       }
                       if (_dtRecord.Tables[0].Columns[headerCount].ColumnName.ToString().Trim() == CheckColumn)
                           _isBlankColumn = false;
                       if (_isHeaderBlank && headerCount < _headerBlankLength)
                       {

                           if (!SkipColumn.Contains(_dtRecord.Tables[0].Columns[headerCount].ColumnName.ToString().Trim()))
                           {
                               if (BlankHeaderText != string.Empty && headerCount == _headerBlankLength - 1)
                               {
                                   sbHeader.Append("<th colspan='" + (_headerBlankLength - SubStractMargingHeaderRowCount) + "' style='font-size:8pt;background-color:#002060;color:white;font-family:verdana;text-align;left;'>" + BlankHeaderText + "</th>");
                                   BlankHeaderText = string.Empty;
                               }
                               else if (IsPrintTextInBlank && BlankHeaderText == string.Empty)
                               {
                                   if (!_arrColumnAddedList.Contains(_dtRecord.Tables[0].Columns[headerCount].ColumnName))
                                       sbHeader.Append("<th style='font-size:8pt;background-color:#002060;color:white;font-weight:normal;font-family:verdana;'>" + _dtRecord.Tables[0].Columns[headerCount].ColumnName.ToString().Trim() + "</th>");
                                   else
                                       sbHeader.Append("<th style='font-size:8pt;background-color:#002060;color:white;font-weight:normal;font-family:verdana;'></th>");
                                   _arrColumnAddedList.Add(_dtRecord.Tables[0].Columns[headerCount].ColumnName);
                               }
                               else if (BlankHeaderText == string.Empty && !IsPrintTextInBlank)
                                   sbHeader.Append("<th style='font-size:8pt;background-color:#002060;color:white;font-family:verdana;'></th>");
                           }
                           continue;
                       }
                       if (_isColumnRemove == true && SkipColumn.Contains(_dtRecord.Tables[0].Columns[headerCount].ColumnName.ToString().Trim()))
                           continue;
                       if (!_dtRecord.Tables[0].Columns[headerCount].ColumnName.Contains("^") && _isBlankColumn == false && !SkipColumn.Contains(_dtRecord.Tables[0].Columns[headerCount].ColumnName.ToString().Trim()))
                       {
                           if (isMultiLastColumn)
                           {
                               sbHeader.Append("<th colspan='" + _totalCol + "' style='font-size:8pt;background-color:#2E75B6;color:white;font-family:verdana;text-align:left;'>" + previousCol + "</th>");
                               isMultiLastColumn = false;
                               _totalCol = 0;
                               previousCol = string.Empty;
                               _isFirstRow = true;
                           }
                           if (totalHeader > 1)
                           {
                               if (_dtRecord.Tables[0].Columns[headerCount].ColumnName.ToString().Trim() != CheckColumn && !_arrColumnAddedList.Contains(_dtRecord.Tables[0].Columns[headerCount].ColumnName))
                               {
                                   sbHeader.Append("<th rowspan='" + totalHeader + "' style='font-size:8pt;background-color:#2E75B6;color:white;font-family:verdana;text-align:left;'>" + _dtRecord.Tables[0].Columns[headerCount].ColumnName + "</th>");
                                   _arrColumnAddedList.Add(_dtRecord.Tables[0].Columns[headerCount].ColumnName);
                               }
                           }
                           else if (_dtRecord.Tables[0].Columns[headerCount].ColumnName.ToString().Trim() != CheckColumn)
                               sbHeader.Append("<th style='font-size:8pt;background-color:#2E75B6;color:white;font-weight:normal;font-family:verdana;text-align:left;'>" + _dtRecord.Tables[0].Columns[headerCount].ColumnName + "</th>");
                       }
                       fontWeightStyle = string.Empty;
                       if (_dtRecord.Tables[0].Columns[headerCount].ColumnName.Contains("^"))
                       {
                           if (_totalHeader >=1)
                           {
                               fontWeightStyle = "font-weight:normal;";
                           }
                           char[] _char = new char[1];
                           _char[0] = '^';
                           string[] columns = _dtRecord.Tables[0].Columns[headerCount].ColumnName.Split(_char);
                           if (previousCol == (columns[_totalHeader] == "" ? columns[0] : columns[_totalHeader]))
                           {
                               _totalCol++;
                           }
                           else
                           {
                               if (!_isFirstRow)
                               {
                                   sbHeader.Append("<th colspan='" + _totalCol + "' style='font-size:8pt;font-family:verdana;background-color:#2E75B6;color:white;" + fontWeightStyle + "'>" + (columns[_totalHeader] == "" ? columns[_totalHeader]: _dtRecord.Tables[0].Columns[headerCount-1].ColumnName.Split(_char)[_totalHeader]==""?"":previousCol)  + "</th>");
                               }
                               _totalCol = 0;
                               previousCol = string.Empty;
                           }
                           if (previousCol == string.Empty)
                           {
                               previousCol = (columns[_totalHeader]==""?columns[0]:columns[_totalHeader]);
                               _totalCol++;
                           }
                           _isFirstRow = false;
                           isMultiLastColumn = true;
                       }
                   }
                   if (isMultiLastColumn)
                   {
                       if (_totalHeader >=1)
                       {
                           fontWeightStyle = "font-weight:normal;";
                       }
                       sbHeader.Append("<th colspan='" + _totalCol + "' style='font-size:8pt;font-family:verdana;background-color:#2E75B6;color:white;" + fontWeightStyle + "'>" + previousCol + "</th>");
                       isMultiLastColumn = false;
                       _totalCol = 0;
                       previousCol = string.Empty;
                       _isFirstRow = true;
                   }
                   sbHeader.Append("</tr>");
               }
               //Reset Value Again
               if (_totalHeader == totalHeader)
               {
                   isBlankColumn = false;
               }
           }
           sbHeader.Append("</thead>");
           return sbHeader.ToString();
       }


Code for creating body of html table

C#
public string BindDataIntoTable(DataSet _dtRecord, string CheckColumn, string[] SkipColumn, bool isSerialNo, bool isBlankColumn, bool isGrouping, int totalGroupTable, bool isLastColumnHighlight, int totalLastColumnHighLight, bool isDisplayPercentage, int blankHeaderColumn, bool IsRowCellsMarge, string rowGroupingColumnName, Hashtable _htRowChange, string RowChangeColumnName, string[] rowGroupingColumnNameList, bool IsRowhighligth, int totalRowHighLight)
        {

            StringBuilder sbBody = new StringBuilder();
            int _rowCount = 0, groupRowCount = 0, _totalCol = 0, _totalRow = 0, _rowCountForMarge = 0;
            string rowGroupName = string.Empty, previousCol = string.Empty, previousRow = string.Empty;
            bool _isFirstRow = true, isGroupRow = false, _isRowMarge = false, isNextRow = false;
            ArrayList _arrSkipColumnList = new ArrayList();
            int rowGroupCount = 0;
            if (_dtRecord.Tables[0].Rows.Count > 0)
            {
                sbBody.Append("<tbody style='font-size:7pt;border:1px solid #0242A1;font-family:verdana;border-collapse: collapse;border-spacing: 0px;text-align:center;font-weight:normal;padding:3pt;'>");
                for (int j = 0; j < _dtRecord.Tables[0].Rows.Count; j++)
                {
                    _rowCount++;
                    if (!isGrouping)
                    {

                        if (isLastColumnHighlight && _rowCount > _dtRecord.Tables[0].Rows.Count - totalLastColumnHighLight)
                            sbBody.Append("<tr style='background-color:#2E75B6;color:white !important;font-weight:bold;font-family:verdana;'>");
                        else if (IsRowhighligth && _rowCount <= totalRowHighLight)
                            sbBody.Append("<tr style='background-color:#2E75B6;color:white !important;font-weight:bold;font-family:verdana;'>");
                        else if (_dtRecord.Tables[0].Rows[j][RowChangeColumnName].ToString() == "10" && _dtRecord.Tables[0].Rows[j]["FlgToHide"].ToString() != "1")
                            sbBody.Append("<tr style='background-color:#DFECF7;color:black !important;font-weight:normal;font-family:verdana;'>");
                        else if (_dtRecord.Tables[0].Rows[j][RowChangeColumnName].ToString() == "6")
                            sbBody.Append("<tr style='background-color:#ACCCEA;color:black !important;font-weight:normal;font-family:verdana;'>");
                        else if (_dtRecord.Tables[0].Rows[j][RowChangeColumnName].ToString() == "10" && _dtRecord.Tables[0].Rows[j]["FlgToHide"].ToString() == "1")
                        {
                            //sbBody.Append("<tr height='1' style='background-color:#D0D3D5;font-size:1px; mso-line-height-alt:0; mso-margin-top-alt:1px; color:black !important;font-weight:normal;font-family:verdana;'>");
                            //sbBody.Append("<td height='1' style='font-size: 1px; line-height: 1px;mso-line-height-rule:exactly;' colspan='" + (_dtRecord.Tables[0].Columns.Count - (SkipColumn.Length + 1)) + "'></td></tr>");
                            continue;
                        }
                        else
                            sbBody.Append("<tr>");
                        int rowSkip = 0, rowSkipCount = 0;
                        bool IsFirst = true;
                        bool isNextSpan = false;
                        int skipColumn = 0;
                        string textAlign = string.Empty;
                        for (int i = (isSerialNo == true ? -1 : 0); i < _dtRecord.Tables[0].Columns.Count; i++)
                        {
                            if (i < blankHeaderColumn)
                            {
                                textAlign = "text-align:left;";
                            }
                            else
                                textAlign = "text-align:right;padding-right:5px;";
                            if (isSerialNo)
                            {
                                sbBody.Append("<td nowrap>" + _rowCount + "</td>");
                                isSerialNo = false;
                                continue;
                            }
                            if (!SkipColumn.Contains(_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim()))
                            {
                                if (_arrSkipColumnList.Contains(_dtRecord.Tables[0].Rows[j][i].ToString().Trim()) && skipColumn < rowGroupingColumnNameList.Length && isNextRow)
                                {
                                    //rowGroupCount++;
                                    if (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim() == rowGroupingColumnNameList[0])
                                        rowGroupCount++;
                                    skipColumn++;
                                    continue;
                                }
                                else
                                    isNextRow = false;

                                if (IsRowCellsMarge && previousRow == string.Empty && rowGroupingColumnNameList.Contains(_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim()))
                                {
                                    previousRow = _dtRecord.Tables[0].Rows[j][rowGroupingColumnNameList[rowGroupCount]].ToString().Trim();

                                    if (rowGroupCount == 0)
                                        _totalRow = _dtRecord.Tables[0].Select("[" + rowGroupingColumnNameList[rowGroupCount] + "]='" + previousRow + "'").Count();
                                    else if (rowGroupingColumnNameList.Length > 1)
                                    {
                                        string colFilter = string.Empty;
                                        for (int col = 0; col <= rowGroupCount; col++)
                                        {
                                            colFilter += "[" + rowGroupingColumnNameList[col] + "]='" + _dtRecord.Tables[0].Rows[j][rowGroupingColumnNameList[col]].ToString().Trim() + "' and ";
                                        }
                                        _totalRow = _dtRecord.Tables[0].Select(colFilter.Substring(0, colFilter.Length - 5)).Count();
                                    }
                                    _isRowMarge = true;

                                }
                                if (IsRowhighligth && _rowCount <= totalRowHighLight)
                                {
                                    rowSkip = int.Parse(_htRowChange[_dtRecord.Tables[0].Rows[j][RowChangeColumnName].ToString()].ToString());
                                    if (rowSkip > 0 && rowSkipCount <= rowSkip)
                                    {
                                        rowSkipCount++;
                                        if (IsFirst)
                                        {
                                            sbBody.Append("<td style='color:white;" + textAlign + "' class='td'  colspan='" + (rowSkip + 1) + "'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Contains("%") && _dtRecord.Tables[0].Rows[j][i].ToString().Trim() != string.Empty && isDisplayPercentage == true ? " %" : "") + "</td>");
                                            IsFirst = false;
                                        }
                                        else
                                            continue;
                                    }
                                    else
                                        sbBody.Append("<td style='color:white;" + textAlign + "' class='td'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Contains("%") && _dtRecord.Tables[0].Rows[j][i].ToString().Trim() != string.Empty && isDisplayPercentage == true ? " %" : "") + "</td>");
                                }
                                else if (isLastColumnHighlight && _rowCount > _dtRecord.Tables[0].Rows.Count - totalLastColumnHighLight)
                                {
                                    try
                                    {
                                        rowSkip = int.Parse(_htRowChange[_dtRecord.Tables[0].Rows[j][RowChangeColumnName].ToString()].ToString());
                                    }
                                    catch (Exception exrow)
                                    { }
                                    if (rowSkip > 0 && rowSkipCount <= rowSkip)
                                    {
                                        rowSkipCount++;
                                        if (IsFirst)
                                        {
                                            sbBody.Append("<td nowrap style='color:white;" + textAlign + "' class='td'  colspan='" + (rowSkip + 1) + "'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Contains("%") && _dtRecord.Tables[0].Rows[j][i].ToString().Trim() != string.Empty && isDisplayPercentage == true ? " %" : "") + "</td>");
                                            IsFirst = false;
                                        }
                                        else
                                            continue;
                                    }
                                    else
                                        sbBody.Append("<td nowrap style='color:white;" + textAlign + "' class='td'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Contains("%") && _dtRecord.Tables[0].Rows[j][i].ToString().Trim() != string.Empty && isDisplayPercentage == true ? " %" : "") + "</td>");
                                }
                                else
                                {
                                    try
                                    {
                                        rowSkip = int.Parse(_htRowChange[_dtRecord.Tables[0].Rows[j][RowChangeColumnName].ToString()].ToString());
                                    }
                                    catch (Exception exRow)
                                    {

                                    }
                                    if (rowSkip > 0 && rowSkipCount <= rowSkip)
                                    {
                                        rowSkipCount++;
                                        if (IsFirst)
                                        {
                                            if (_dtRecord.Tables[0].Rows[j][RowChangeColumnName].ToString() == "10")
                                            {
                                                sbBody.Append("<td  colspan='" + (rowSkip + 1) + "' nowrap style='" + textAlign + "'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Contains("%") && _dtRecord.Tables[0].Rows[j][i].ToString().Trim() != string.Empty && isDisplayPercentage == true ? " %" : "") + "</td>");
                                                isNextSpan = true;

                                            }
                                            else
                                                sbBody.Append("<td  colspan='" + (rowSkip + 1) + "' nowrap style='" + textAlign + "'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Contains("%") && _dtRecord.Tables[0].Rows[j][i].ToString().Trim() != string.Empty && isDisplayPercentage == true ? " %" : "") + "</td>");

                                            IsFirst = false;
                                        }
                                        //else if (isNextSpan)
                                        //{
                                        //    sbBody.Append("<td  colspan='" + (rowSkip + 1) + "' nowrap>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Contains("%") && _dtRecord.Tables[0].Rows[j][i].ToString().Trim() != string.Empty && isDisplayPercentage == true ? " %" : "") + "</td>");
                                        //    isNextSpan = false;
                                        //}
                                        else
                                            continue;
                                    }
                                    else
                                    {
                                        if (IsRowCellsMarge && _isRowMarge)
                                        {
                                            if (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim() == rowGroupingColumnNameList[rowGroupCount])
                                            {
                                                sbBody.Append("<td rowspan='" + _totalRow + "' align='center' valign='middle' style='vertical-align: middle;" + textAlign + "'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + "</td>");
                                                _isRowMarge = false;
                                                previousRow = string.Empty;
                                                if (rowGroupCount == 0)
                                                    _arrSkipColumnList.Clear();

                                                _arrSkipColumnList.Add(_dtRecord.Tables[0].Rows[j][i].ToString().Trim());
                                                if (rowGroupCount + 1 != rowGroupingColumnNameList.Length)
                                                    rowGroupCount++;

                                            }
                                            else
                                                sbBody.Append("<td  align='center' style='" + textAlign + "'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + "</td>");
                                        }
                                        else
                                        {
                                            if (!_isRowMarge && IsRowCellsMarge && _dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim() == rowGroupingColumnNameList[rowGroupCount])
                                                continue;
                                            else
                                            {
                                                if (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim() == "Route" && _dtRecord.Tables[0].Rows[j]["flgOnRoute"].ToString().Trim() == "0")
                                                    sbBody.Append("<td nowrap style='font-family:verdana;" + textAlign + "'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + "<span style='color:red;font-size:7px;'>*</span></td>");
                                                else
                                                    sbBody.Append("<td  nowrap style='font-family:verdana;" + textAlign + "'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + "</td>");
                                            }
                                        }

                                    }
                                }
                            }
                        }
                        sbBody.Append("</tr>");
                        {
                            previousRow = string.Empty;
                            _rowCountForMarge = 0;
                            _totalRow = 0;
                            isNextRow = true;
                            rowGroupCount = 0;
                        }
                    }

                    if (isGrouping)
                    {
                        if (previousCol == _dtRecord.Tables[0].Rows[j][CheckColumn].ToString())
                            _totalCol++;
                        else
                        {
                            if (!_isFirstRow)
                            {
                                isGroupRow = true;
                                rowGroupName = previousCol;
                            }
                            _totalCol = 0;
                            previousCol = string.Empty;
                        }
                        if (previousCol == string.Empty)
                        {
                            previousCol = _dtRecord.Tables[0].Rows[j][CheckColumn].ToString();
                            _totalCol++;
                        }
                        _isFirstRow = false;
                        if (IsRowCellsMarge && previousRow == string.Empty)
                        {
                            previousRow = _dtRecord.Tables[0].Rows[j][rowGroupingColumnName].ToString().Trim();
                            _totalRow = _dtRecord.Tables[0].Select("" + rowGroupingColumnName + "='" + previousRow + "'").Count();
                            _isRowMarge = true;
                        }
                        //_rowCountForMarge++;
                        _rowCountForMarge++;
                        if (!isGroupRow)
                        {
                            sbBody.Append("<tr style='font-family:verdana;'>");
                            bool _isSerialNo = isSerialNo;
                            string textAlign = string.Empty;
                            for (int i = (_isSerialNo == true ? -1 : 0); i < _dtRecord.Tables[0].Columns.Count; i++)
                            {
                                if (i < 9)
                                    textAlign = "text-align:left;";
                                else
                                    textAlign = "text-align:right;padding-right:5px;";
                                if (_isSerialNo)
                                {
                                    sbBody.Append("<td nowrap>" + _rowCount + "</td>");
                                    _isSerialNo = false;
                                    continue;
                                }
                                if (!SkipColumn.Contains(_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim()))
                                {
                                    if (IsRowCellsMarge && _isRowMarge)
                                    {
                                        if (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim() == rowGroupingColumnName)
                                        {
                                            sbBody.Append("<td rowspan='" + _totalRow + "' align='center' valign='middle' style='font-family:verdana;vertical-align: middle;text-align:left;'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + "</td>");
                                            _isRowMarge = false;
                                        }
                                        else
                                            sbBody.Append("<td style='text-align:left;'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + "</td>");
                                    }
                                    else
                                    {
                                        if (!_isRowMarge && IsRowCellsMarge && _dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim() == rowGroupingColumnName)
                                            continue;
                                        else
                                        {
                                            if (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim() == "Route" && _dtRecord.Tables[0].Rows[j]["flgOnRoute"].ToString().Trim() == "0")
                                                sbBody.Append("<td nowrap style='font-family:verdana;" + textAlign + "'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + "<span style='color:red;font-size:7px;'>*</span></td>");
                                            else
                                                sbBody.Append("<td nowrap style='font-family:verdana;" + textAlign + "'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + "</td>");
                                        }
                                    }
                                }
                            }
                            sbBody.Append("</tr>");
                            if (_totalRow == _rowCountForMarge)
                            {
                                previousRow = string.Empty;
                                _rowCountForMarge = 0;
                                _totalRow = 0;
                            }
                        }
                        if (isGroupRow)
                        {
                            sbBody.Append("<tr style='background-color:#A6BDE1;color:black;font-weight:bold;font-family:verdana;'>");
                            DataRow[] drw = _dtRecord.Tables[1].Select("" + CheckColumn + "='" + rowGroupName + "'");
                            bool isMarge = false;
                            bool _isSerialNo = isSerialNo;
                            for (int i = (_isSerialNo == true ? -1 : 0); i < drw[0].ItemArray.Length; i++)
                            {
                                if (_isSerialNo)
                                {
                                    sbBody.Append("<td nowrap></td>");
                                    _isSerialNo = false;
                                    continue;
                                }
                                if (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim() != CheckColumn && isMarge == false)
                                    groupRowCount++;
                                //else if (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim() == CheckColumn)
                                //{
                                //    sbBody.Append("<td nowrap colspan='" + (groupRowCount != 0 ? groupRowCount : (blankHeaderColumn - 2)) + "'  style='color:black !important;font-family:verdana;'> Total : " + rowGroupName + "</td>");
                                //    isMarge = true;
                                //    groupRowCount = 0;
                                //}
                                else if (i > blankHeaderColumn)
                                    sbBody.Append("<td nowrap  style='color:black !important;font-family:verdana;text-align:right;padding-removed5px;'>" + drw[0][i].ToString().Trim() + "</td>");
                            }
                            sbBody.Append("</tr>");
                            sbBody.Append("<tr style='font-family:verdana;'>");
                            _isSerialNo = isSerialNo;
                            string textAlign = string.Empty;
                            for (int i = (_isSerialNo == true ? -1 : 0); i < _dtRecord.Tables[0].Columns.Count; i++)
                            {
                                if (i < 9)
                                    textAlign = "text-align:left;";
                                else
                                    textAlign = "text-align:right;padding-right:5px;";
                                if (_isSerialNo)
                                {
                                    sbBody.Append("<td nowrap>" + _rowCount + "</td>");
                                    _isSerialNo = false;
                                    continue;
                                }
                                //if (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim() != CheckColumn)
                                //    sbBody.Append("<td nowrap>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + "</td>");
                                if (!SkipColumn.Contains(_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim()))
                                {
                                    //if (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim() == "Route" && _dtRecord.Tables[0].Rows[j]["flgOnRoute"].ToString().Trim() == "0")
                                    //    sbBody.Append("<td nowrap>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + "<span style='color:red;font-size:7px;font-family:verdana;'>*</span></td>");
                                    //else
                                    //    sbBody.Append("<td nowrap style='font-family:verdana;'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + "</td>");
                                    if (IsRowCellsMarge && _isRowMarge)
                                    {
                                        if (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim() == rowGroupingColumnName)
                                        {
                                            sbBody.Append("<td rowspan='" + _totalRow + "' align='center' valign='middle' style='font-family:verdana;vertical-align: middle;text-align:left;'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + "</td>");
                                            _isRowMarge = false;
                                        }
                                        else
                                            sbBody.Append("<td style='font-family:verdana;text-align:left;'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + "</td>");
                                    }
                                    else
                                    {
                                        if (!_isRowMarge && IsRowCellsMarge && _dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim() == rowGroupingColumnName)
                                            continue;
                                        else
                                        {
                                            if (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim() == "Route" && _dtRecord.Tables[0].Rows[j]["flgOnRoute"].ToString().Trim() == "0")
                                                sbBody.Append("<td nowrap style='font-family:verdana;" + textAlign + "'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + "<span style='color:red;font-size:7px;'>*</span></td>");
                                            else
                                                sbBody.Append("<td nowrap style='font-family:verdana;" + textAlign + "'>" + _dtRecord.Tables[0].Rows[j][i].ToString().Trim() + "</td>");
                                        }
                                    }
                                };
                            }
                            isGroupRow = false;
                            sbBody.Append("</tr>");
                            if (_totalRow == _rowCountForMarge)
                            {
                                previousRow = string.Empty;
                                _rowCountForMarge = 0;
                                _totalRow = 0;
                            }
                        }
                    }
                }

                if (isGrouping)
                {
                    if (_rowCount == _dtRecord.Tables[0].Rows.Count)
                    {
                        bool _isSerialNo = isSerialNo;
                        sbBody.Append("<tr style='background-color:#A6BDE1;color:black;font-weight:bold;font-family:verdana;'>");
                        DataRow[] drw = _dtRecord.Tables[1].Select("" + CheckColumn + "='" + previousCol + "'");
                        bool isMarge = false;
                        for (int i = (_isSerialNo == true ? -1 : 0); i < drw[0].ItemArray.Length; i++)
                        {
                            if (_isSerialNo)
                            {
                                sbBody.Append("<td nowrap></td>");
                                _isSerialNo = false;
                                continue;
                            }
                            if (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim() != CheckColumn && isMarge == false)
                                groupRowCount++;
                            //else if (_dtRecord.Tables[0].Columns[i].ColumnName.ToString().Trim() == CheckColumn)
                            //{
                            //    sbBody.Append("<td nowrap colspan='" + (groupRowCount != 0 ? groupRowCount : (blankHeaderColumn - 2)) + "' style='color:black !important;font-family:verdana;'>Total : " + previousCol + "</td>");
                            //    //sb.Append("<td style='color:white !important;'>" + drw[0][i].ToString().Trim() + "</td>");
                            //    isMarge = true;
                            //    groupRowCount = 0;
                            //}
                            else if (i > blankHeaderColumn)
                                sbBody.Append("<td nowrap style='color:black !important;font-family:verdana;text-align:right;padding-removed5px;'>" + drw[0][i].ToString().Trim() + "</td>");
                        }
                        sbBody.Append("</tr>");
                        isGroupRow = false;
                    }

                    // Last Table Grouping
                    if (_dtRecord.Tables[2].Rows.Count > 0)
                    {
                        sbBody.Append("<tr style='background-color:#507EC5;color:white;font-weight:bold;font-family:verdana;'>");
                        bool isMarge = false;
                        bool _isSerialNo = isSerialNo;
                        for (int i = (_isSerialNo == true ? -1 : 0); i < _dtRecord.Tables[2].Columns.Count; i++)
                        {
                            if (_isSerialNo)
                            {
                                groupRowCount++;
                                _isSerialNo = false;
                                continue;
                            }
                            if (_dtRecord.Tables[2].Columns[i].ColumnName.ToString().Trim() != CheckColumn && isMarge == false)
                                groupRowCount++;
                            else if (_dtRecord.Tables[2].Columns[i].ColumnName.ToString().Trim() == CheckColumn)
                            {
                                sbBody.Append("<td nowrap colspan='" + (groupRowCount != 0 ? groupRowCount : (blankHeaderColumn - 2)) + "' align='right' style='color:white; text-align:center;font-family:verdana;'>" + "Grand Total" + "</td>");
                                isMarge = true;
                                groupRowCount = 0;
                            }
                            else if (i > blankHeaderColumn)
                                sbBody.Append("<td nowrap style='color:white;font-family:verdana;text-align:right;padding-removed5px;'>" + _dtRecord.Tables[2].Rows[0][i].ToString().Trim() + "</td>");
                        }
                        sbBody.Append("</tr>");
                    }
                }
                sbBody.Append("</tbody>");
                sbBody.Append("</table>");
            }
            return sbBody.ToString();
        }


Please help me and provide a better solutions.

Thanks

What I have tried:

I am try to display actual html table in microsoft office outlook 2007. Please review also my code which is mention above.
Posted
Updated 7-Mar-16 3:27am
v5
Comments
Maciej Los 7-Mar-16 5:43am    
Improve question and provide code sample.
Ram Kumar(Webunitech) 7-Mar-16 5:57am    
I am creating dynamic table using c#. DAta is comming from database and I am making html table using stringbuilder.

Ram Kumar(Webunitech) 7-Mar-16 5:59am    
Sir,

Now you check my code i have again update my question with code. I am calling two function for table header and table body. table header is made here multiheader
Richard Deeming 7-Mar-16 5:50am    
Outlook, or Outlook Express? They're two completely different programs, with completely different rendering engines.
Ram Kumar(Webunitech) 7-Mar-16 5:56am    
Our client using the Microsoft office 2007 not the outlook express

1 solution

Can you post an example of the HTML table that your program produces?
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900