对table的设置及打印分页

本文介绍了使用CSS来优化表格显示的方法,包括如何显示空单元格、设置细边框及控制打印分页等内容。通过具体代码示例展示了如何实现这些功能。

来自:http://www.w3school.com.cn/index.html

 

正确的引入 style:  <link rel="stylesheet" type="text/css" href="mystyle.css">

 

1.empty-cells: 属性设置是否显示表格中的空单元格(仅用于“分离边框”模式)。

<table cellpadding="0" cellspacing="0" style="width:25CM;BORDER-COLLAPSE: collapse; empty-cells: show" >

</table>

 

2.设置打印分页:

  说明:page-break-after:always   控制分页

  .pageSeparator{visibility:hidden; page-break-after:always; overflow:hidden; height:0px;}

  <div class="pageSeparator"></div>

 

3.设置细边框 table

 

   .trborder {
        border-collapse:collapse;borderer:none;
        height:0.9CM
    }
    .trborder td{
        border:solid #FF3366 1px;
        font-size: 14px;
    }

  <table cellpadding="0" cellspacing="0" style="width:25CM;BORDER-COLLAPSE: collapse; empty-cells: show" >

     <tr class="trborder">

          <td>细边框</td>

          <td>细边框</td>

     </tr>

     <tr class="trborder">

          <td>细边框</td>

          <td>细边框</td>

     </tr>

  </table>

 

 

4.<pre></pre>: 标签很适合显示计算机代码.

在进行table打印时根据行数分页可以从前端和后端不同角度来实现: ### 前端实现 在Vue + Antd的场景下,要实现table表格打印时根据行数分页且每页都有表头,可按以下步骤操作: 1. **HTML结构**:确保使用`thead`和`tbody`标签,以保证每页都能显示表头。示例代码如下: ```html <table> <thead> <tr> <th>列1</th> <th>列2</th> <!-- 更多列 --> </tr> </thead> <tbody> <!-- 表格数据行 --> </tbody> </table> ``` 2. **CSS样式**:为`table`添加特定的CSS属性,利用`page-break-inside`、`page-break-after`和`page-break-before`属性来控制分页。示例代码如下: ```css table { page-break-inside: auto; } tr { page-break-inside: avoid; page-break-after: auto; } thead { display: table-header-group; } ``` 3. **JS代码**:通过JavaScript计算行数并根据需要进行分页处理。示例代码如下: ```javascript // 假设这里获取到表格的tbody元素 const tbody = document.querySelector('tbody'); const rows = tbody.rows; const rowsPerPage = 10; // 每页显示的行数 for (let i = 0; i < rows.length; i++) { if (i % rowsPerPage === 0 && i > 0) { // 在指定行数处插入分页符 const pageBreak = document.createElement('div'); pageBreak.style.pageBreakAfter = 'always'; tbody.insertBefore(pageBreak, rows[i]); } } ``` ### 后端实现 后端可以借助一些工具和技术来实现根据行数分页打印。例如,使用Selenium在不打开浏览器的情况下渲染页面,并将需要打印的部分转为图片(base64码)。具体步骤如下: 1. 后端循环将单个数据传入打印模板页面。 2. 使用Selenium在不打开浏览器的情况下渲染页面。 3. 在页面中使用`html2canvas`将要打印的部分(如一个`table`)转为图片(base64码)。示例代码如下: ```python # 伪代码示例,使用Python和Selenium from selenium import webdriver from selenium.webdriver.chrome.options import Options import base64 from PIL import Image import io # 设置Chrome为无头模式 chrome_options = Options() chrome_options.add_argument('--headless') driver = webdriver.Chrome(options=chrome_options) # 打开打印模板页面 driver.get('your_print_template_url') # 假设这里有循环处理数据的逻辑 for data in your_data_list: # 将数据传入页面 # ... # 使用html2canvas将table转为图片 script = """ const table = document.querySelector('table'); html2canvas(table).then(canvas => { return canvas.toDataURL('image/png').split(',')[1]; }); """ base64_image = driver.execute_script(script) # 处理图片数据 img_data = base64.b64decode(base64_image) img = Image.open(io.BytesIO(img_data)) # 可以在这里进行分页处理和打印操作 # ... driver.quit() ```
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值