国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

帶復(fù)雜表頭合并單元格的HtmlTable轉(zhuǎn)換成DataTable并導(dǎo)出Excel

2019-11-17 01:27:51
字體:
供稿:網(wǎng)友

帶復(fù)雜表頭合并單元格的HtmlTable轉(zhuǎn)換成DataTable并導(dǎo)出Excel

步驟:

一、前臺JS取HtmlTable數(shù)據(jù),根據(jù)設(shè)定的分隔符把數(shù)據(jù)拼接起來

<!--導(dǎo)出Excel--><script type="text/javascript">    //導(dǎo)出Excel    function exportExcel() {        var data = "";        $("#divRptTable").find("table").find("tr").each(function () {            var tr = $(this);            tr.find("td").each(function () {                var td = $(this);                var rowspan = td.attr("rowspan") ? td.attr("rowspan") : 1;                var colspan = td.attr("colspan") ? td.attr("colspan") : 1;                data = data + td.text() + "#{valueSeparater}" + rowspan + "#{valueSeparater}" + colspan + "#{columnSeparater}";            });            data = data + "#{rowSeparater}";        });        $("#hidTableData").val(data);        var year = $("select[name='year']").find("option[value='" + $("select[name='year']").val() + "']").text();        var sem = $("select[name='sem']").find("option[value='" + $("select[name='sem']").val() + "']").text();        var scl = $("select[name='school']").find("option[value='" + $("select[name='school']").val() + "']").text();        var grade = $("select[name='grade']").find("option[value='" + $("select[name='grade']").val() + "']").text();        var exam = $("select[name='exam']").find("option[value='" + $("select[name='exam']").val() + "']").text();        $("#hidTitle").val(scl + " " + grade + " " + year + " " + sem + " " + exam);        $("#frm").submit();    }</script>
View Code

二、后臺先把前臺傳過來的字符串轉(zhuǎn)換成HtmlTable實體,然后再轉(zhuǎn)換成DataTable實體

using System;using System.Collections.Generic;using System.Text;using System.Data;using System.Web.UI.HtmlControls;// 2014年4月2日namespace QuaEdu.Controller.Core.Utils{    /// <summary>    /// HtmlTable工具類    /// 提供字符串轉(zhuǎn)換成HtmlTable,HtmlTable轉(zhuǎn)換成DataTable    /// </summary>    public class HtmlTableUtil    {        #region 變量        /// <summary>        /// 行分隔        /// </summary>        public static readonly string rowSeparater = "|||||";        /// <summary>        /// 列分隔        /// </summary>        public static readonly string columnSeparater = "@@@@@";        /// <summary>        /// 值分隔        /// </summary>        public static readonly string valueSeparater = "$$$$$";        /// <summary>        /// 空值標(biāo)識        /// </summary>        public static readonly string nullFlag = "HtmlTableUtil_NULL_FLAG";        #endregion        #region 字符串轉(zhuǎn)換成HtmlTable        /// <summary>        /// 字符串轉(zhuǎn)換成HtmlTable        /// </summary>        public static HtmlTable String2HtmlTable(string data)        {            HtmlTable htmlTable = new HtmlTable();            string[] rowArray = data.Split(new string[] { rowSeparater }, StringSplitOptions.RemoveEmptyEntries);            foreach (string row in rowArray)//遍歷行            {                HtmlTableRow htmlTableRow = new HtmlTableRow();                string[] colArray = row.Split(new string[] { columnSeparater }, StringSplitOptions.RemoveEmptyEntries);                foreach (string col in colArray)//遍歷列                {                    HtmlTableCell htmlTableCell = new HtmlTableCell();                    string[] valArr = col.Split(new string[] { valueSeparater }, StringSplitOptions.None);                    string val = valArr[0];                    int rowspan = int.Parse(valArr[1]);                    int colspan = int.Parse(valArr[2]);                    htmlTableCell.InnerText = val;                    htmlTableCell.RowSpan = rowspan;                    htmlTableCell.ColSpan = colspan;                    htmlTableRow.Cells.Add(htmlTableCell);                }                htmlTable.Rows.Add(htmlTableRow);            }            return htmlTable;        }        #endregion        #region HtmlTable轉(zhuǎn)換成DataTable        /// <summary>        /// HtmlTable轉(zhuǎn)換成DataTable        /// </summary>        public static DataTable HtmlTable2DataTable(HtmlTable htmlTable)        {            DataTable dataTable = new DataTable();            #region DataTable列數(shù)            int colCount = 0;            if (htmlTable.Rows.Count > 0)            {                foreach (HtmlTableCell htmlTableCell in htmlTable.Rows[0].Cells)                {                    colCount += htmlTableCell.ColSpan;                }            }            #endregion            #region DataTable行數(shù)            int rowCount = htmlTable.Rows.Count;            #endregion            #region 給DataTable添加列            for (int i = 0; i < colCount; i++)            {                dataTable.Columns.Add();            }            #endregion            #region 給DataTable添加行            for (int i = 0; i < rowCount; i++)//遍歷行            {                DataRow dataRow = dataTable.NewRow();                for (int j = 0; j < colCount; j++)//遍歷列                {                    dataRow[j] = null;                }                dataTable.Rows.Add(dataRow);            }            #endregion            #region 轉(zhuǎn)換            for (int i = 0; i < htmlTable.Rows.Count; i++)//遍歷HtmlTable行            {                HtmlTableRow htmlTableRow = htmlTable.Rows[i];                int delta = 0;//列增量                for (int j = 0; j < htmlTableRow.Cells.Count; j++)//遍歷HtmlTable列                {                    HtmlTableCell htmlTableCell = htmlTableRow.Cells[j];                    #region 計算delta                    for (int k = j + delta; k < colCount; k++)                    {                        string cellValue = dataTable.Rows[i][k].ToString();                        if (cellValue != null)                        {                            if (cellValue.IndexOf(nullFlag) == 0)                            {                                delta++;                                continue;                            }                        }                        break;                    }                    #endregion                    #region 填充DataTable                    dataTable.Rows[i][j + delta] = htmlTableCell.InnerText + valueSeparater + htmlTableCell.RowSpan + valueSeparater + htmlTableCell.ColSpan;                    if (htmlTableCell.RowSpan > 1 || htmlTableCell.ColSpan > 1)                    {                        for (int m = 0; m < htmlTableCell.RowSpan; m++)                        {                            for (int n = 0; n < htmlTableCell.ColSpan; n++)                            {                                if (!(m == 0 && n == 0))                                {                                    int ii = i + m;                                    int jj = j + delta + n;                                    dataTable.Rows[ii][jj] = nullFlag + valueSeparater + "1" + valueSeparater + "1";                                }                            }                        }                    }                    #endregion                }            }            #endregion            return dataTable;        }        #endregion    }}
View Code

三、將DataTable導(dǎo)出到Excel

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 比如县| 疏勒县| 孝义市| 海宁市| 湖州市| 九寨沟县| 德安县| 沈阳市| 蒙山县| 东乌珠穆沁旗| 钟祥市| 石河子市| 滨海县| 嘉祥县| 贞丰县| 资溪县| 兴仁县| 得荣县| 罗山县| 冀州市| 康乐县| 武鸣县| 遂昌县| 博兴县| 棋牌| 宝丰县| 南开区| 长垣县| 泰安市| 海林市| 永顺县| 嵩明县| 台江县| 古田县| 五大连池市| 田阳县| 若尔盖县| 柞水县| 社会| 连云港市| 盐池县|