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
相关产品推荐
相关产品推荐

