原生html—摆脱ps、excel 在线绘制财务表格加水印(html绘制表格js加水印)

文章目录

    • ⭐前言
    • ⭐html标签
      • 💖table表格的属性
      • 💖实现财务报表
    • ⭐结束

logo-csdn

⭐前言

大家好,我是yma16,本文分享原生html——绘制表格报表加水印。
背景:解决没有ps的情况下使用前端html制作表格报表。
html介绍

HTML(Hypertext Markup Language,超文本标记语言)是用于创建网页的标准标记语言。它可以描述网页的结构和内容,包括文本、图片、多媒体等。HTML文件可以通过Web浏览器查看,并且可以在不同的操作系统和设备上实现网页的一致性效果。HTML是Web开发的基础,它和CSS和JavaScript一起,构成了Web开发的三大核心技术。 HTML标记语言由一系列的标签和属性组成,通过标签来组织页面的结构和内容,通过属性来定义标签的行为和效果。这些标记和属性可以用于创建链接、添加图像、格式化文本、制作表格等功能。

⭐html标签

HTML(Hypertext Markup Language)是用于创建网页的标准标记语言。HTML标签是用于描述网页内容的元素,由尖括号包括,例如 <html>。以下是常用的HTML标签及其作用:

  1. <html>:定义HTML文档。

  2. <head>:定义文档头部。

  3. <title>:定义文档标题。

  4. body:定义文档主体。

  5. <h1> - <h6>:定义标题。

  6. <p>:定义段落。

  7. <br>:定义换行符。

  8. <a>:定义超链接。

  9. <img>:定义图像。

  10. <table>:定义表格。

  11. <tr>:定义表格行。

  12. <th>:定义表格表头单元格。

  13. <td>:定义表格数据单元格。

  14. <ul>:定义无序列表。

  15. <ol>:定义有序列表。

  16. <li>:定义列表项。

  17. <div>:定义文档中的分隔区域。

  18. <span>:定义文本中的小区域。

  19. <form>:定义表单。

  20. <input>:定义输入字段。

  21. <select>:定义下拉列表。

  22. <option>:定义下拉列表中的选项。

  23. <button>:定义按钮。

  24. <textarea>:定义多行文本输入字段。

  25. <style>:定义文档样式。

  26. <script>:定义脚本。

  27. <meta>:定义文档元数据。

💖table表格的属性

HTML表格的样式属性包括:

  1. border:表格边框的宽度
  2. cellpadding:单元格内边距
  3. cellspacing:单元格间距
  4. width:表格的宽度
  5. height:表格的高度
  6. background:表格的背景颜色或图片
  7. text-align:表格内容的水平对齐方式(left、center、right)
  8. vertical-align:表格内容的垂直对齐方式(top、middle、bottom)
  9. border-collapse:表格边框的合并属性(collapse、separate)
  10. border-spacing:表格边框的间距
  11. caption-side:表格标题的位置(top、bottom)
  12. color:表格内容的字体颜色
  13. font-size:表格内容的字体大小
  14. font-weight:表格内容的字体粗细程度
  15. line-height:表格行高

💖实现财务报表

html实现财务报表布局
设计思路:三方标题、下方表格、全局水印
实现代码如下:

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        .bodyClass {
            background: rgb(252, 255, 255);
            /* background: rgb(50, 95, 214); */
        }

        .tableBackground {
            background: rgb(255, 255, 255);
        }

        .fontClass {
            background: rgb(50, 95, 214);
            color: #fff;
            font-size:38px;
        }
    </style>
</head>

<body class='bodyClass'>
    <div style="width:900px;margin: 50px auto;">
        <div style="text-align: center">
            <img src="./logo.gif"/>
        </div>
        <div style="text-align: center;margin: 10px;">
            <span
                style="font-size: 30px;font-weight: 700;color: #fff; font-family: Georgia, 'Times New Roman', Times, serif;">
                <span style="color: #e84118;">
                    <span class="fontClass"></span>
                    &nbsp;
                    <span class="fontClass"></span>
                </span>
                <span style="color: #487eb0;">
                    <span class="fontClass"></span>
                    &nbsp;
                    <span class="fontClass"></span>
                    <span class="fontClass"></span>&nbsp;
                    <span class="fontClass"></span>&nbsp;
                    <span class="fontClass"></span>&nbsp;
                    <span class="fontClass"></span>&nbsp;
                    <span class="fontClass"></span>&nbsp;
                    <span class="fontClass"></span>
                </span>
        </div>
        <table border="10" style="border:5px solid rgb(50, 95, 214);padding:0;font-size: 20px;" class="tableBackground"
            cellpadding="20" cellspacing='0'>
            <thead style="border:5px solid rgb(50, 95, 214);">
                <tr style="width: 180px;" align="center">
                    <th>
                        税种
                    </th>
                    <th>
                        小规模纳税人
                    </th>
                    <th>
                        一般纳税人
                    </th>
                </tr>
            </thead>
            <tbody style="border:5px solid rgb(50, 95, 214);">
                <tr>
                    <td style="width: 150px;font-weight: 700;" align="center">
                        增值税
                    </td>
                    <td align="left" style="vertical-align: text-top;width: 400px;">
                        <div style="font-weight: 700; text-align: center;">
                            【季报,税率1%,3%】
                        </div>
                        <p>①专票开多少交多少税</p>
                        <p>②专票+普票季度不超过30万,普票免增值税
                        </p>
                        <p>③专票+普票季度超过30万,专票和普票都要全额交税
                        </p>
                    </td>

                    <td align="center" style="vertical-align: text-top;width: 450px;">

                        <div style="font-weight: 700;text-align: center;">
                            【月报】
                        </div>
                        <div style="font-weight: 700; text-align: center;">
                            【税率6%,9%,13%】
                        </div>

                        <p>
                            应纳税额=
                            销项税额-进项税额
                        </p>
                    </td>
                </tr>
                <tr>
                    <td style="width: 100px;font-weight: 700;" align="center">
                        附加税
                    </td>
                    <td align="center">
                        <div style="font-weight: 700;text-align: center;">
                            【季报】
                        </div>

                        <p>计算公式=应缴纳增值税*对应税率</p>
                        <p>城建税7%,教育费附加3%,地方教育费附加2%</p>
                    </td>
                    <td align="center">
                        <div style="font-weight: 700; text-align: center;">
                            【月报】
                        </div>

                        <p>计算公式=应缴纳增值税*对应税率</p>
                        <p>城建税7%,教育费附加3%,地方教育费附加2%</p>
                        <p></p>
                        <p></p>
                        <p></p>
                    </td>
                </tr>
                <tr>
                    <td style="width: 100px;font-weight: 700;" align="center">
                        企业所得税
                    </td>
                    <td colspan="2" align="center">
                        <div style="font-weight: 700;">
                            【季报】
                        </div>
                    
                        <p>
                            <300万,税率5%,≥300万,税率25% </p>

                </tr>
                <tr>
                    <td style="width: 100px;font-weight: 700;" align="center">
                        个人所得税
                    </td>
                    <td colspan="2" align="center">
                        <div style="font-weight: 700;">
                            【月报】
                        </div>
                        <p>个人所得税税额=应纳税所得额*税率-速算扣除数</p>
                        <p>应纳税所得额=税前工资-五险一金-起征点5000</p>

                    </td>
                </tr>

                <tr>
                    <td style="width: 100px;font-weight: 700;" align="center">
                        印花税
                    </td>
                    <td colspan="2" align="center">

                        <div style="font-weight: 700;text-align: center;">
                            【小规模季报,一般纳税人月报】
                        </div>
                        <p>计算公式=含税收入*对应税率</p>
                        <p>(买卖合同税率0.03%,运输合同税率0.05%,
                            根据合同类型而定)</p>
                    </td>
                </tr>
            </tbody>


        </table>
    </div>
    <script>
        function watermark(settings) {
            //默认设置
            var defaultSettings = {
                watermark_txt: "text",
                watermark_x: 20, //水印起始位置x轴坐标
                watermark_y: 20, //水印起始位置Y轴坐标
                watermark_rows: 20, //水印行数
                watermark_cols: 100, //水印列数
                watermark_x_space: 100, //水印x轴间隔
                watermark_y_space: 50, //水印y轴间隔
                watermark_color: '#aaa', //水印字体颜色
                watermark_alpha: 0.4, //水印透明度
                watermark_fontsize: '32px', //水印字体大小
                watermark_font: '微软雅黑', //水印字体
                watermark_width: 210, //水印宽度
                watermark_height: 80, //水印长度
                watermark_angle: 20 //水印倾斜度数
            };
            if (arguments.length === 1 && typeof arguments[0] === "object") {
                var src = arguments[0] || {};
                for (key in src) {
                    if (src[key] && defaultSettings[key] && src[key] === defaultSettings[key]) continue;
                    else if (src[key]) defaultSettings[key] = src[key];
                }
            }
            var oTemp = document.createDocumentFragment();
            //获取页面最大宽度
            var page_width = Math.max(document.body.scrollWidth, document.body.clientWidth);
            var cutWidth = page_width * 0.0150;
            var page_width = page_width - cutWidth;
            //获取页面最大高度
            var page_height = Math.max(document.body.scrollHeight, document.body.clientHeight) + 450;
            page_height = Math.max(page_height, window.innerHeight - 30);
            //如果将水印列数设置为0,或水印列数设置过大,超过页面最大宽度,则重新计算水印列数和水印x轴间隔
            if (defaultSettings.watermark_cols == 0 || (parseInt(defaultSettings.watermark_x + defaultSettings
                .watermark_width * defaultSettings.watermark_cols + defaultSettings.watermark_x_space * (
                    defaultSettings.watermark_cols - 1)) > page_width)) {
                defaultSettings.watermark_cols = parseInt((page_width - defaultSettings.watermark_x + defaultSettings
                    .watermark_x_space) / (defaultSettings.watermark_width + defaultSettings.watermark_x_space));
                defaultSettings.watermark_x_space = parseInt((page_width - defaultSettings.watermark_x - defaultSettings
                    .watermark_width * defaultSettings.watermark_cols) / (defaultSettings.watermark_cols - 1));
            }
            //如果将水印行数设置为0,或水印行数设置过大,超过页面最大长度,则重新计算水印行数和水印y轴间隔
            if (defaultSettings.watermark_rows == 0 || (parseInt(defaultSettings.watermark_y + defaultSettings
                .watermark_height * defaultSettings.watermark_rows + defaultSettings.watermark_y_space * (
                    defaultSettings.watermark_rows - 1)) > page_height)) {
                defaultSettings.watermark_rows = parseInt((defaultSettings.watermark_y_space + page_height - defaultSettings
                    .watermark_y) / (defaultSettings.watermark_height + defaultSettings.watermark_y_space));
                defaultSettings.watermark_y_space = parseInt(((page_height - defaultSettings.watermark_y) - defaultSettings
                    .watermark_height * defaultSettings.watermark_rows) / (defaultSettings.watermark_rows - 1));
            }
            var x;
            var y;
            for (var i = 0; i < defaultSettings.watermark_rows; i++) {
                y = defaultSettings.watermark_y + (defaultSettings.watermark_y_space + defaultSettings.watermark_height) * i;
                for (var j = 0; j < defaultSettings.watermark_cols; j++) {
                    x = defaultSettings.watermark_x + (defaultSettings.watermark_width + defaultSettings.watermark_x_space) *
                        j;
                    var mask_div = document.createElement('div');
                    mask_div.id = 'mask_div' + i + j;
                    mask_div.className = 'mask_div';
                    mask_div.appendChild(document.createTextNode(defaultSettings.watermark_txt));
                    //设置水印div倾斜显示
                    mask_div.style.webkitTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
                    mask_div.style.MozTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
                    mask_div.style.msTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
                    mask_div.style.OTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
                    mask_div.style.transform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
                    mask_div.style.visibility = "";
                    mask_div.style.position = "absolute";
                    mask_div.style.left = x + 'px';
                    mask_div.style.top = y + 'px';
                    mask_div.style.overflow = "hidden";
                    mask_div.style.zIndex = "9999";
                    //让水印不遮挡页面的点击事件
                    mask_div.style.pointerEvents = 'none';
                    mask_div.style.opacity = defaultSettings.watermark_alpha;
                    mask_div.style.fontSize = defaultSettings.watermark_fontsize;
                    mask_div.style.fontFamily = defaultSettings.watermark_font;
                    mask_div.style.color = defaultSettings.watermark_color;
                    mask_div.style.textAlign = "center";
                    mask_div.style.width = defaultSettings.watermark_width + 'px';
                    mask_div.style.height = defaultSettings.watermark_height + 'px';
                    mask_div.style.display = "block";
                    oTemp.appendChild(mask_div);
                };
            };
            document.body.appendChild(oTemp);
        }

        function getNow() {
            var d = new Date();
            var year = d.getFullYear();
            var month = change(d.getMonth() + 1);
            var day = change(d.getDate());
            var hour = change(d.getHours());
            var minute = change(d.getMinutes());
            var second = change(d.getSeconds());

            function change(t) {
                if (t < 10) {
                    return "0" + t;
                } else {
                    return t;
                }
            }
            var time = year + '年' + month + '月' + day + '日 ' + hour + '时' + minute + '分' + second + '秒';
            return time;
        }
        window.onload = () => {
            watermark({
                "watermark_txt": "yma16"
            });
        }
    </script>
</body>

</html>

效果图:
html-table

inscode代码如下:

⭐结束

本文分享到这结束,如有错误或者不足之处欢迎指出!
sky-night

👍 点赞,是我创作的动力!
⭐️ 收藏,是我努力的方向!
✏️ 评论,是我进步的财富!
💖 感谢你的阅读!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/53086.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

国内外遥感数据处理软件对比

1.国内遥感数据处理软件概况 1.1北京航天宏图信息技术股份有限公司 1.1.1公司简介 航天宏图信息技术股份有限公司成立于2008年,是国内遥感和北斗导航卫星应用服务商,致力于卫星应用软件国产化、行业应用产业化、应用服务商业化,研发并掌握了具有完全自主知识产权的PIE(Pix…

TWILIGHT靶场详解

TWILIGHT靶场详解 下载地址&#xff1a;https://download.vulnhub.com/sunset/twilight.7z 这是一个比较简单的靶场&#xff0c;拿到IP后我们扫描发现开启了超级多的端口 其实这些端口一点用都没有&#xff0c;在我的方法中 但是也有不同的方法可以拿权限&#xff0c;就需要…

el-table 设置行背景颜色 鼠标移入高亮问题处理

一、 设置行背景颜色 1. 需求描述 后端返回表格数据&#xff0c;有特定行数需要用颜色标识。类似于以下需求&#xff1a; 2. 解决方式 方式区别:row-class-name“tableRowClassName”已返回类名的形式设置样式&#xff0c;代码整洁&#xff0c;但是会鼠标高亮&#xff0c…

【ChatGLM_01】ChatGLM2-6B本地安装与部署(大语言模型)

基于本地知识库的问答 1、简介&#xff08;1&#xff09;ChatGLM2-6B&#xff08;2&#xff09;LangChain&#xff08;3&#xff09;基于单一文档问答的实现原理&#xff08;4&#xff09;大规模语言模型系列技术&#xff1a;以GLM-130B为例&#xff08;5&#xff09;新建知识库…

DevOps-GitHub/GitLab

DevOps-GitHub/GitLab GitHub是一个开源代码托管平台。基于web的Git仓库&#xff0c;提供共有仓库和私有仓库&#xff08;私有仓库收费&#xff09;。 GitLab可以创建免费私有仓库。 GitHub 为了快速操作&#xff0c;这里对创建仓库以及注册不做说明。 首先再GitHub上创建一…

HarmonyOS学习路之方舟开发框架—学习ArkTS语言(状态管理 二)

Prop装饰器&#xff1a;父子单向同步 Prop装饰的变量可以和父组件建立单向的同步关系。Prop装饰的变量是可变的&#xff0c;但是变化不会同步回其父组件。 概述 Prop装饰的变量和父组件建立单向的同步关系&#xff1a; Prop变量允许在本地修改&#xff0c;但修改后的变化不会…

【C++】stack | queue | priority_queue的模拟实现

stack&queue的模拟实现 stack 与 queue 作为容器适配器&#xff0c;都默认选择了 deque 作为其底层容器。 #pragma once #include <deque> using namespace std;namespace zs {template<class T, class Container deque<T>>class stack{public:void p…

C#之泛型

目录 一、概述 二、C#中的泛型 继续栈的示例 三、泛型类 &#xff08;一&#xff09;声明泛型类 &#xff08;二&#xff09;创建构造类型 &#xff08;三&#xff09;创建变量和实例 &#xff08;四&#xff09;比较泛型和非泛型栈 四、类型参数的约束 &#xff08;一…

iOS--runtime

什么是Runtime runtime是由C和C、汇编实现的一套API&#xff0c;为OC语言加入了面向对象、运行时的功能运行时&#xff08;runtime&#xff09;将数据类型的确定由编译时推迟到了运行时平时编写的OC代码&#xff0c;在程序运行过程中&#xff0c;最终会转换成runtime的C语言代…

“华为杯”研究生数学建模竞赛2019年-【华为杯】D题:汽车行驶工况构建

目录 摘 要&#xff1a; 1.问题背景与问题重述 1.1 问题背景 1.2 问题重述 2.模型假设 3.符号说明 4.问题一的求解 4.1 问题分析 4.2 异常数据的处理 4.2.1 明显错误数据的处理 4.2.2 加减速异常数据的处理 4.3 缺失数据的处理 4.3.1 数据插补处理 4.3.2 视为长期停车处理 4.3.…

64核RISC-V服务器能打了吗?

作者&#xff1a;西风烈 最近看到“澎峰科技”的微信公众号&#xff0c;看到他们发布了第一款RISC-V服务器&#xff0c;芯片是算能的SG2042&#xff0c;带64个RISC-V核心&#xff08;阿里平头哥的C910v核&#xff09;&#xff0c;2.0GHz主频&#xff0c;最大支持128GB内存。这…

用CSS和HTML写一个水果库存静态页面

HTML代码&#xff1a; <!DOCTYPE html> <html> <head><link rel"stylesheet" type"text/css" href"styles.css"> </head> <body><header><h1>水果库存</h1></header><table>…

问道管理:股利支付率和股利发放率一样吗?

股利是指公司在股票发行后向股东分配的收益。股利付出率和股利发放率是两个在股利分配方面非常重要的概念。很多人会以为这两个概念是相同的&#xff0c;但实践上它们是有差异的。在本文中&#xff0c;咱们将从不同的角度来分析这两个概念的差异和联络。 一、股利付出率和股利发…

计算机毕设 深度学习人体跌倒检测 -yolo 机器视觉 opencv python

文章目录 0 前言1.前言2.实现效果3.相关技术原理3.1卷积神经网络3.1YOLOV5简介3.2 YOLOv5s 模型算法流程和原理4.数据集处理3.1 数据标注简介3.2 数据保存 5.模型训练 6 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题…

容灾独家技术揭秘:HyperBDR无主机数据同步技术

01、一对一单机热备-传统灾备方式 单机热备是一种备份解决方案&#xff0c;它使用两台服务器来确保高可用性&#xff0c;是市场上最为常见的灾备模式。 在单机热备中&#xff0c;一台主服务器和一台备用服务器保持同步&#xff0c;以确保在主服务器出现故障或宕机时可以立即切换…

【数据分析专栏之Python篇】四、pandas介绍

前言 在上一篇中我们安装和使用了Numpy。本期我们来学习使用 核心数据分析支持库 Pandas。 一、pandas概述 1.1 pandas 简介 Pandas 是 Python 的 核心数据分析支持库&#xff0c;提供了快速、灵活、明确的数据结构&#xff0c;旨在简单、直观地处理关系型、标记型数据。 …

微服务体系<2> ribbon

1. 什么是负载均衡 比如说像这样 一个请求打在了nginx上 基于nginx进行负载分流 这就是负载均衡但是负载均衡分 服务端负载均衡和客户端负载均衡 客户端负载均衡 我user 从注册中心拉取服务 拉取order列表&#xff0c;然后发起getOne()调用 这就是客户端负载均衡 特点就是我…

Servlet详解

1、Servlet 1、Java支持动态网页的技术&#xff1a;直接编写Java&#xff0c;利用CGI的方式与WebServer沟通 2、servlet在MVC中相当于控制层的作用。 Servlet的作用&#xff1a; CGI&#xff1a;通用网关接口&#xff1a;是从WEB容器中取得数据&#xff08;内置对象&#x…

基于 ThinkPHP 5.1(稳定版本) 开发wms 进销存系统源码

基于ThinkPHP 5.1&#xff08;LTS版本&#xff09;开发的WMS进销存系统源码 管理员账号密码&#xff1a;admin 一、项目简介 这个系统是一个基于ThinkPHP框架的WMS进销存系统。 二、实现功能 控制台 – 权限管理&#xff08;用户管理、角色管理、节点管理&#xff09; – 订…

Java课题笔记~Maven基础知识

一、什么是Maven&#xff1f; Maven是专门用于管理和构建Java项目的工具。 它的主要功能有&#xff1a; 提供了一套标准化的项目结构提供了一套标准化的构建流程&#xff08;编译&#xff0c;测试&#xff0c;打包&#xff0c;发布……&#xff09;提供了一套依赖管理机制 …