You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio.NET中如何引入XLSX.Read库?附相关代码

解决Visual Studio .NET环境中XLSX库引入及Excel读取问题

一、正确引入XLSX库的两种方式

1. 前端直接引入(适合传统ASP.NET项目)

在页面的<head>或<body>末尾添加库的CDN链接,引入后可直接全局使用XLSX对象:

<script src="https://cdn.jsdelivr.net/npm/xlsx@0.18.5/dist/xlsx.full.min.js"></script>

2. 模块化项目引入(使用npm构建)

如果项目配置了webpack等构建工具,先通过终端安装依赖:

npm install xlsx --save

再在JavaScript文件顶部导入:

import * as XLSX from 'xlsx';
// 或CommonJS语法
const XLSX = require('xlsx');

注意:传统未配置模块化的ASP.NET项目,不要用require,会导致报错。

二、修复你的Excel读取代码

原代码存在wb未定义、workbook.name属性不存在、工作表名称访问错误等问题,修复后的代码如下:

function importExcel() {
    sAlert("importExcel");

    // 限制仅可选择Excel文件
    var fileDialog = $('<input type="file" accept=".xlsx,.xls">');
    fileDialog.click();
    fileDialog.on("change", onFileSelected);
    return false;
};

var onFileSelected = function (e) {
    if (this.files.length > 0) {
        var file = this.files[0];
        var reader = new FileReader();
        sAlert("file " + file.name);

        reader.onload = function (e) {
            sAlert("reader.onload ");
            var data = new Uint8Array(e.target.result);
            sAlert("data loaded");
            
            // 全局引入后直接使用XLSX,无需require
            var workbook = XLSX.read(data, { type: 'array' }); 
            sAlert("workbook loaded, sheets: " + workbook.SheetNames.join(','));
            
            // 正确获取指定名称的工作表
            var sheetName = workbook.SheetNames.find(name => name === 'Formulario');
            if(!sheetName) {
                sAlert("未找到名为Formulario的工作表");
                return;
            }
            var worksheet = workbook.Sheets[sheetName];        
            sAlert("worksheet loaded");
            
            // 转换工作表数据为JSON格式
            var jsonData = XLSX.utils.sheet_to_json(worksheet, { header: 1 });
            sAlert("JSON数据行数:" + jsonData.length);
            
            // 安全访问A1单元格值
            if(worksheet['A1']) {
                var cellValue = worksheet['A1'].v;
                sAlert("A1单元格值:" + cellValue);
            } else {
                sAlert("A1单元格为空");
            }
        };

        sAlert("readAsArrayBuffer " + file.name);
        reader.readAsArrayBuffer(file);
    }
};

三、关键注意点

  • 给文件选择框添加accept=".xlsx,.xls",避免用户选择非Excel文件。
  • workbook对象没有name属性,工作表名称存储在workbook.SheetNames数组中。
  • 若项目更适合后端处理Excel,可考虑使用EPPlus等.NET后端库,但前端读取场景下SheetJS的xlsx库更适配。

内容的提问来源于stack exchange,提问作者Douglas Cavalcante

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 06:44:50