在线excel:LuckySheet 入门

Luckysheet ,一款纯前端类似excel的在线表格,功能强大、配置简单、完全开源。 

文档地址:https://dream-num.github.io/LuckysheetDocs/zh/

做一个页面编辑然后保存进数据库。另一个页面把前一个页面的内容展示出来。第一个页面,

<!DOCTYPE html>
<html>

<head lang='zh'>
    <meta charset='utf-8'>
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="renderer" content="webkit" />
    <meta name="viewport" content="width=device-width, initial-scale=1,user-scalable=0" />
    <title>Luckysheet</title>

    <link rel='stylesheet' href='./plugins/css/pluginsCss.css' />
    <link rel='stylesheet' href='./plugins/plugins.css' />
    <link rel='stylesheet' href='./css/luckysheet.css' />
    <link rel='stylesheet' href='./assets/iconfont/iconfont.css' />
    <script src="./plugins/js/plugin.js"></script>

    <!-- rollup luckysheet.js -->
    <script src="./luckysheet.umd.js"></script>

</head>

<body>
    <!-- Non-full screen test -->
    <!-- <div style="position: relative;width: 100%;height: 100%;">

        <div id="luckysheet" style="margin:0px;padding:0px;position:absolute;width:80%;height:500px;left: 20%;top: 200px;bottom:0;right: 0;"></div>
    </div> -->
    <button onclick="myFunction()">保存</button>
    <div id="luckysheet" style="margin:100px;padding:0px;position:absolute;width:100%;height:100%;left: 0px;top: 0px;">
    </div>
    <!-- demo feature, non-production use -->


    <script>
        function myFunction() {
            var data2 = luckysheet.getAllSheets();
            var cnt = JSON.stringify(data2);
            $.post("xls.aspx", {
                cnt: cnt            });
        }

        $(function () {

            // According to the browser language
            //var options = {
            //    container: 'luckysheet' //luckysheet为容器id
            //}

            //luckysheet.create(options);

            var options = {
                container: 'luckysheet', //luckysheet为容器id
                title: "在线excel", // 设定表格名称
                lang: 'zh', // 设定表格语言
               
            }

            luckysheet.create(options);




        })
    </script>
    <style>
        /* 自定义loading演示样式 */
        @keyframes loading-rotate {
            0% {
                transform: rotate(0deg);
            }

            100% {
                transform: rotate(360deg);
            }
        }

        @keyframes loading-dash {
            0% {
                stroke-dasharray: 1, 200;
                stroke-dashoffset: 0;
            }

            50% {
                stroke-dasharray: 90, 150;
                stroke-dashoffset: -40px;
            }

            100% {
                stroke-dasharray: 90, 150;
                stroke-dashoffset: -120px;
            }
        }

        .loadingAnimation {
            width: 3em;
            height: 3em;
            animation: loading-rotate 2s linear infinite;
        }

            .loadingAnimation circle {
                animation: loading-dash 1.5s ease-in-out infinite;
                stroke-dasharray: 90, 150;
                stroke-dashoffset: 0;
                stroke-width: 2;
                stroke: currentColor;
                stroke-linecap: round;
            }
    </style>
</body>

</html>

 

function myFunction() {
            var data2 = luckysheet.getAllSheets();
            var cnt = JSON.stringify(data2);
            $.post("xls.aspx", {
                cnt: cnt            });
        }

这段,是把整个excel的 数据全部以json 的方式post一个aspx页面,在这个aspx页面,保存进数据库。

 

 

第二个页面:

<!DOCTYPE html>
<html>

<head lang='zh'>
    <meta charset='utf-8'>
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="renderer" content="webkit" />
    <meta name="viewport" content="width=device-width, initial-scale=1,user-scalable=0" />
    <title>Luckysheet</title>

    <link rel='stylesheet' href='./plugins/css/pluginsCss.css' />
    <link rel='stylesheet' href='./plugins/plugins.css' />
    <link rel='stylesheet' href='./css/luckysheet.css' />
    <link rel='stylesheet' href='./assets/iconfont/iconfont.css' />
    <script src="./plugins/js/plugin.js"></script>

    <!-- rollup luckysheet.js -->
    <script src="./luckysheet.umd.js"></script>

</head>

<body>
    <!-- Non-full screen test -->
    <!-- <div style="position: relative;width: 100%;height: 100%;">

        <div id="luckysheet" style="margin:0px;padding:0px;position:absolute;width:80%;height:500px;left: 20%;top: 200px;bottom:0;right: 0;"></div>
    </div> -->
    <button onclick="myFunction()">点我</button>
    <div id="luckysheet" style="margin:100px;padding:0px;position:absolute;width:100%;height:100%;left: 0px;top: 0px;">
    </div>
    <!-- demo feature, non-production use -->


    <script>
        function myFunction() {
            var data2 = luckysheet.getAllSheets();
            var cnt = JSON.stringify(data2);
            $.post("xls.aspx", {
                cnt: cnt            });
        }

        $(function () {

            // According to the browser language
            //var options = {
            //    container: 'luckysheet' //luckysheet为容器id
            //    load
            //}
   //         https://localhost:7048/api/1
            //luckysheet.create(options);

            var options = {
                container: 'luckysheet', //luckysheet为容器id
                title: "在线excel", // 设定表格名称
                lang: 'zh', // 设定表格语言
                gridKey: "excel001",
            /*    data: eval(returnValue.result),*/
                loadUrl: "http://***.***.***.***:9091/api/1"
            }
            
            luckysheet.create(options);



        })
    </script>
    <style>
        /* 自定义loading演示样式 */
        @keyframes loading-rotate {
            0% {
                transform: rotate(0deg);
            }

            100% {
                transform: rotate(360deg);
            }
        }

        @keyframes loading-dash {
            0% {
                stroke-dasharray: 1, 200;
                stroke-dashoffset: 0;
            }

            50% {
                stroke-dasharray: 90, 150;
                stroke-dashoffset: -40px;
            }

            100% {
                stroke-dasharray: 90, 150;
                stroke-dashoffset: -120px;
            }
        }

        .loadingAnimation {
            width: 3em;
            height: 3em;
            animation: loading-rotate 2s linear infinite;
        }

            .loadingAnimation circle {
                animation: loading-dash 1.5s ease-in-out infinite;
                stroke-dasharray: 90, 150;
                stroke-dashoffset: 0;
                stroke-width: 2;
                stroke: currentColor;
                stroke-linecap: round;
            }
    </style>
</body>

</html>

黄色这段js,loadUrl: "http://***.***.***.***:9091/api/1"   loadUrl 是post方法,获取api 的 json数据,这个json就是上个页面存进数据库的。

using MyWebApp.dapper;
using System.Data;
using System.Security.Claims;

namespace MyWebApp
{
    public class MyEndpoint1 : EndpointWithoutRequest
    {
        public override void Configure()
        {
            Post("/api/1");
            AllowAnonymous();
             Options(x => x.RequireCors(p => p.AllowAnyOrigin()));


           
        }

        public override Task HandleAsync(CancellationToken t)
        {
            string sql = AppConfig.sqlserver;

            string sqlstr = "  select top 1 * from  LuckySheetJson order by create_time desc";

            DapperUtility dapper = new DapperUtility();

           List<m_LuckySheetJson> list=dapper.QuerySQL<m_LuckySheetJson>(sqlstr);
            m_LuckySheetJson item = list[0];
            string LuckySheetJson = item.LuckySheetJson;

            return SendAsync(LuckySheetJson);
        }
    }
}

我这里尝试用了一下FastEndpoints,感觉还不错。FastEndpoints 是一个基于 .NET 6 开发的开源 webapi 框架,它可以很好地替代 .NET Minimal APIs 和 MVC ,专门为开发效率而生,带来了全新的开发模式和编码体验。

 

 

posted @ 2023-05-07 17:12  博客园非著名喷子  阅读(900)  评论(0编辑  收藏  举报