【问题标题】:Extracting excel content from client side Web Application从客户端 Web 应用程序中提取 excel 内容
【发布时间】:2015-03-16 05:10:33
【问题描述】:
我有一个需要上传文件的 Web 应用程序 (ASP.Net)
我一直在寻找一个框架来从客户端的 excel 中提取数据并将内容(JSON、CSV)格式提交到服务器端以减少流量。我在 javascript 中查看了 ActiveXObject,但它只适用于 Internet Explorer。我可以选择使用 silverlight 或 actionscript 进行解析。
问题:
银光真的死了吗?我不能长期使用它吗?
这可以使用动作脚本吗?
有没有 javascript 框架可以做这种解析?
提前致谢
【问题讨论】:
标签:
javascript
excel
actionscript-3
c#-4.0
silverlight-4.0
【解决方案1】:
您可以使用JS-XLSX JavaScript library 在客户端解析文件,然后将解析后的电子表格的内容发送到服务器。
例如,您可以创建一个按钮(参见下面的 HTML 代码),然后在更改事件上调用 loadBinaryFile(),使用 JS-XLSX 库对其进行解析,然后使用 $.post() 或其他类似函数将其发送到服务器。
工作簿的结构是一个 JSON 对象,在 JS-XLSX 站点的文档中有详细描述。
<script src="http://alasql.org/console/xlsx.core.min.js"></script>
<input type="file" onchange="parseAndSend(event)" value="Parse and send XSLS file">
<script>
function parseAndSend (event) {
// Load binary file from desktop
loadBinaryFile(event,function(data){
// Parse it to JSON
var workbook = XLSX.read(data,{type:'binary'});
// Send to server data from workbook here
// $.post({url:'http://mypostaddress',data:workbook});
alert(workbook.SheetNames);
});
}
function loadBinaryFile(path, success) {
var files = path.target.files;
var reader = new FileReader();
var name = files[0].name;
reader.onload = function(e) {
var data = e.target.result;
success(data);
};
reader.readAsBinaryString(files[0]);
}
</script>