吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1188|回复: 8
收起左侧

[求助] JS读取Excel文件数据

[复制链接]
cqwcns 发表于 2022-10-11 10:14
我现在有一个DEMO,可以通过input输入文件,读取excel的全部单元格数据。
但在实际应用中,我希望直接读取根目录的指定文件,不要用户手动选取。
即直接指定根目录相对路径“/test.xlsx”,或者绝对路径“http://127.0.0.1:5500/test.xlsx
当然最好等直接读取相对路径。
有什么方法可以实现,请各位大佬指教,感谢。
微信图片_20221010092147.png

[JavaScript] 纯文本查看 复制代码
<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="utf-8">
    <title>文档</title>
    <!-- Vue 3 -->
    <script src="https://candyissupersweet.gitee.io/cdn/vue3/vue.global.prod.js"></script>
    <!-- xlsx excel -->
    <script src="https://upyun.luckly-mjw.cn/lib/xlsx.full.min.js"></script>
    <!-- excel core -->
    <script src="https://blog.luckly-mjw.cn/tool-show/merged-excel-import-export-demo/import-demo/core.js"></script>
</head>

<body>

    <div id="app">
        <input type="file" @change="readExcel" accept=".xls,.xlsx">
    </div>

    <script>
        let App = {
            methods: {
                readExcel(event) {
                    let file = event.target.files[0];
                    const reader = new FileReader();
                    reader.onload = e => {
                        const sheets = []
                        const data = e.target && e.target.result
                        const workbook = XLSX.read(data, { type: 'array' })
                        for (const sheetName of workbook.SheetNames) {
                            const worksheet = workbook.Sheets[sheetName]
                            sheets.push(getSheetCells(worksheet))
                        }
                        console.log('所有 sheets 单元格数据', sheets)
                    }
                    reader.readAsArrayBuffer(file)
                }
            }
        }
        const app = Vue.createApp(App);
        app.mount("#app");
    </script>
    
</body>

</html>

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

steven026 发表于 2022-10-11 10:26
用XHR读excel
[JavaScript] 纯文本查看 复制代码
                    let file = 用XHR读excel;
                    const reader = new FileReader();
                    reader.onload = e => {
                        const sheets = []
                        const data = e.target && e.target.result
                        const workbook = XLSX.read(data, { type: 'array' })
                        for (const sheetName of workbook.SheetNames) {
                            const worksheet = workbook.Sheets[sheetName]
                            sheets.push(getSheetCells(worksheet))
                        }
                        console.log('所有 sheets 单元格数据', sheets)
                    }
                    reader.readAsArrayBuffer(file)
不知道改成啥 发表于 2022-10-11 10:27
你的绝对路径是服务端的你选文件他是本地的这就不是一码事啊。
lucklys 发表于 2022-10-11 10:44
反正都是要读取服务器的文件 ,直接 整个字典吧, 然后获取浏览器的地址栏参数,自动去下载这个表格

免费评分

参与人数 1吾爱币 +1 收起 理由
cqwcns + 1 谢谢@Thanks!

查看全部评分

zpy2 发表于 2022-10-11 11:16
客户端在沙盒运行不能直接读取硬盘文件,除非安装插件
seawaycao 发表于 2022-10-11 12:11
谢谢分享!
 楼主| cqwcns 发表于 2022-10-11 13:18
steven026 发表于 2022-10-11 10:26
用XHR读excel
[mw_shl_code=javascript,true]                    let file = 用XHR读excel;
            ...

你好。这个“用XHR读excel”不知道怎么写,可以具体指教一下吗?谢谢

我这样写报错。
      const file = new XMLHttpRequest();
                    file.open("GET", 'http://127.0.0.1:5500/ttt.xlsx', true);
                    file.responseType = 'blob';
                    file.send();
steven026 发表于 2022-10-11 14:27
cqwcns 发表于 2022-10-11 13:18
你好。这个“用XHR读excel”不知道怎么写,可以具体指教一下吗?谢谢

我这样写报错。

[JavaScript] 纯文本查看 复制代码
const xhr = new XMLHttpRequest()
xhr.open('get', 'http://127.0.0.1:5500/ttt.xlsx', true)
xhr.responseType = "arraybuffer"
xhr.onload = () => { readXLSX(xhr.response) }
xhr.send()

function readXLSX(data) {
    const sheets = []
    const workbook = XLSX.read(data)
    for (const sheetName of workbook.SheetNames) {
        const worksheet = workbook.Sheets[sheetName]
        sheets.push(getSheetCells(worksheet))
    }
    console.log('所有 sheets 单元格数据', sheets)
}

这样写吧

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
cqwcns + 2 + 1 感谢大佬耐心指教。

查看全部评分

 楼主| cqwcns 发表于 2022-10-11 14:52
steven026 发表于 2022-10-11 14:27
[mw_shl_code=javascript,true]const xhr = new XMLHttpRequest()
xhr.open('get', 'http://127.0.0.1:5 ...

靠谱,需求已实现,感谢。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 07:14

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表