HTML复杂表格绘制实现思路

HTML系列之表格、表单综合案例 要求:用HTML实现下面的效果。要求:用HTML实现下面的效果。 阅读详情

最近在做项目的时候遇到一个需求,要做一个表格,这个表格是Excel里面业务人员绘制好的,表格结构比较复杂,如果要自己一个一个地用table去编写需要花很长的时间,于是想了下要怎么去实现复杂表格的方案,话不多说。

比如如果要实现下面的表格(这个还算好的了,如果更复杂那应该怎么办):

于是,我想了下,能不能找到一些工具插件之类的去实现,找了一两个小时之后发现还是没有,然后以前刚毕业的那段时间在小公司要经常帮业务的同事看一些Excel或者word的问题,然后自己看了下Excel中有个选项可以直接导出html,然后自己导出了一下看了下。

发现打开之后看到里面的源代码里面也是一个table标签绘制的,只是多了些垃圾代码,不过不会影响结构使用,只是多了一些样式,我们可以根据自己业务情况覆盖掉样式,或者自己去删除垃圾代码样式就好了。这样就可以避免自己去一个一个的绘制复杂的表格,相对来说会省很多时间。

最终复制出来的代码如下:

<table border="0" cellpadding="0" cellspacing="0" width="817" style="border-collapse:
 collapse;table-layout:fixed;width:614pt">
 <colgroup><col width="145" style="mso-width-source:userset;mso-width-alt:4640;width:109pt">
 <col width="115" style="mso-width-source:userset;mso-width-alt:3680;width:86pt">
 <col width="153" style="mso-width-source:userset;mso-width-alt:4896;width:115pt">
 <col width="166" style="mso-width-source:userset;mso-width-alt:5312;width:125pt">
 <col width="72" style="mso-width-source:userset;mso-width-alt:2304;width:54pt">
 <col width="166" style="mso-width-source:userset;mso-width-alt:5312;width:125pt">
 </colgroup><tbody><tr height="39" style="mso-height-source:userset;height:29.25pt">
  <td colspan="6" height="39" class="xl65" width="817" style="height:29.25pt;
  width:614pt">表格标题</td>
 </tr>
 <tr height="19" style="height:14.25pt">
  <td height="19" class="xl66" style="height:14.25pt;border-top:none">单元格内容</td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td rowspan="2" class="xl68" style="border-top:none">单元格内容</td>
 </tr>
 <tr height="19" style="height:14.25pt">
  <td height="19" class="xl66" style="height:14.25pt;border-top:none">单元格内容</td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
 </tr>
 <tr height="19" style="height:14.25pt">
  <td height="19" class="xl66" style="height:14.25pt;border-top:none">单元格内容</td>
  <td rowspan="2" class="xl65" style="border-top:none">单元格内容</td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
 </tr>
 <tr height="19" style="height:14.25pt">
  <td rowspan="2" height="38" class="xl68" style="height:28.5pt;border-top:none">单元格内容</td>
  <td rowspan="2" class="xl65" style="border-top:none">单元格内容</td>
  <td rowspan="2" class="xl68" style="border-top:none">单元格内容</td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
 </tr>
 <tr height="19" style="height:14.25pt">
  <td height="19" class="xl67" style="height:14.25pt;border-top:none;border-left:
  none"> </td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
 </tr>
 <tr height="19" style="height:14.25pt">
  <td height="19" class="xl66" style="height:14.25pt;border-top:none">单元格内容</td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
 </tr>
 <tr height="19" style="height:14.25pt">
  <td height="19" class="xl66" style="height:14.25pt;border-top:none">单元格内容</td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td rowspan="2" class="xl65" style="border-top:none">单元格内容</td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td rowspan="9" class="xl65" style="border-top:none">单元格内容</td>
 </tr>
 <tr height="19" style="height:14.25pt">
  <td rowspan="5" height="95" class="xl68" style="height:71.25pt;border-top:none">单元格内容</td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
 </tr>
 <tr height="19" style="height:14.25pt">
  <td height="19" class="xl67" style="height:14.25pt;border-top:none;border-left:
  none"> </td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td rowspan="2" class="xl68" style="border-top:none">单元格内容</td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
 </tr>
 <tr height="19" style="height:14.25pt">
  <td height="19" class="xl67" style="height:14.25pt;border-top:none;border-left:
  none"> </td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
 </tr>
 <tr height="19" style="height:14.25pt">
  <td height="19" class="xl67" style="height:14.25pt;border-top:none;border-left:
  none"> </td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
 </tr>
 <tr height="19" style="height:14.25pt">
  <td height="19" class="xl67" style="height:14.25pt;border-top:none;border-left:
  none"> </td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td rowspan="2" class="xl68" style="border-top:none">单元格内容</td>
 </tr>
 <tr height="19" style="height:14.25pt">
  <td height="19" class="xl66" style="height:14.25pt;border-top:none">单元格内容</td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td colspan="2" class="xl69" style="border-left:none">单元格内容</td>
 </tr>
 <tr height="19" style="height:14.25pt">
  <td height="19" class="xl66" style="height:14.25pt;border-top:none">单元格内容</td>
  <td rowspan="2" class="xl65" style="border-top:none">单元格内容</td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
 </tr>
 <tr height="19" style="height:14.25pt">
  <td height="19" class="xl66" style="height:14.25pt;border-top:none">单元格内容</td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td class="xl66" style="border-top:none;border-left:none">单元格内容</td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
 </tr>
 <tr height="19" style="height:14.25pt">
  <td height="19" class="xl66" style="height:14.25pt;border-top:none">单元格内容</td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td class="xl66" style="border-top:none;border-left:none">单元格内容</td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
  <td class="xl67" style="border-top:none;border-left:none"> </td>
 </tr>
 <!--[if supportMisalignedColumns]-->
 <tr height="0" style="display:none">
  <td width="145" style="width:109pt"></td>
  <td width="115" style="width:86pt"></td>
  <td width="153" style="width:115pt"></td>
  <td width="166" style="width:125pt"></td>
  <td width="72" style="width:54pt"></td>
  <td width="166" style="width:125pt"></td>
 </tr>
 <!--[endif]-->
</tbody></table>

然后你就可以直接使用html的表格结构了,就不用纠结去写复杂的表结构。

Vue实战:巧用html2pdf解决复杂表格PDF下载与样式分页难题 本文详细介绍了在Vue项目中如何使用html2pdf插件解决复杂表格导出PDF时的样式和分页问题。通过分析常见问题根源,提供从安装配置到高级技巧的完整解决方案,包括表格边框处理、内容截断修复、复杂表头处理等实战经验,帮助开发者高效实现企业级PDF导出功能。 阅读详情

相关推荐

纯前端导出word手写复杂表格,并还原成word。百分百还原表格。一文搞定前端表格导出为word

本次的需求是手写一个养老院老人生活能力评定表,并且要能够录入信息,最终导出表格因为有七页所以代码很多,可以不用看表格模板的详细代码。先贴上最终效果图实现了样式的百分百还原导出web端的表格主要实现思路就是用原生table画表格,嵌入element ui和vue的条件渲染来实现编辑。这里要记住两个属性:rowspan:代表行跨度也就是一个单元格能够合并几行colspan:代表列跨度,也就是一个单元格能够跨几列。

weixin_45636198的博客 3183

使用原生html<table>构造复杂table表

【代码】使用原生html<table>构造复杂table表。

qq_42192641的博客 1989

HTML表格分页与排序功能实现详解

在现代前端项目中,推荐使用npm或yarn来安装lodash# 或者安装完成后,可以在项目中按需引入所需函数,例如:说明lodash支持 Tree Shaking,按需导入可有效减小打包体积。_.orderBy的基本语法如下:collection:要排序的数组。iteratees:排序字段或字段数组,可以是字符串、函数或数组。orders:排序方式,可以是'asc'(升序)或'desc'(降序),也可以是布尔值(true表示升序)。

weixin_36288992的博客 647

前端技巧——复杂表格在html当中的实现

table {th,td {

m0_72678953的博客 1809

table-editor:表格编辑器,用于在HTML中创建复杂的表格

表格编辑器 当Markdown不能剪切时,用于复杂表的WYSIWYG HTML编辑器。 屏幕截图 现场例子 命名法 复杂表:当表在任何地方都需要标题单元格,合并的单元格和各种类时 技术文档 这是一个纯静态JavaScript应用程序,可以在任何现代浏览器中运行。 至少在首次加载页面时,它需要Internet连接才能访问TinyMCE的CDN。 依存关系 通过CDN使用的编辑器JS 执照

html table实现复杂表头的示例代码

使用html做复杂的表格。复杂表格一般是用到td的两个属性:rowspan 、colspan属性值。 在html中<td> 标签定义 HTML 表格中的标准单元格。   (1)rowspan 属性规定单元格可横跨的行数;   (2)colspan 属性规定单元格可横跨的列数。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>多表头表格</title> </head> <body> <table id="tab" cellpadding="1"

HOW - Canvas 入门系列之表格绘制工具(二)

通过这个系列,我们将学习 canvas 的基本内容,并且通过两个案例实现,即一个表格绘制工具(其支持表格数据渲染),一个画图工具(其支持常见图形绘制,以及撤销和恢复等功能),来掌握基于 canvas 的复杂交互实现。今天我们首先实现一个表格绘制工具。

weixin_58540586的博客 4516

C8T6和ZET6选型更换过程中出现.\Obj\Project.sct(7): error: L6235E: More than one section matches selector - cann

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、问题原因二、解决方法三、现象总结 前言 又一件离谱的事情发生了,我之前转换过程中没有发生的错误,今天拿出来程序重新编译了一下,结果他奶奶滴一个新的错误出现了,而且我还完全不知道是什么原因导致的,先上图: 一、问题原因 之前我已经尝试过更换芯片选型,但是没有出现此类问题,今天更改的时候发现了,我还以为是个偶然错误,结果换来换去,还是有这个问题,那我之前说c8t6的程序更改成zet6上跑只需改芯片选型和宏定义岂不是啪啪打.

wx18045623090的博客 1488

RAG 高级应用:基于 Nougat、HTML 转换与 GPT-4o 解析复杂 PDF 内嵌表格

RAG(检索增强生成)应用最具挑战性的方面之一是如何处理复杂文档的内容,例如 PDF 文档中的图像和表格,因为这些内容不像传统文本那样容易解析和检索。前面我们有介绍过如何使用LlamaIndex提供的LlamaParse技术解析复杂PDF文档(文档中包含图片和表格)LlamaParse 技术整体来看,对于PDF文档常规文本的提取还是比较准确的,但对于表格内容的处理,检索准确率依然还存在比较大的空间。

FrenzyTechAI的博客 3535

Halcon实战:如何快速找到图像中的多个圆并计算圆心距离(附完整代码)

本文详细介绍了Halcon在工业视觉检测中快速定位图像中的多个圆并计算圆心间距离的实战方法。通过两种核心算法(阈值分割和动态阈值)的对比分析,结合完整代码示例和参数调优技巧,帮助开发者高效解决多圆检测问题,提升工业检测精度与效率。

weixin_33701251的博客 316

深入解析AutoConfigURL劫持:从注册表权限到一键修复

本文深入解析了AutoConfigURL劫持的原理,揭示其通过篡改注册表权限锁定浏览器设置的机制。文章提供了从手动修复注册表权限到使用一键修复工具的详细解决方案,并指导用户进行DNS检查与病毒查杀,以彻底根除此类顽固劫持问题。

weixin_29229989的博客 766

在poi-tl-ext项目中处理复杂表格与HTML内容渲染的技术方案

在poi-tl-ext项目中处理复杂表格与HTML内容渲染的技术方案 在实际业务开发中,我们经常需要生成包含复杂格式的Word文档,特别是那些需要横纵向合并单元格的表格。poi-tl-ext作为poi-tl的扩展库,提供了强大的HTML渲染能力,但当遇到复杂表格结构时,传统的LoopRowTableRenderPolicy可能无法满足需求。 复杂表格的挑战 当表格结构较为复杂,包含多层次的单元格合...

gitblog_07996的博客 606

【IC设计实战】去耦电容decap在电源完整性中的关键作用与选型策略

本文深入探讨了去耦电容(decap)在IC设计电源完整性中的核心作用。文章分析了decap如何通过提供本地电荷缓冲来抑制电源噪声与电压波动,并详细阐述了其选型与布局策略,包括MIM、MOM、MOS电容的特性对比,以及如何权衡峰值抑制与建立速度的矛盾,为设计稳定可靠的芯片电源系统提供实践指导。

weixin_29233857的博客 247

Markdown表格、单元格合并、快速编辑表格

markdown中制作表格、合并单元格、快速制作结构复杂的表格

reading-conference-writing 1万+

ThingsBoard教程(一):ThingBoard介绍及安装

ThingsBoard介绍 最近看了很多开源的物联网的项目,其中有一个让我印象很深,那就是Thingsboard 下面我就给大家介绍一下这个项目,并指导大家如何在本地安装一个Thingsboard来体验它。 首先引用官网的项目介绍就是 一个开源的用于数据收集,处理,可视化和设备管理的开源物联网平台。 它通过行业标准的物联网协议(MQTT,CoAP和HTTP)实现设备连接,并支持云和本地部署。ThingsBoard结合了可伸缩性,容错性和性能,因此您永远不会丢失数据。 用它开源收集链接设备,收集设备的数据,

知无涯 2万+

华为OD机试E卷 -猜字谜(Java & Python& JS & C++ & C )

小王设计了一个简单的猜字谜游戏,游戏的谜面是一个错误的单词,比如nesw,玩家需要猜出谜底库中正确的单词。猜中的要求如下:请你写一个程序帮忙在谜底库中找到正确的谜底。谜面是多个单词,都需要找到对应的谜底,如果找不到的话,返回”not found”

算法大师! 3487

HTML之表格篇——表格的嵌套

表格的嵌套一方面是为使页面(贴子)的外观更为漂亮,利用表格嵌套来编辑出复杂而精美的效果,另一方面是出于布局需要,用一些嵌套方式的表格来做精确的编排,或者二者兼而有之。熟练地掌握表格的嵌套技巧并不是很困难的,只要你思路清晰,对表格的整体嵌套构架做到心中有数,在实际编辑时就不会出乱,发布出来的作品也就不会只是一堆代码。 下面将从最简单的表格嵌套开始演示和讲解,不会太难的。 两张表格的嵌套:

xyjikl 1万+

【智能流体力学】使用ANSYS Fluent + SpaceClaim + SCDM制作流体力学前处理的几何模型

生成来源.scdoc文件来自前处理工具生成的模型数据,或在 FLUENT 中创建和保存的模型。生成方式: 通过前处理工具导出网格数据,或在 FLUENT 中设置并保存模型。作用: 用于储存模型的结构信息和设置,确保在 FLUENT 中的正确导入和使用。.x_t文件是 Parasolid 文件格式的扩展名,用于存储三维模型数据。在 ANSYS Fluent 中,这种格式通常用于在前处理工具之间交换几何数据。要创建.x_t。

源代码杀手的博客 3265

mPDF 表格处理:复杂表格布局的 15 个技巧

mPDF 是一个强大的 PHP 库,能够将 UTF-8 编码的 HTML 转换为专业的 PDF 文档。在处理复杂表格布局时,mPDF 提供了丰富的功能来满足各种需求。本文为你分享 15 个实用技巧,帮助你轻松应对各种复杂的表格布局挑战。 ## 📊 表格基础配置技巧 ### 1. 智能表格宽度自适应 mPDF 支持多种表格宽度设置方式,通过 `src/Tag/Table.php` 中的宽度处

gitblog_00097的博客 1110

真正的工业级环形缓冲区(Circular Buffer)完整实现细节

永远不要永远不要ToArray()或AddRange()永远返回或两段Span永远用_head_tail% Capacity实现环形照着上面这套代码改,你的系统将彻底告别内存爆炸,从“实验室玩具”变成“产线战神”!需要我给你一个支持两段绘制的完整实现吗?

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 127

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

html video 设置进度条不可拖动_轻松实现HTML表格拖拽和排序,实现复杂交互式数据表变得更简单...

介绍我们都知道普通的HTML自带的功能相对有限,很多复杂的交互式场景,如果手动去写功能的话会非常的复杂,而且可扩展性差,就拿HTML表格来说,对于初学者或者对于复杂的拖拽式交互编程不熟悉的话会很浪费时间,因此今天就介绍一个第三方的插件——Table-draagger,来轻松实现类似的功能。Table-draagger是用于构建可重排序的拖放表的极简主义纯Javascript库!Githubhttp...

weixin_39807541的博客 355

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

如何写成高性能的代码(一):巧用Canvas绘制电子表格

Canvas是HTML5的标签,是HTML5的一种新特性,又称画板。顾名思义,我们可以将其理解为一块画布,支持在上面绘制矩形、圆形等图形或logo等。需要注意的是,与其他标签不同,Canvas只是一块空画布,其本身是不能绘制图形的,必须通过JavaScript 脚本进行绘制。大多数现代浏览器都支持Canvas技术,例如Chrome、Firefox以及最新的IE9以上版本。

葡萄城技术团队博客 5294

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Web前端,HTML表格相关标签和属性,在网页中表格结构的显示

Web前端,HTML表格相关标签和属性,在网页中表格结构的显示

星辰迷上大海的博客 3610

HTML可拖动行的表格

HTML可拖动行的表格实现思路实现代码 实现思路 行拖动的实现思路非常简单,选中一行,往上拖就与上面的行交换位置,往下拖就与下面的行交换位置。问题是如何得到交换行。我见过一个非常详细的教程,它会把表格里的每一行的高度与Y坐标计算出来,换言之,都时是比较e.pageX是否在[rowTop,rowBottom]区间之内。但这也带来第二个问题,有多少行就有多个这样的区间。于是解法就变成取事件源对象,然后再往上取其父对象,如果其父对象是TR元素,就取其[rowTop,rowBottom]区间…思路非常直接,同时也客

https://github.com/blingbling-110 1602

利用html设置嵌套式表格,表格嵌套 HTML

嵌套表格就是在一个大的表格中,再嵌进去一个或几个小的表格,即插入到表格单元格中的表格。如果用一个表格布局页面,并希望用另一个表格组织信息,则可以插入一个嵌套表格。表格的嵌套一方面是为使页面的外观更为漂亮,利用表格嵌套来编辑出复杂而精美的效果,另一方面是出于布局需要,用一些嵌套方式的表格来做精确的编排,或者二者兼而有之。熟练地掌握表格的嵌套技巧并不是很困难的,只要思路清晰,对表格的整体嵌套构架做到心...

weixin_39657825的博客 5125

精益求精,支持处理嵌套表格的Word表格转HTML表格

本文改进了Word表格转HTML表格,使其支持处理嵌套表格。

yivifu的专栏 544
上一篇: vue封装可实现选中、新增、修改、删除功能的树组件
下一篇: js读取本地Excel内容
#麻辣小龙虾#
博客等级 码龄11年 1万+粉丝 235原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值