我想使用angularJS1,Hibernate 4.3.5,Spring mvc 4.2.4导入一个Excel文件到我的数据库中。Excel文件通过一个窗口导入(由子项“姓”、“名”和父项组成的表),该表以前是手动填写的。现在的目标是通过导入Excel文件自动填充表格。我可以读取google上的Excel文件(json格式),但我无法将其导入到我的数据库中。该项目由前端(angularJS1)和后端(hibernate、postgresSQL、DAO)组成。你能帮我个忙吗?这是自周四以来,我寻求的解决方案。谢谢
下面是读取json格式的excel文件的代码: file:...Controller.js (前面部分)
$scope.uploadFile = function (element) {
var file = element.files[0];
console.log("FILE", file);
var reader = new FileReader();
reader.onload = function (event) {
var data = event.target.result;
/*Call XLSX*/
var workbook = XLSX.read(data, {
type: 'binary'
});
/* DO SOMETHING WITH workbook HERE */
var first_sheet_name = workbook.SheetNames[0];
/* Get worksheet */
var worksheet = workbook.Sheets[first_sheet_name];
var excelData = XLSX.utils.sheet_to_json(worksheet);
console.log("EXCELDATA", excelData);
}
}发布于 2018-04-30 20:50:45
下面是为您创建的示例代码示例。
angular.module('app', [])
.controller('ExcelReadCtrl', function($scope) {
$scope.data = [{firstName:'AAA',lastName:'BBB',age:30}];
$scope.READ = function() {
/*Checks whether the file is a valid excel file*/
var regex = /^([a-zA-Z0-9\s_\\.\-:])+(.xlsx|.xls)$/;
var xlsxflag = false; /*Flag for checking whether excel is .xls format or .xlsx format*/
if ($("#ngexcelfile").val().toLowerCase().indexOf(".xlsx") > 0) {
xlsxflag = true;
}
var reader = new FileReader();
reader.onload = function (e) {
var data = e.target.result;
if (xlsxflag) {
var workbook = XLSX.read(data, { type: 'binary' });
}
else {
var workbook = XLS.read(data, { type: 'binary' });
}
var sheet_name_list = workbook.SheetNames;
var cnt = 0;
sheet_name_list.forEach(function (y) { /*Iterate through all sheets*/
if (xlsxflag) {
var exceljson = XLSX.utils.sheet_to_json(workbook.Sheets[y]);
}
else {
var exceljson = XLS.utils.sheet_to_row_object_array(workbook.Sheets[y]);
}
if (exceljson.length > 0) {
for (var i = 0; i < exceljson.length; i++) {
$scope.data.push(exceljson[i]);
$scope.$apply();
}
}
});
}
if (xlsxflag) {
reader.readAsArrayBuffer($("#ngexcelfile")[0].files[0]);
}
else {
reader.readAsBinaryString($("#ngexcelfile")[0].files[0]);
}
};
});<html ng-app="app">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.7.7/xlsx.core.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/xls/0.7.4-a/xls.core.min.js"></script>
<script src="https://code.jquery.com/jquery-1.12.4.min.js"
crossorigin="anonymous"></script>
</head>
<body>
<div ng-app>
<h2>Excel Format should be same as table below, xls.core.min.js reads first row as headers</h2>
<div ng-controller="ExcelReadCtrl">
<form>
<input type="file" id="ngexcelfile" />
<input type="button" value="Read Data" ng-click="READ()" />
<br />
<br />
<table border=1>
<thead>
<tr>
<th>Last Name</th>
<th>First Name</th>
<th>Age</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="item in data">
<td>{{item.lastName}}</td>
<td>{{item.firstName}}</td>
<td>{{item.age}}</td>
</tr>
</tbody>
</table>
</form>
</div>
</div>
</body>
</html>
您的excel格式必须与您尝试加载的数据相同。以下是示例格式。加载Excel数据存储在$scope.data中后,使用相同的方法将其传递到后端

发布于 2018-04-30 17:30:24
不要试图在前端读取Excel,只需将excel上传到服务器即可。通过JS读取Excel将在浏览器中消耗大量的内存。
在Java端,读/写Excel非常容易,你所需要的就是Apache POI For Excel reading ref:https://www.mkyong.com/java/apache-poi-reading-and-writing-excel-file-in-java/
完成excel读取后,您可以将所需数据传递给hibernate以存储在DB中。
发布于 2018-04-30 17:57:28
我必须读取前面的excel文件,因为是用户通过上传接口导入Excel文件来更新表中的数据。
https://stackoverflow.com/questions/50097395
复制相似问题