[英]How to manipulate Excel file on the client side
我是 php 和 javascript 的新手,所以我什至不确定我能否正确地揭露我的案子。
我有一个 php 表单,客户端在其浏览器上选择选项。
提交时,需要客户端浏览器从另一个域下载 excel 文件(我无法控制第二个服务器响应)。
它必须在客户端完成,因为只有用户才能访问第二个域(在本地网络内或通过 VPN 从 Internet 访问)。
我设法使用以下 javascript 强制下载:
function download(dataurl,filename) {
var a = document.createElement("a");
a.href = dataurl;
a.download = filename;
a.click();
window.URL.revokeObjectURL(dataurl);
a.remove();
}
download(url,filename);
文件名什么都不做,因为文件是用服务器发送的名称保存的。
下载文件后,我仍然需要重命名并将其移动到特定的网络目录(只能由客户端访问)。
我不能使用 js fetch,因为浏览器使用 CORS 阻止了下载。
由于安全原因,我什至不确定这是否可能。
任何帮助将非常感激。
“我仍然需要重命名并将其移动到特定的网络目录”
...您不能从 JavaScript、JavaScript 中执行此操作,出于安全原因,在浏览器中运行的设备无法访问正在运行的设备的文件系统。
你所能做的就是给出他们需要做什么的指示。 如果这不令人满意,那么您需要将此项目实现为桌面应用程序,而不是 web 应用程序。
作为一个肮脏的解决方法,如何使用适当的 DOS 复制命令生成一个 .bat 文件? 如果您的用户乐于下载并执行该文件,它可能会完成这项工作!
我用 web 应用程序做了类似的事情,它为本地宏程序生成命令。
例如:您可以保存以下内容以将文件复制到正确的目录
copy c:\\path\to\download\file.xls n:\\path\to\networked\destination
或者您可以使用内置的 windows 命令来处理文件下载
curl.exe -0 c:\\path\to\download\file.xls https://domain_with_file.com/file.xls
不过,这并不是一种理想的处理方式,而且看起来下载的任何批处理文件都可能被标记为潜在的病毒威胁。
我想我找到了一个解决方案(IE 仅具有适当的 Internet 选项设置):
function test() {
/* global ActiveXObject*/
var Excel = new ActiveXObject("Excel.Application");
Excel.Visible = true; //optional
Excel.Workbooks.Open("C:\\Users\\user1\\Downloads\\file1.xlsx");
}
从这里开始,我相信我几乎可以做我想做的事。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.