最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python+JavaScript實(shí)現(xiàn)瀏覽器讀取本地excel數(shù)據(jù)

 更新時(shí)間:2025年09月10日 09:36:56   作者:神奇的代碼在哪里  
一般來(lái)說(shuō),為了網(wǎng)絡(luò)訪問(wèn)安全,瀏覽器是不能直接加載本地文件的,本文主要討論研究一種非IE內(nèi)核瀏覽器讀取本地excel數(shù)據(jù)的方法,繞開(kāi)這個(gè)限制,希望對(duì)大家有所幫助

一、背景

一般來(lái)說(shuō),為了網(wǎng)絡(luò)訪問(wèn)安全,瀏覽器是不能直接加載本地文件的,IE內(nèi)核的瀏覽器提供了AX控件實(shí)現(xiàn)本地文件的讀取,Chrome 86 版本后也提供了相應(yīng)的API,但都存在使用限制和兼容性問(wèn)題。有時(shí)開(kāi)發(fā)者只是想利用瀏覽器編制一些簡(jiǎn)單的腳本完成一些任務(wù),不想學(xué)習(xí)C、C++、Python生成exe這么大動(dòng)作,例如使用JavaScript腳本讀取本地一個(gè)excel文件進(jìn)行統(tǒng)計(jì)分析。但由于瀏覽器無(wú)法使用本地文件這個(gè)限制,只好放棄。本文討論研究一種非IE內(nèi)核瀏覽器讀取本地excel數(shù)據(jù)的方法,繞開(kāi)這個(gè)限制。

為了實(shí)現(xiàn)這個(gè)目標(biāo)這里使用到了Python、JavaScript、json、HTML等知識(shí),同時(shí)博主也是通過(guò)學(xué)習(xí)其他文章找了這種解決方案。

二、解決思路

問(wèn)題的解決思路如下:

  • 使用python讀取本地文件并轉(zhuǎn)換為json格式的.js文件;
  • 在HTML文件頭使用<script>標(biāo)簽引入轉(zhuǎn)換后的.js數(shù)據(jù)文件;
  • 使用python打開(kāi)瀏覽器加載對(duì)應(yīng)的HTML文件。

三、具體實(shí)現(xiàn)

使用python讀取本地文件并轉(zhuǎn)換為json格式的.js文件

這里參考了網(wǎng)上的python讀取本地文件代碼,已讀取excel為例子,使用了json庫(kù)、xlrd2庫(kù)編寫(xiě)了讀取單個(gè)excel文件轉(zhuǎn)換為json數(shù)據(jù)格式的.js文件。其中參數(shù)path為待讀取的excel文件路徑,參數(shù)name為轉(zhuǎn)換后保存的.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開(kāi)始
    # sheet的名稱(chēng),行數(shù),列數(shù)
    # 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函數(shù)測(cè)試上面的代碼,讀取當(dāng)前目前下的題庫(kù).xls文件,輸出excel_data.js文件,run函數(shù)代碼如下:

def run():
    _file_path = os.getcwd() + "/" + "題庫(kù).xls"
    _filename = os.path.basename(_file_path)
    _json_data = excel2json.readExecl(_file_path, "excel_data")

if __name__ == '__main__':
    run()

運(yùn)行結(jié)果如下,題庫(kù).xls轉(zhuǎn)換成了excel_data.js。

打開(kāi)題庫(kù).xlsexcel_data.js,可以看到excel里面的每一行轉(zhuǎn)換為json的對(duì)象數(shù)據(jù)。

在HTML文件頭使用<script>標(biāo)簽引入轉(zhuǎn)換后的.js數(shù)據(jù)文件

有了.js文件,就可以在HTML文件頭使用<script>標(biāo)簽引入轉(zhuǎn)換后的.js數(shù)據(jù)文件,這里通過(guò)使用src="excel_data.js"實(shí)現(xiàn)。具體代碼如下:

<!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>

瀏覽器輸出結(jié)果如下,把excel的數(shù)據(jù)都打印到控制臺(tái)了,證明讀取本地excel文件成功了,后續(xù)可以根據(jù)需求統(tǒng)計(jì)和展示excel的數(shù)據(jù)。

使用python打開(kāi)瀏覽器加載對(duì)應(yīng)的HTML文件

最后就是剛才兩個(gè)步驟的自動(dòng)化,使用python自動(dòng)把excel轉(zhuǎn)為.js文件,調(diào)用本地瀏覽器打開(kāi)對(duì)應(yīng)的HTML,實(shí)現(xiàn)整個(gè)流程自動(dòng)化。具體代碼如下:

def run():
    _file_path = os.getcwd() + "/" + "題庫(kù).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()

四、小結(jié)

使用瀏覽器讀取本地文件其實(shí)有很多實(shí)現(xiàn)方式,包括使用Node.js和Electron框架等技術(shù),但這些都使用起來(lái)多少有點(diǎn)難度和技術(shù)門(mén)檻,本文使用簡(jiǎn)單的Python+JavaScript+HTML技術(shù)實(shí)現(xiàn),滿(mǎn)足一些小場(chǎng)景的需求。

到此這篇關(guān)于Python+JavaScript實(shí)現(xiàn)瀏覽器讀取本地excel數(shù)據(jù)的文章就介紹到這了,更多相關(guān)Python瀏覽器讀取本地文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

淳化县| 朝阳区| 清水县| 越西县| 蚌埠市| 岳池县| 德保县| 奈曼旗| 吉安市| 通许县| 北票市| 华安县| 元江| 托里县| 册亨县| 象州县| 锦屏县| 寿宁县| 阜城县| 儋州市| 玛纳斯县| 永川市| 许昌县| 探索| 改则县| 江源县| 河源市| 文成县| 清涧县| 土默特左旗| 肥东县| 金川县| 精河县| 扎赉特旗| 大渡口区| 新源县| 涟水县| 奉节县| 和静县| 香港| 铜梁县|