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