【一种使用浏览器读取本地excel、josn等数据文件的方法】Python+JavaScript+HTML实现

这篇具有很好参考价值的文章主要介绍了【一种使用浏览器读取本地excel、josn等数据文件的方法】Python+JavaScript+HTML实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、背景

一般来说,为了网络访问安全,浏览器是不能直接加载本地文件的,IE内核的浏览器提供了AX控件实现本地文件的读取,Chrome 86 版本后也提供了相应的API,但都存在使用限制和兼容性问题。有时开发者只是想利用浏览器编制一些简单的脚本完成一些任务,不想学习C、C++、Python生成exe这么大动作,例如使用JavaScript脚本读取本地一个excel文件进行统计分析。但由于浏览器无法使用本地文件这个限制,只好放弃。本文讨论研究一种非IE内核浏览器读取本地excel数据的方法,绕开这个限制。

为了实现这个目标这里使用到了Python、JavaScript、json、HTML等知识,同时博主也是通过学习其他文章找了这种解决方案。

相关文章详见:
https://blog.csdn.net/qq_41581588/article/details/129681572
https://blog.csdn.net/qq_30337695/article/details/51788007

二、解决思路

问题的解决思路如下:

  1. 使用python读取本地文件并转换为json格式的.js文件;
  2. 在HTML文件头使用<script>标签引入转换后的.js数据文件;
  3. 使用python打开浏览器加载对应的HTML文件。

三、具体实现

(一)使用python读取本地文件并转换为json格式的.js文件

这里参考了网上的python读取本地文件代码,已读取excel为例子,使用了json库、xlrd2库编写了读取单个excel文件转换为json数据格式的.js文件。其中参数path待读取的excel文件路径参数name转换后保存的.js文件名。主要代码如下:

import os
import json
import xlrd2
import excel2json
import webbrowser

fileTypeArray = [".xlsx", ".xls"]
def readExecl(path, name):
    print(path)
    workbook = xlrd2.open_workbook(path)
    sheet2_name = workbook.sheet_names()[0]
    sheet = workbook.sheet_by_name(sheet2_name)  
    # sheet索引从0开始
    # sheet的名称,行数,列数
    # print sheet.name,sheet.nrows,sheet.ncols

    adict = {}

    for i in range(1, sheet.nrows):
        data = {}
        for j in range(0, sheet.ncols):
            value = TransformationType(sheet.cell_value(i, j))
            if isinstance(value, str):
                if isJsonString(value):
                    data[TransformationType(sheet.cell_value(0, j))] = eval(value)
                else:
                    data[TransformationType(sheet.cell_value(0, j))] = value
            else:
                data[TransformationType(sheet.cell_value(0, j))] = value
            adict[TransformationType(sheet.cell_value(i, 0))] = data

    data = json.dumps(adict, indent=1, ensure_ascii=False)
    excel_data = "data = " + data
    _json_save_path = os.getcwd() + "/" + name + '.js'
    f = open(_json_save_path, 'w', encoding='utf-8')
    f.write(excel_data)
    f.close()
    print("already create json:" + path)
    return data, _json_save_path

def isJsonString(str):
    try:
        eval(str)
    except Exception as e:
        return False
    return True


def TransformationType(var):
    if isinstance(var, float):  # type(var) == 'float':
        str1 = int(var)
    elif isinstance(var, str):  # type(var) == 'unicode':
        str1 = var
    else:
        raise Exception("type is not deal")
        str1 = var
    return str1

然后编制run函数测试上面的代码,读取当前目前下的题库.xls文件,输出excel_data.js文件,run函数代码如下:

def run():
    _file_path = os.getcwd() + "/" + "题库.xls"
    _filename = os.path.basename(_file_path)
    _json_data = excel2json.readExecl(_file_path, "excel_data")

if __name__ == '__main__':
    run()

运行结果如下,题库.xls转换成了excel_data.js

浏览器读取文件,Python,JavaScript技术,excel,python,javascript,html,浏览器

打开题库.xlsexcel_data.js,可以看到excel里面的每一行转换为json的对象数据。

浏览器读取文件,Python,JavaScript技术,excel,python,javascript,html,浏览器

(二)在HTML文件头使用<script>标签引入转换后的.js数据文件

有了.js文件,就可以在HTML文件头使用<script>标签引入转换后的.js数据文件,这里通过使用src="excel_data.js"实现。具体代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>读取excel</title>
    <script type="text/javascript" src="excel_data.js"></script>
</head>
<body>
    <script type="text/javascript">
      let data_list = Object.values(data)
	  data_len = data_list.length
	  console.log(data_list)
	  console.log(data_len)
    </script>
</body>
</html>

浏览器输出结果如下,把excel的数据都打印到控制台了,证明读取本地excel文件成功了,后续可以根据需求统计和展示excel的数据。

浏览器读取文件,Python,JavaScript技术,excel,python,javascript,html,浏览器

(三)使用python打开浏览器加载对应的HTML文件

最后就是刚才两个步骤的自动化,使用python自动把excel转为.js文件,调用本地浏览器打开对应的HTML,实现整个流程自动化。具体代码如下:

def run():
    _file_path = os.getcwd() + "/" + "题库.xls"
    _filename = os.path.basename(_file_path)
    _json_data = excel2json.readExecl(_file_path, "excel_data")
    _url = os.getcwd() + "/" + "index.html"
    webbrowser.open(_url)

if __name__ == '__main__':
    run()

四、小结

使用浏览器读取本地文件其实有很多实现方式,包括使用Node.js和Electron框架等技术,但这些都使用起来多少有点难度和技术门槛,本文使用简单的Python+JavaScript+HTML技术实现,满足一些小场景的需求。完整代码如下:

下载地址:【一种使用浏览器读取本地excel、josn等数据文件的方法】Python+JavaScript+HTML实现

另外,原来博主基于IE内核做了一个考试刷题工具,现在也改成使用本方法实现了,终于可以在各种浏览器运行,不再需要考虑兼容性等问题。
下载地址:Python+JavaScript+html编写的免费刷题工具,可以实现浏览器读取本地excel文件,自定义题库文章来源地址https://www.toymoban.com/news/detail-729255.html

到了这里,关于【一种使用浏览器读取本地excel、josn等数据文件的方法】Python+JavaScript+HTML实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • python 爬虫热身篇 使用 requests 库通过 HTTP 读取网络数据,使用 pandas 读取网页上的表格,使用 Selenium 模拟浏览器操作

    在过去,收集数据是一项繁琐的工作,有时非常昂贵。机器学习项目不能没有数据。幸运的是,我们现在在网络上有很多数据可供我们使用。我们可以从 Web 复制数据来创建数据集。我们可以手动下载文件并将其保存到磁盘。但是,我们可以通过自动化数据收集来更有效地做

    2023年04月08日
    浏览(47)
  • 新版edge浏览器读取谷歌浏览器上的历史记录

    上一篇: (3条消息) 新版edge浏览器读取谷歌浏览器上的历史记录_learningbilibili的博客-CSDN博客 https://blog.csdn.net/learningbilibili/article/details/123662218 关于上次的读取历史记录的问题是现在的edge浏览器最近的版本更新后出现了每次启动时从 Google Chrome 导入浏览器数据的功能,而且是

    2024年02月09日
    浏览(49)
  • 使用puppeteer完成监听浏览器下载文件并保存到自己本地或服务器上完成上传功能

    获取网站点击的下载pdf,并把pdf重命名再上传到COS云上面 “puppeteer”: “^19.7.2”, “egg”: “^3.15.0”, // 服务期用egg搭的 文件服务使用COS腾讯云 获取浏览器下载事件,并把文件保存到本地 在保存到本地前监听此文件夹,如果有文件则获取并上传 加timer做防抖是为了防止在文

    2024年04月15日
    浏览(29)
  • JAVA使用POI对Word docx模板文件替换数据工具类并通过浏览器下载到本地

    需求:需要上传一个带有占位符的模板至数据库保存,然后解析模板的占位符,通过类计算结果替换模板中的占位符,并且保存至本地 难点:1.由于我数据库保存是本地保存,并没有path 所以获取模板的path是个难点 2.如何使用计算类,由于我的类是和占位符绑定的,什么样的

    2024年02月16日
    浏览(35)
  • 浏览器获取本地IP地址(不是浏览器的url地址的ip)

    浏览器输入: edge://flags/#enable-webrtc-hide-local-ips-with-mdns Anonymize local IPs exposed by WebRTC 状态改为disable JS方法: function f() { if(typeof window != \\\'undefined\\\'){ var RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; var rtc = new RTCPeerConnection() rtc.createDataChannel(\\\'\\\'

    2024年02月02日
    浏览(45)
  • 基于 Emscripten + WebAssembly 实现浏览器操作 Excel

    【C++】使用WebAssembly在浏览器端操作Excel_wasm文件用什么打开_你的薄荷醇的博客-CSDN博客 使用WebAssembly在浏览器端操作Excel_wasm文件用什么打开 https://blog.csdn.net/weixin_44305576/article/details/125545900?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168964185516800185863561%2522%252C%2522scm%2522%253A%25

    2024年02月13日
    浏览(23)
  • selenium 调用本地浏览器插件

    本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删! selenium 使用本地浏览器插件 环境 win10 Python3.9 selenium 4.10 查看chrome配置文件路径 地址栏输入 ​

    2024年02月09日
    浏览(57)
  • web浏览器打开本地exe应用

    浏览器打开本地exe程序我们可以使用ActiveXObject方法,但是只支持IE,谷歌、火狐等浏览器并不支持此操作。 那问题来了,我们又该如何操作? 经过本博主的不断学习探索终于找到了一条,像百度网盘那样打本地exe应用的办法。我们可以通过添加注册表. 向系统添加一个类似于

    2024年02月13日
    浏览(32)
  • JavaScript音视频,使用JavaScript如何在浏览器录制电脑摄像头画面为MP4视频文件并下载视频文件到本地

    本章介绍使用JavaScript如何在浏览器录制电脑摄像头画面为MP4视频文件并下载视频文件到本地。 1、使用navigator.mediaDevices.getUserMedia获取摄像头画面 2、将获取到的摄像头画面渲染到canvas画板上 3、将canvas转换为blob对象 4、通过document.createElement(‘a’)调用 href 方法获取此链接并触

    2024年02月02日
    浏览(52)
  • web浏览器在线预览Excel,PDF,world文档解决方案

    众所周知啊,在web浏览器中是无法直接预览Excel、world文档等文件的,PDF有的浏览器是打开预览,有的浏览器是跳转到下载页,行为不一致也是让开发者头疼的事情。 今天给大家提供一个解决方案,实现office文件在线预览的解决方案,这个在开发OA,推送通知触达的应用非常有

    2024年02月17日
    浏览(47)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包