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

news2024/11/17 0:03:02

文章目录

    • ⭐前言
    • ⭐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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【雕爷学编程】Arduino动手做(93)--- 0.96寸OLED液晶屏模块8

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

C++ inline 内联函数

1.什么是内联函数 在函数声明或定义中&#xff0c;在函数的返回类型前加上C关键字inline&#xff0c;即将函数指定为内联函数。这样可以**解决一些频繁调用的简单函数大量消耗栈空间&#xff08;栈内存&#xff09;**的问题。关键字inline必须与函数定义放在一起才能使函数成为…

C++模拟实现queue

1.前言 queue 遵循的原则是先进先出&#xff0c;那到底是用list 还是 vector呢&#xff1f;其实都可以&#xff0c;但是严格来讲vector是不可以的&#xff0c;因为他头删的效率太低了。所以vs官方是不允许用vector的&#xff1a; 因为底层的pop用的是pop_front(), vector是没有…

【C刷题】矩阵相等判断与序列中删除指定的数字

目录 BC105-矩阵相等判断 方法1:两矩阵输入完毕后&#xff0c;进行比较 方法2:在接收过程中直接比较 BC98 - 序列中删除指定的数字 方法1:把要删除的元素改为0 方法2:打印不用删除的元素 方法3:定义两个下标 i 和 j(动图演示) 此篇文章是关于牛客网刷题的做题思路和代码…

Java版知识付费平台免费搭建 前后端分离实现知识付费平台

提供职业教育、企业培训、知识付费系统搭建服务。系统功能包含&#xff1a;录播课、直播课、题库、营销、公司组织架构、员工入职培训等。 提供私有化部署&#xff0c;免费售后&#xff0c;专业技术指导&#xff0c;支持PC、APP、H5、小程序多终端同步&#xff0c;支持二次开发…

大模型开发(十一):Chat Completions模型的Function calling功能详解

全文共5000余字&#xff0c;预计阅读时间约15~25分钟 | 满满干货(附代码案例)&#xff0c;建议收藏&#xff01; 本文目标&#xff1a;介绍Chat Completions模型的Function calling参数和使用方法&#xff0c;并完整的实现一个Chat模型的Function calling功能案例。 代码下载地…

字节跳动 EB 级 Iceberg 数据湖的机器学习应用与优化

深度学习的模型规模越来越庞大&#xff0c;其训练数据量级也成倍增长&#xff0c;这对海量训练数据的存储方案也提出了更高的要求&#xff1a;怎样更高性能地读取训练样本、不使数据读取成为模型训练的瓶颈&#xff0c;怎样更高效地支持特征工程、更便捷地增删和回填特征。本文…

Java IO,BIO、NIO、AIO

操作系统中的 I/O 以上是 Java 对操作系统的各种 IO 模型的封装&#xff0c;【文件的输入、输出】在文件处理时&#xff0c;其实依赖操作系统层面的 IO 操作实现的。【把磁盘的数据读到内存种】操作系统中的 IO 有 5 种&#xff1a; 阻塞、 非阻塞、【轮询】 异步、 IO复…

STM32的SDIO功能框图及SDIO结构体

目录 STM32的SDIO功能框图及SDIO结构体 STM32的SDIO功能框图 SDIO适配器 命令路径 CPSM状态机 数据路径 DPSM状态机 数据FIFO 适配器寄存器 SDIO相关结构体 SDIO初始化结构体 SDIO命令初始化结构体 SDIO数据初始化结构体 STM32的SDIO功能框图及SDIO结构体 STM32的…

3d软件动物生活习性仿真互动教学有哪些优势

软体动物是一类广泛存在于海洋和淡水环境中的生物&#xff0c;其独特的形态和生活习性给学生带来了新奇和有趣的学习主题&#xff0c;为了方便相关专业学科日常授课教学&#xff0c;web3d开发公司深圳华锐视点基于真实的软体动物&#xff0c;制作软体动物3D虚拟展示系统&#x…

发点实用的快捷键(mac

切换输入法&#xff1a;ctrlspace /ctrloptionspace&#xff08;更快捷 切换网页&#xff1a; shifttab 切换应用界面&#xff1a;alttab 关闭页面&#xff1a;altw 搜索&#xff1a;altspace 展示mac隐藏文件&#xff1a; Commangshift . (点) 以下是一些浏览器快捷键&am…

【初阶C语言】认识和使用函数

1. 函数是什么 2. 库函数 3. 自定义函数 4. 函数参数 5. 函数调用 6. 函数的嵌套调用和链式访问 7. 函数的声明和定义 8. 函数递归 一、什么是函数 在数学中有函数&#xff0c;在C语言中也有函数&#xff0c;我们直接先给出一个定义&#xff1a; 在基维百科中函数被定义为子程…

MyBatisPlus入门到精通-1

MyBatisPlus(简称MP) 这篇博客主要讲解用MyBatisPlus进行三层架构中Dao层的开发 以这个为目的来进行我们的学习 我们会先通过一个概述和入门案例进行快速上手 之后我们再通过对我们原先的案列的问题进行分析 来进一步了解MP操作数据库的知识 快速入门 MP简介 MP是国人开发的…

HEVC并行处理技术介绍

h265 相比 h264 的复杂度 复杂度体现 ○ h265 帧内预测模式增多&#xff0c;h265 包含角度预测、DC 预测、平面模式等 35 种预测模式&#xff0c;远超 h264 的 17 种模式&#xff0c;帧内模式选择的复杂度大大增加&#xff1b; ○ h265 的区域划分方式更加多样化&#xff0c;提…

聊聊STM32串口通讯的话题

STM32 微控制器系列提供了多个串口模块&#xff0c;用于实现串口通讯。其中&#xff0c;STM32HAL 库中的 UART 驱动模块提供了一套方便易用的函数接口&#xff0c;可以用来配置和操作串口。 串口通讯是一种常见的数据传输方式&#xff0c;可以实现微控制器与外部设备或其他微控…

Jetbrains 2023.2教程

IDEA 2023.2 激活演示 Pycharm 2023.2 激活演示 WebStorm 2023.2 激活演示 Clion 2023.2 激活演示 DataGrip 2023.2 PhpStorm 2023.1.4 激活演示&#xff08;2023.2尚未发布&#xff09; RubyMine 2023.2 激活演示 获取方式 仔细看每一个工具演示的图片 本文由 mdnice …

深度探索 Elasticsearch 8.X:function_score 参数解读与实战案例分析

在 Elasticsearch 中&#xff0c;function_score 可以让我们在查询的同时对搜索结果进行自定义评分。 function_score 提供了一系列的参数和函数让我们可以根据需求灵活地进行设置。 近期有同学反馈&#xff0c;function_score 的相关参数不好理解&#xff0c;本文将深入探讨 f…

2023软件设计师中级备考经验分享(文中有资料链接分享)

先摊结论吧&#xff0c;软考中级设计师备考只是备考半个月&#xff08;期间还摆烂了几天&#xff09;&#xff0c;然而成绩如下&#xff1a; 我自己都没想到会这么好的成绩。。。 上午题&#xff1a;推荐把软考通APP里的历年真题刷3-4遍&#xff0c;直接刷真题&#xff0c;然后…

TimescaleDB多节点功能概述

如果您有更大的pb级工作负载&#xff0c;则可能需要多个TimescaleDB实例。TimescaleDB多节点允许您运行和管理数据库集群&#xff0c;这可以为您提供更快的数据摄取&#xff0c;以及对大型工作负载响应更快、更高效的查询。 多节点架构 多节点TimescaleDB允许您将多个数据库连…

【学习笔记】视频检测方法调研

目录 1 引言2 方法2.1 视频目标跟踪2.1.1 生成式模型方法2.1.2 判别式模型方法2.1.2.1 基于相关滤波跟踪2.1.2.2 基于深度学习跟踪 2.2 视频异常检测2.2.1 基于重构方法2.2.2 基于预测方法2.2.3 基于分类方法2.2.4 基于回归方法 2.3 深度伪造人脸视频检测2.3.1 基于RNN时空融合…