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

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

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

一、背景

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

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

二、解決思路

問題的解決思路如下:

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

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

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

這里參考了網(wǎng)上的python讀取本地文件代碼,已讀取excel為例子,使用了json庫、xlrd2庫編寫了讀取單個(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開始
    # sheet的名稱,行數(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ù)測試上面的代碼,讀取當(dāng)前目前下的題庫.xls文件,輸出excel_data.js文件,run函數(shù)代碼如下:

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()

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

打開題庫.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ù)文件,這里通過使用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打開瀏覽器加載對(duì)應(yīng)的HTML文件

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

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()

四、小結(jié)

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

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

相關(guān)文章

最新評(píng)論

象州县| 浏阳市| 视频| 长丰县| 唐河县| 博白县| 石家庄市| 息烽县| 秦安县| 滦平县| 建平县| 成武县| 东阿县| 吕梁市| 开原市| 莒南县| 亳州市| 宁陵县| 盱眙县| 庐江县| 高尔夫| 天柱县| 东海县| 桂阳县| 旅游| 始兴县| 桦南县| 察哈| 庆云县| 普定县| 济宁市| 桐乡市| 札达县| 万荣县| 化州市| 吴旗县| 汾西县| 吉林市| 阳新县| 新竹县| 白沙|