sheetJS实现把excel导入数据库

这篇具有很好参考价值的文章主要介绍了sheetJS实现把excel导入数据库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、问题描述

        最近在做报表导入数据库的需求,报表文件为excel里面有多个sheet。

2、解决方法

  • 使用FileReader异步读取上传的文件。
  • 使用sheet.js进行excel表格内容的解析。
  • 使用bootstrap.js的tab组件对上传的表格进行一个页面预览的展示。

3、参考代码

        ImportReportForm.asp

<%Response.Charset="GB2312"%>
<script type="text/javascript" charset="utf-8" src="/root/js/xlsx.full.min.js"></script>
<script src="/root/js/jquery.min.js"></script>
<script src="/root/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="/root/css/bootstrap.min.css">

<script type="text/javascript">
    $(document).ready(function (){
        $("#BtnOK").click(function(){
            var fileInput=$("#uploadfile")
            parseFile(fileInput[0].files[0])
        });

        function parseFile(file){
            console.log(file)
            var rABS = FileReader.prototype.readAsArrayBuffer;
            var filereader=new FileReader()
            filereader.onload=function(){   //回调函数
                var data = this.result;
                console.log(data);
                var workbook=XLSX.read(data, {type: rABS ? 'binary' : 'array',dateNF: "yyyy-mm-dd",cellDates:true,cellStyles:true})
                $("#btn0").text(workbook.SheetNames[0])
				$("#btn1").text(workbook.SheetNames[1])
				$("#btn2").text(workbook.SheetNames[2])

                $("#tab0").html(XLSX.utils.sheet_to_html(workbook.Sheets[workbook.SheetNames[0]]))
				$("#tab1").html(XLSX.utils.sheet_to_html(workbook.Sheets[workbook.SheetNames[1]]))
				$("#tab2").html(XLSX.utils.sheet_to_html(workbook.Sheets[workbook.SheetNames[2]]))

                $("#sheet0").val(JSON.stringify(XLSX.utils.sheet_to_json(workbook.Sheets[workbook.SheetNames[0]],{header:1})));
				$("#sheet1").val(JSON.stringify(XLSX.utils.sheet_to_json(workbook.Sheets[workbook.SheetNames[1]],{header:1})));
				$("#sheet2").val(JSON.stringify(XLSX.utils.sheet_to_json(workbook.Sheets[workbook.SheetNames[2]],{header:1})));
            }
            if(rABS) {
                filereader.readAsBinaryString(file)
            }else{
                filereader.readAsArrayBuffer(file)
            }
        }

        $("#btnImport").click(function () {
            var i=0;
            for(i=0;i<3;i++){
                var sSheetName=$("#btn"+i).text();
                var json = $.parseJSON("{\"content\":" + $("#sheet"+i).val() + "}");
				var content = json["content"];
                console.log(content)
                importDetail(sSheetName,content)
            }
        });

        function importDetail(sSheetName,sContent){
            var sDetailContent;
            var j=1;
            //row表示excel中每个sheet内容的行数。因为我这里每个sheet的内容有6行,所以这里row设置为6,当然如果你不能确定每个sheet内容会有几行的话,直接设置一个很大的数,比如:60,600也是可以的
            var row=6; 
            while (j<=sContent.length) {
                sDetailContent="";
                for(var k=1;k<=row;k++){
                    if(j>sContent.length){
                        break;
                    }
                    if (sDetailContent==""){
						sDetailContent = sDetailContent + JSON.stringify(sContent[j-1]);
					}
					else{
						sDetailContent = sDetailContent + "," + JSON.stringify(sContent[j-1]);
					}
					j++;
                }
            
                sDetailContent="[" + sDetailContent + "]";
                $.ajax({
                    url:"ImportReport.asp",
                    type:"POST",
                    async: false,
                    data:{
                        SheetName: escape(sSheetName),
                        Content:escape(sDetailContent)
                    },
                    dataType:"text",
                    success:function(data){
            
                    },
                    error: function(data){
                    
                    }
                })
            }
        }

    });

</script>
<div>
    <form id="uploadForm" name="uploadForm"> 
        上传文件:<input type="file" name="uploadfile" id="uploadfile" value="uploadfile" />
    </form>
     <button id="BtnOK" name="BtnOK" class="btn ">确定</button>
     <br/><br/><br/>
     <button type="button" id="btnImport" class="btn" >导入</button>
</div>

<div>
    <ul id="myTab" class="nav nav-tabs">
	<li>
		<a href="#tab0" data-toggle="tab" id="btn0">
			
		</a>
	</li>
	<li>
		<a href="#tab1" data-toggle="tab" id="btn1">
			
		</a>
	</li>
	<li>
		<a href="#tab2" data-toggle="tab" id="btn2">
			
		</a>
	</li>
</ul>
</div>

<div id="myTabContent" class="tab-content">
	<div class="tab-pane fade in active" id="tab0">	
		
	</div>
	<div class="tab-pane fade " id="tab1">
		
	</div>
	<div class="tab-pane fade" id="tab2">
		
	</div>

</div>

<input type="hidden" id="sheet0" name="sheet0" value=""/>
<input type="hidden" id="sheet1" name="sheet1" value=""/>
<input type="hidden" id="sheet2" name="sheet2" value=""/>

ImportReport.asp

<%
Response.Charset="GB2312"
sSheetName = unescape(Request("SheetName"))
sContent = unescape(Request("Content"))
Response.write "sSheetName="&sSheetName&"<br/>"
Response.write "sContent="&sContent&"<br/>"
%>

4、运行结果

        先选择要上传的文件

sheetJS实现把excel导入数据库

 

         点击“确定”,FileReader获取上传的文件的内容,sheetjs把FileReader获取到的文件内容渲染到页面上。

sheetJS实现把excel导入数据库

 sheetJS实现把excel导入数据库

 

        点击“导入”按钮,使用$.parseJSON把excel每个sheet中的内容转为json数组。把这个转换好的数组传到后端进行处理就行了。

sheetJS实现把excel导入数据库

 

 5、总结

        因为只要得到了那个转换好的数组,后端再进行一个数组的解析和入库这个就很简单了,所以我就没写后端的处理代码。因为目前开发的需求许多地方要等用户回复确认,比如那个报表导入模板什么的。之前也研究了一下报表导入功能的实现并且现在正好手头空闲下来了,就忙里偷闲记录一下了。

        感觉原生js直接操作dom确实很麻烦的。

sheetJS实现把excel导入数据库

         上框架会方便不少,不过前提是你要熟悉dom。

6、参考资料

FileReader - Web API 接口参考 | MDN (mozilla.org)

 Reading Files | SheetJS Community Edition

js使用xlsx读取excel文件_茯神_fushen的博客-CSDN博客 文章来源地址https://www.toymoban.com/news/detail-487997.html

到了这里,关于sheetJS实现把excel导入数据库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据库】将excel数据导入mysql数据库

    环境:Windows10 mysql8以上 将你要导入的excel表另存为txt格式 打开txt格式文件,删除表头行并另存为并更改编码方式(由于与数据库的编码不同,会导致导入报错)   通过命令行登录数据库 win+r cmd进入  进入装mysql的目录位置(进入到bin目录)  输入命令进入数据库,注意由于

    2024年02月14日
    浏览(41)
  • C#将数据库数据导出到Excel & 将Excel文件导入到数据库

    1、读取Excel数据并写入到SQLServer数据库中; 2、将SQLServer数据库中的数据写入到Excel表中; 以下部分程序代码:  完整代码程序及配套测试数据库数据如下: https://download.csdn.net/download/XueJiaoKui/85331183 https://download.csdn.net/download/XueJiaoKui/85331183

    2024年02月16日
    浏览(31)
  • 数据库——多种方法导入Excel数据

    接下来就一直点击NEXT,直到完成 此时EXCEL的数据就被导入进SQL Server了: 这个技巧就是直接使用复制粘贴的方式: 注意:这种方法只适用于添加少量数据,如果是 几十万行 的数据,是无法这样导入的。 如图,我们在Excel当中直接复制数据: 右键PTYPES表,选择编辑前2002行:

    2024年02月04日
    浏览(65)
  • thinkadmin上传excel导入数据库

    2024年01月23日
    浏览(44)
  • Python导入Excel数据到MySQL数据库

    目录 一、所需库和模块 二、读取Excel文件并转换为pandas数据帧 三、建立与MySQL数据库的连接 四、将数据从pandas数据帧导入到MySQL数据库 五、示例代码 总结 在数据分析和处理过程中,将Excel文件导入到MySQL数据库是一种常见的需求。Excel是一种广泛使用的电子表格格式,可用于

    2024年01月17日
    浏览(39)
  • 将Excel表中数据导入MySQL数据库

     字段信息与表格对应建表:  完成。

    2024年02月07日
    浏览(39)
  • 微信小程序 -- 数据库数据excel文件批量导入

    一、excel文件批量导入数据到数据库 1.创建node.js函数upload,点击upload右键外部终端中安装类库 2.云函数代码 js代码

    2024年02月12日
    浏览(49)
  • 将excel数据导入到SQL server数据库

    将要导入的excel表格数据如下,第一行数据默认为数据库表中的字段,所以这个必须要有,否则无法映射导入。 选择你要导入数据的数据库,右键选择任务,再点击导入文件 点击下一步 选择Microsoft Excel 点击预览选择你要导入的表,选择对应版本,但是一般导入就会预设好,

    2024年02月06日
    浏览(40)
  • Python数据分析之读取Excel数据并导入数据库

    曾某年某一天某地 时间如静止的空气 你的不羁 给我惊喜 ——《谁愿放手》陈慧琳 入职新公司两个多月,发现这边的数据基础很差,很多数据甚至没有系统承载,大量的Excel表,大量的人工处理工作,现阶段被迫“面向Excel”编程。本文主要介绍使用Python读取Excel数据并导入

    2024年01月25日
    浏览(37)
  • sqlserver导出数据为excel再导入到另一个数据库

    要将SQL Server中的数据导出为Excel文件,然后再将该Excel文件导入到另一个数据库中,你可以按照以下步骤进行操作: 请注意,上述脚本中的 -U 和 -P 选项用于提供连接数据库的用户名和密码。确保将脚本中的其他参数替换为实际的值,并根据需要进行其他适当的调整。

    2024年01月25日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包