繁体   English   中英

如何在客户端操作 Excel 文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM