Я показываю в отчете таблицу. Таблица генерируется из данных ответа.
Таблицу можно отсортировать, нажав на заголовок. Таким образом, после сортировки данных, когда я пытаюсь экспортировать данные в Excel, я отправляю данные с помощью запроса Post, который, как я знаю, не является способом сделать это, потому что для загрузки Excel необходимо отправить запрос get. Но есть ли какой-нибудь возможный способ сделать это с помощью запроса Post? Я сделал, прежде чем использовать запрос Get. Возможно ли это сделать?
Вот мой код, использующий почтовый запрос, который не работает. Я использую angularjs в передней части. Пожалуйста, направьте меня в этом вопросе. Буду благодарен.
API:
@RequestMapping(value = "/download-base-report-excel", method = RequestMethod.GET)
public void downloadBaseReportExcel(@RequestBody ReportDTO reportDTO, HttpServletResponse response) throws IOException {
String fileName = "Excel Report.xls";
HSSFWorkbook workbook = reportService.downloadBaseReportExcel(reportDTO);
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
workbook.write(response.getOutputStream());
response.getOutputStream().close();
}
В AngularJS:
$scope.downloadExcel = function(reportData){
var reportDTO = reportData;
restservice.get( reportDTO, "api/v1/report/download-base-report-excel).then(function(response) {
if (response != null) {
console.log(response);
}
});
};
В представлении:
<div id="report-chart" class="table-responsive">
<table class="table table-bordered table-hover table-striped">
<thead class="bg-teal bg-lighten-5">
<tr>
<th ng-repeat="header in reportData.reportColsModels">{{header.name}}</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="rowModels in reportData.reportRowsModels">
<td ng-repeat="model in rowModels">{{model.value}}</td>
</tr>
<tr ng-show="reportData.reportRowsModels === 0">
<td colspan="5" class="text-muted">No data found</td>
</tr>
</tbody>
</table>
</div>
<div class="" style="text-align: right">
<a ng-click="downloadExcel(reportData)" class="btn btn-outline-primary"><i class="fas fa-file-download"></i>Export to Excel</a>
</div>