[Um método para usar um navegador para ler Excel local, josn e outros arquivos de dados] Implementação Python + JavaScript + HTML

1. Fundo

De modo geral, por uma questão de segurança de acesso à rede, os navegadores não podem carregar arquivos locais diretamente. Os navegadores baseados no IE fornecem o controle AX para ler arquivos locais. O Chrome 86 e versões posteriores também fornecem APIs correspondentes, mas todas existem. Limitações e problemas de compatibilidade . Às vezes, os desenvolvedores desejam apenas usar o navegador para compilar alguns scripts simples para concluir algumas tarefas e não querem aprender C, C++ e Python para gerar exe, um passo tão grande 例如使用JavaScript脚本读取本地一个excel文件进行统计分析. Mas devido à limitação de que o navegador não pode usar arquivos locais, tive que desistir. Este artigo discute um método 非IE内核浏览器读取本地excel数据的方法para contornar essa limitação.

Para atingir esse objetivo são utilizados Python, JavaScript, json, HTML e outros conhecimentos.Ao mesmo tempo, os blogueiros também encontraram essa solução estudando outros artigos.

Para artigos relacionados, consulte:
https://blog.csdn.net/qq_41581588/article/details/129681572
https://blog.csdn.net/qq_30337695/article/details/51788007

2. Ideias de soluções

把本地文件的数据转换为json格式数据
.js文件将通过script标签插入HTML文件
1.使用python读取本地文件
2.把json格式数据保存为.js文件
3.使用python在HTML文件头中写入.js文件,编写读取.js文件json数据的JavaScript代码
4.使用python打开浏览器加载对应的HTML文件

A solução para o problema é a seguinte:

  1. Use python para ler arquivos locais e convertê-los em arquivos .js no formato json;
  2. Use tags no cabeçalho do arquivo HTML <script>para apresentar o arquivo de dados .js convertido;
  3. Use python para abrir o navegador e carregar o arquivo HTML correspondente.

3. Implementação específica

(1) Use python para ler arquivos locais e convertê-los em arquivos .js no formato json

Aqui nos referimos ao código python na Internet para leitura de arquivos locais. Lemos o Excel como exemplo. Usamos a biblioteca json e a biblioteca xlrd2 para escrever um arquivo .js que lê um único arquivo Excel e o converte em formato de dados json . Entre 参数patheles 待读取的excel文件路径, 参数namepara 转换后保存的.js文件名. O código principal é o seguinte:

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

Em seguida, compile a função de execução para testar o código acima, leia o 题库.xlsarquivo atual e produza excel_data.jso arquivo. O código da função de execução é o seguinte:

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

Os resultados da execução são os seguintes, 题库.xlsconvertidos em excel_data.js.

Insira a descrição da imagem aqui

Aberto 题库.xlse excel_data.js, você pode ver que cada linha no Excel é convertida em dados do objeto JSON.

Insira a descrição da imagem aqui

(2) Use tags no cabeçalho do arquivo HTML <script>para apresentar o arquivo de dados .js convertido

Com isso .js文件, você pode usar <script>tags no cabeçalho do arquivo HTML para apresentar o arquivo de dados .js convertido, o que é src="excel_data.js"feito aqui usando. O código específico é o seguinte:

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

A saída do navegador é a seguinte: Todos os dados do Excel são impressos no console, o que prova que o arquivo Excel local foi lido com sucesso. Os dados do Excel podem ser contados e exibidos de acordo com os requisitos.

Insira a descrição da imagem aqui

(3) Use python para abrir o navegador e carregar o arquivo HTML correspondente

A última etapa é automatizar as duas etapas agora: use python para converter automaticamente o Excel em um arquivo .js e chame o navegador local para abrir o HTML correspondente para automatizar todo o processo. O código específico é o seguinte:

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

4. Resumo

Na verdade, existem muitas maneiras de usar um navegador para ler arquivos locais, incluindo o uso de tecnologias como Node.js e estrutura Electron, mas elas são um tanto difíceis e tecnicamente exigentes de usar. Este artigo usa tecnologia simples Python+JavaScript+HTML para alcançar alguns dos requisitos.As necessidades de pequenas cenas. O código completo é o seguinte:

Endereço de download: [Um método de usar um navegador para ler Excel local, josn e outros arquivos de dados] Implementação Python + JavaScript + HTML

Além disso, o blogueiro original criou uma ferramenta de escovação de perguntas do exame baseada no kernel do IE, e agora ela foi implementada usando esse método, podendo finalmente ser executada em vários navegadores e não há necessidade de considerar compatibilidade e outros problemas.
Endereço de download: Uma ferramenta gratuita de escovação de perguntas escrita em Python+JavaScript+html, que permite ao navegador ler arquivos Excel locais e personalizar o banco de perguntas

Acho que você gosta

Origin blog.csdn.net/qq616491978/article/details/132707390
Recomendado
Clasificación