10、打印表格自动分页

一、以下代码可针对任意表格进行打印分页,源代码如下:

//拆分打印的数据表
//table:要拆分的表对象,如:$(".WorkFlowCSSTable")
//FirstPageSize:第一页的最大行数
//PageSize:中间页的最大行数
function SplitPrintDataTable(table, FirstPageSize, PageSize)
{
    var AllRows = $("tr", table);
    var TotalRow = AllRows.length;
    if (TotalRow > FirstPageSize)
    {
        //计算分页的数量
        var TotalPage = CountTotalPage(PageSize, TotalRow - FirstPageSize - 1);
        var IsEnd = false;
        var LastInsertAfterElement = table;
        for (var i = 0; i < TotalPage; i++)
        {
            var NewTable = null;
            if (!IsEnd)
            {
                //复制一个新的表头
                var html = table.prop('outerHTML');
                html = RegexClass.GetRegExpValue(/<table.*?>/ig, html) + "</table>";
                NewTable = $(html);
                LastInsertAfterElement.after(NewTable);
                Element.SetStyle(NewTable, "page-break-before", "always");
                LastInsertAfterElement = NewTable;

                //复制第一行
                Element.AppendByElement(NewTable, $(AllRows[0]).clone());

                //复制行
                for (var n = 0; n < PageSize; n++)
                {
                    var RowIndex = FirstPageSize + i * PageSize + n + 1;
                    if (RowIndex < TotalRow)
                    {
                        Element.AppendByElement(NewTable, AllRows[RowIndex]);
                    }
                    else
                    {
                        IsEnd = true;
                        break;
                    }
                }
            }
        }
    }
}

 

二、调用示例代码:

SplitPrintDataTable($("#MainWorkFlowCSSTable"), 2, 3);

 

三、效果如下: