直接上代码
gradle依赖
//hadoop
compile("org.apache.hadoop:hadoop-client:3.3.1")
附上使用的依赖
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.metadata.Sheet;
import com.alibaba.excel.support.ExcelTypeEnum;
import org.springframework.data.domain.Page;
import org.springframework.data.web.PageableDefault;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import java.io.ByteArrayOutputStream;
controller层
@GetMapping(value = "URL")
public ResponseEntity<byte[]> downTerminalFileHdfs(@PageableDefault SimPageable pageable)
{
pageable.setPage(1);
pageable.setSize(Integer.MAX_VALUE);
//获取实体类对象
Page<Sim> page = simService.findPage(pageable);
//放入excel对象的list
List<SimExportExcelModel> list = new ArrayList<>();
for (Sim sim : page.getContent())
{
list.add(new SimExportExcelModel(sim));
}
ByteArrayOutputStream out = new ByteArrayOutputStream();
Sheet sheet = new Sheet(1, 0, SimExportExcelModel.class);
//设置分页名
sheet.setSheetName("sheet1");
sheet.setAutoWidth(Boolean.TRUE);
ExcelWriter writer = new ExcelWriter(out, ExcelTypeEnum.XLSX, true);
writer.write(list, sheet);
writer.finish();
// //这种和下面创建返回对象效果一样,均可以使用
// HttpHeaders headers = new HttpHeaders();
// headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
// //excelTest.xlsx是导出文件名,测试写死
// headers.setContentDispositionFormData("attachment", "excelTest.xlsx");
// ResponseEntity<byte[]> responseEntity = new ResponseEntity<byte[]>(out.toByteArray(), headers, HttpStatus.OK);
HttpHeaders headers = new HttpHeaders();
//excelTest.xlsx是导出文件名,测试写死
headers.add("Content-Disposition", String.format("attachment;filename=%s",
"excelTest.xlsx"));
headers.add("Cache-Control", "no-cache,no-store,must-revalidate");
headers.add("Pragma", "no-cache");
headers.add("Expires", "0");
ResponseEntity<byte[]> responseEntity = ResponseEntity.ok()
.headers(headers)
.contentLength(out.toByteArray().length)
.contentType(MediaType.parseMediaType("application/octet-stream"))
.body(out.toByteArray());
return responseEntity;
}
EXCEL对象
@Data
public class SimExportExcelModel extends BaseRowModel
{
@ExcelProperty(value = "XX", index = 0)
public String createdAt;
@ExcelProperty(value = "XX", index = 1)
public String iccid;
@ExcelProperty(value = "XX", index = 2)
public String terminalStatus = SimTerminalStatusItem.unProduced.getValue();
@ExcelProperty(value = "XX", index = 3)
public String statusItem;
@ExcelProperty(value = "XX", index = 4)
public String purposeItem;
@ExcelProperty(value = "XX", index = 5)
public String supplierItem;
//创建构造防范
public SimExportExcelModel(Sim sim)
{
//略
}
}
以上