从JSP页面,我需要浏览excel文件,并在系统上选择文件后,我需要读取该excel文件的内容,并填写我的表单。
目前我已经尝试与下面的代码,但它只工作在IE与一些变化的IE互联网选项的ActiveXObject。它不工作在其余的浏览器。
<script>
function mytest2() {
var Excel;
Excel = new ActiveXObject("Excel.Application");
Excel.Visible = false;
form1.my_textarea2.value = Excel.Workbooks.Open("C:/Documents and Settings/isadmin/Desktop/test.xlsx").ActiveSheet.Cells(1,1).Value;
Excel.Quit();
}
</script>
请建议一些解决方案,使其在所有浏览器中工作。
6条答案
按热度按时间zhte4eai1#
一个xlsx电子表格是一个zip文件,里面有一堆xml文件。使用类似zip.js的东西,你可以提取xml文件并在浏览器中解析它们。xlsx.js可以做到这一点。Here's my simple example。为方便起见,复制到这里:
np8igboo2#
您可以使用HTML5 File API
加载文件后,您可以使用支持某些Excel输出格式(如csv / xlsx)的库解析内容。
这里有几个选项...
46qrfjad3#
在浏览器中通过JavaScript读/写任何文件通常是不可能的。因此,如果没有任何附加的插件,您将无法从浏览器中读/写Excel文件。Excel的ActiveX对象允许您这样做,但只有IE支持ActiveX对象。
可能有其他插件为其他浏览器,但我知道没有。
首先,你为什么要这样做?你能给予一个用例吗?也许有比你正在尝试的更好的选择。
更新
您必须将excel文件传递到服务器,并在服务器端阅读excel(例如在servlet中)。
您必须在多部分表单的JSP中使用
<input type='file'>
<form name="myForm" action="myServlet" enctype="multipart/form-data" method="post">
在服务器端,您可能希望使用Apache Commons File Upload。
一旦有了文件(或其中的流),就可以使用Apache POI HSSF/XSSF解析文件,然后将数据更新到数据库或将其传递回JSP
tjrkku2a4#
我一直都在这样做--我的原型被设计成让涉众修改一个excel,并让它填充html原型,通常不需要服务器。
1.将Excel另保存为XML
1.通过 AJAX 加载XML并解析出结构
(1)下面是我在Excel文件中放置的一个方便的按钮宏,它允许轻松地保存为XML(并重新保存为xls):
(2)JS的解析比较复杂,但前提很简单。其中有Worksheet、Table、Row、Cell和Data等XML对象。还有一个XML属性ss:Index,有时候我觉得很方便。
ct2axkht5#
这个可以在所有主流浏览器中使用。
https://catamphetamine.github.io/read-excel-file/
第一个
在上面的示例中,
data
是原始字符串数据。通过传递schema
参数,可以将其解析为具有严格模式的JSON。有关示例,请参阅API文档。API文档:http://npmjs.com/package/read-excel-file
lyr7nygr6#
使用SheetJS和ECMAScript可以执行以下操作:
在文件中添加以下内容:
也可以将其保存在另一个文件中。
如果这样做,您将需要导出将要使用的函数,并将其导入到要使用它的文件中。
使用方法:
如果文件中只有一个
sheet
,则fileContent
将包含字符串,否则它将是string
的array
,每个string
与用于调用的文件的一个sheet
匹配。这样做的好处是可以用“同步方式”处理异步代码。
如果您对检索其他格式的文件内容感兴趣,您可以检查
utils.sheet_to_XXX
信息here,并替换ExcelFileToCSV()
中的utils.sheet_to_csv
指令,或者最好在另一个相应命名的函数中进行。如果你想在一个html页面中使用函数,你需要在这些scripts标签中进行:
<script type="module" defer></script>