从网页

时间:2015-11-07 19:47:46

标签: javascript php vba server client-server

我想要做的是在我的网页上有一组可编辑的Excel文件:

  • 我提供了用户代表Excel文件的链接
  • 点击后,用户编辑Excel文件的默认程序(例如,MS Excel)应该打开
  • 完成编辑后,文件应该以透明的方式上传到我的服务器,下次用户访问我的页面时,他们应该看到他们编辑的文件并能够再次编辑

我考虑过:

  • JavaScript类似Excel的网格。但是,我没有找到具有足够功能的JavaScript库,例如轻松移动行(任何好的JavaScript Excel组件的建议?)
  • 使用他们的API保存到DropBox / Google Docs / ...但是,它需要用户拥有一个帐户,并且可能需要我管理用户的DropBox密码(并非所有用户都希望与我共享密码)。此外,我需要有Google Drive,Miscrosoft OneDrive的接口,以及谁知道有多少其他服务。
  • 允许用户下载文件并依赖用户再次上传。但是,这对于用户来说太复杂,并且用户将忘记上传文件,这意味着丢失他们的编辑。任何方式或在关闭时自动上传文件?
  • Excel文件中的一个宏,可以在退出之前联系我的服务器。但是,这需要用户启用宏(安全警报),如果连接中断,则可能不可靠。我没有评估这是否在技术上可行。

或者最好/最简单的方法是什么?

(我知道如何生成Excel文件以及如何从网页打开它们;我的问题是如何让用户透明地将用户编辑回服务器。)

1 个答案:

答案 0 :(得分:0)

我认为最简单的方法(“让用户透明地将用户编辑回服务器”)是对PHP脚本使用AJAX(JS)请求。

AJAX非常适合在后台执行(异步),但无法编辑服务器。只需在JS中添加一个事件监听器(可能是onchangeonblur),并在每次用户编辑文件时发送一个AJAX请求。

PHP是一种出色的服务器端脚本语言,您可以使用它编辑文件。

编辑:示例(根据要求提供)

为了简单起见(现在),假设Excel文件存储在<textarea>的字符串中,您可以设置一个侦听器从中获取数据(在jQuery中),并发送一个AJAX请求: / p>

HTML:

<textarea id="excel"></textarea>

JS:

$("#excel").change(function() {
    var excelFile = $(this).val();
    $.ajax({
        url: "updateFile.php",
        method: "post",
        data: { data: excelFile }
    });
});

PHP(updateFile.php):

<?php
    $data = $_POST["data"];
    $file = fopen("FILENAME.xlsx", "w+");
    fwrite($file, $data);
    fclose($file);
?>