打开Excel文件并导出到JSON

我想dynamic创build一个<select></select> (或者可能是带有自动完成function的文本框)input文件,具体取决于一个Excel文件,格式如下:

 Airport Code Airport Name Language Code AAC Al Arish en AAE Annaba Les Saline en AAH Aachen Merzbruck en AAL Aalborg en AAN Al Ain en AAQ Anapa en AAR Aarhus Tirstrup en AAU Asau en 

(还有更多)

我需要打开.xls文件并读取每一行,以便可以将两个第一列作为锚点和值。

这是我find的最相关的内容和链接被打破如何使用JavaScript读取和写入文件

有没有解决scheme,这将适用于IE7

如果你的文件在http服务器上,你可以使用AJAX来读取它。

我们首先定义一些常量:

 var CSV_URL = "http://server.domain/path/file.csv"; var CSV_COLUMN = ';' var CSV_ROW = '\n' 

CSV_URL是您CSV文件的url。

CSV_COLUMN是分隔列的分隔符。

CSV_ROW是分隔行的分隔符。


现在我们需要做AJAX查询来获取CSV数据内容。 我正在使用jQuery来做AJAX请求。

 $.get (CSV_URL, null, function (data) { var result = parse_csv (data); var e = create_select (result); document.body.appendChild (e); }); 

好的,现在我们需要parsing数据…

 function parse_csv (data) { var result = new Array(); var rows = data.split (CSV_ROW); for (var i in rows) { if (i == 0) continue; // skip the first row var columns = rows[i].split (CSV_COLUMN); result.push ({ "value": columns[1], "text": columns[0] }); } return result; } 

…并创buildselect:

 function create_select (data) { var e = document.createElement ('select'); for (var i in data) { var option = document.createElement ('option'); option.value = data[i].value; option.innerHTML = data[i].text; e.appendChild (option); } return e; } 

除了AJAX请求之外的所有东西都是纯JavaScript。 如果由于某种原因不想使用jQuery,那么也可以使用纯JS编写AJAX请求。

你应该把这个file upload到你的服务器,然后在服务器上读这个文件,然后返回JSON到浏览器并显示它。

我build议使用Microsoft InterOp库服务器端来打开C#中的电子表格,将其信息提取到POCO中,并(1)将它们填充到JSON中,或者(2)当您第一次将视图模型中的POCO集合发送出去呈现表单页面。

如果您希望保留所有的客户端,您开始解释的另一个选项是罗伯特开始解释的,但是您必须将您的电子表格预先格式化为CSV表示法,并且您将不得不做一些重大的parsing。

我个人会做这个服务器端,因为文件系统的权限往往更容易处理。

以下是Microsoft Office Interop库的信息,以及从Excel中提取的示例。

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel%28v=office.14%29.aspx

http://www.codeproject.com/KB/dotnet/Exceller.aspx

根据我的知识,有安全限制和不能读取存储在客户端使用JavaScript的文件,有几个select可以使用1)上传到一些服务器,然后阅读使用服务器端语言,如C#或PHP(如之前所说的以前的post)2)已经使用服务器端语言读取文件,然后返回数据到JavaScriptparsing