[Un método para usar un navegador para leer Excel local, josn y otros archivos de datos] Implementación de Python+JavaScript+HTML

1. Antecedentes

En términos generales, por razones de seguridad del acceso a la red, los navegadores no pueden cargar archivos locales directamente. Los navegadores basados ​​en IE proporcionan el control AX para leer archivos locales. Chrome 86 y versiones posteriores también proporcionan las API correspondientes, pero todas existen. Limitaciones y problemas de compatibilidad . A veces, los desarrolladores solo quieren usar el navegador para compilar algunos scripts simples para completar algunas tareas y no quieren aprender C, C ++ y Python para generar archivos ejecutables 例如使用JavaScript脚本读取本地一个excel文件进行统计分析. Pero debido a la limitación de que el navegador no puede usar archivos locales, tuve que rendirme. Este artículo analiza un método 非IE内核浏览器读取本地excel数据的方法para eludir esta limitación.

Para lograr este objetivo se utilizan Python, JavaScript, json, HTML y otros conocimientos, al mismo tiempo que los blogueros también encontraron esta solución estudiando otros artículos.

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

2. Ideas de solución

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

La solución al problema es la siguiente:

  1. Utilice Python para leer archivos locales y convertirlos a archivos .js en formato json;
  2. Utilice etiquetas en el encabezado del archivo HTML <script>para presentar el archivo de datos .js convertido;
  3. Utilice Python para abrir el navegador y cargar el archivo HTML correspondiente.

3. Implementación específica

(1) Utilice Python para leer archivos locales y convertirlos a archivos .js en formato json

Aquí nos referimos al código Python en Internet para leer archivos locales. Hemos leído Excel como ejemplo. Usamos la biblioteca json y la biblioteca xlrd2 para escribir un archivo .js que lee un único archivo de Excel y lo convierte al formato de datos json. . Entre 参数pathellos 待读取的excel文件路径, 参数namepor 转换后保存的.js文件名. El código principal es el siguiente:

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

Luego compile la función de ejecución para probar el código anterior, lea el 题库.xlsarchivo actual y genere excel_data.jsel archivo. El código de la función de ejecución es el siguiente:

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

Los resultados de ejecución son los siguientes, 题库.xlsconvertidos a excel_data.js.

Insertar descripción de la imagen aquí

Abra 题库.xlsy excel_data.jspodrá ver que cada fila en Excel se convierte en datos de objetos json.

Insertar descripción de la imagen aquí

(2) Utilice etiquetas en el encabezado del archivo HTML <script>para presentar el archivo de datos .js convertido

Con eso .js文件, puede usar etiquetas en el encabezado del archivo HTML <script>para introducir el archivo de datos .js convertido, lo cual se src="excel_data.js"logra aquí usando. El código específico es el siguiente:

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

El resultado del navegador es el siguiente: todos los datos de Excel se imprimen en la consola, lo que demuestra que el archivo de Excel local se leyó correctamente y los datos de Excel se pueden contar y mostrar de acuerdo con los requisitos.

Insertar descripción de la imagen aquí

(3) Utilice Python para abrir el navegador y cargar el archivo HTML correspondiente

El último paso es automatizar los dos pasos de ahora: use Python para convertir automáticamente Excel en un archivo .js y llame al navegador local para abrir el HTML correspondiente para automatizar todo el proceso. El código específico es el siguiente:

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. Resumen

En realidad, hay muchas formas de usar un navegador para leer archivos locales, incluido el uso de tecnologías como Node.js y Electron Framework, pero son algo difíciles y técnicamente exigentes de usar. Este artículo utiliza la tecnología simple Python + JavaScript + HTML para lograr algunas de los requisitos Las necesidades de escenas pequeñas. El código completo es el siguiente:

Dirección de descarga: [Un método para usar un navegador para leer Excel local, josn y otros archivos de datos] Implementación de Python+JavaScript+HTML

Además, el blogger original creó una herramienta de cepillado de preguntas de examen basada en el kernel de IE, y ahora se ha implementado utilizando este método. Finalmente se puede ejecutar en varios navegadores y no es necesario considerar la compatibilidad y otros problemas.
Dirección de descarga: una herramienta gratuita de redacción de preguntas escrita en Python+JavaScript+html, que permite al navegador leer archivos de Excel locales y personalizar el banco de preguntas.

Supongo que te gusta

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