Spring Boot实战之导出excel,并上传存入Azure Storage
来源:互联网 发布:电子数据交换技术 编辑:程序博客网 时间:2024/06/09 20:45
Spring Boot实战之导出excel
本文使用Apache POI实现excel文档的导出。 实现从数据库读取数据——生成excel——上传到AzureStorage的流程
数据库操作,及文件上传AzureStorage的流程可以参考之前的文章
http://blog.csdn.net/sun_t89/article/details/51912905
http://blog.csdn.net/sun_t89/article/details/51956392
Apache POI详细操作,可以参考
http://www.cnblogs.com/LiZhiW/p/4313789.html?utm_source=tuicool&utm_medium=referral
1、修改pom.xml,添加Apache POI库
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.14</version></dependency>
2、添加导出数据表的数据模型
package com.xiaofangtech.sunt.bean;import java.math.BigDecimal;import java.util.Date;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.Table;@Entity@Table(name="t_statistics")public class StatisticsInfo {@Id@GeneratedValue(strategy = GenerationType.AUTO)private long id;private BigDecimal money;private String description;private Date currentdate;public long getId() {return id;}public void setId(long id) {this.id = id;}public BigDecimal getMoney() {return money;}public void setMoney(BigDecimal money) {this.money = money;}public String getDescription() {return description;}public void setDescription(String description) {this.description = description;}public Date getCurrentdate() {return currentdate;}public void setCurrentdate(Date currentdate) {this.currentdate = currentdate;}}
package com.xiaofangtech.sunt.repository;import org.springframework.data.repository.CrudRepository;import com.xiaofangtech.sunt.bean.StatisticsInfo;public interface StatisticsRepository extends CrudRepository<StatisticsInfo, Long>{}4、创建ExcelController,读取数据库,生成excel文件,并上传到AzureStorage
package com.xiaofangtech.sunt.controller;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.UUID;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFCellStyle;import org.apache.poi.hssf.usermodel.HSSFDataFormat;import org.apache.poi.hssf.usermodel.HSSFFont;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import com.microsoft.azure.storage.blob.CloudBlobContainer;import com.microsoft.azure.storage.blob.CloudBlockBlob;import com.xiaofangtech.sunt.bean.StatisticsInfo;import com.xiaofangtech.sunt.repository.StatisticsRepository;import com.xiaofangtech.sunt.storage.BlobHelper;import com.xiaofangtech.sunt.storage.StorageConfig;import com.xiaofangtech.sunt.utils.ResultMsg;import com.xiaofangtech.sunt.utils.ResultStatusCode;@RestController@RequestMapping("excel")public class ExcelController {@Autowiredprivate StatisticsRepository statisticsRepository;@Autowiredprivate StorageConfig storageConfig;/*** * 创建表头 * @param workbook * @param sheet */private void createTitle(HSSFWorkbook workbook, HSSFSheet sheet){HSSFRow row = sheet.createRow(0);//设置列宽,setColumnWidth的第二个参数要乘以256,这个参数的单位是1/256个字符宽度sheet.setColumnWidth(2, 12*256);sheet.setColumnWidth(3, 17*256);//设置为居中加粗HSSFCellStyle style = workbook.createCellStyle();HSSFFont font = workbook.createFont();font.setBold(true);style.setAlignment(HSSFCellStyle.ALIGN_CENTER);style.setFont(font);HSSFCell cell;cell = row.createCell(0);cell.setCellValue("序号");cell.setCellStyle(style);cell = row.createCell(1);cell.setCellValue("金额");cell.setCellStyle(style);cell = row.createCell(2);cell.setCellValue("描述");cell.setCellStyle(style);cell = row.createCell(3);cell.setCellValue("日期");cell.setCellStyle(style);}/*** * 获取excel数据 * @return 返回文件名称及excel文件的URL * @throws IOException */@SuppressWarnings({ "unchecked", "rawtypes" })@RequestMapping("getExcel")public Object getExcel() throws IOException{HSSFWorkbook workbook = new HSSFWorkbook();HSSFSheet sheet = workbook.createSheet("统计表");createTitle(workbook, sheet);List<StatisticsInfo> entities = (List<StatisticsInfo>) statisticsRepository.findAll();//设置日期格式HSSFCellStyle style=workbook.createCellStyle();style.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));//新增数据行,并且设置单元格数据int rowNum = 1;for (StatisticsInfo statisticsInfo:entities) {HSSFRow row = sheet.createRow(rowNum);row.createCell(0).setCellValue(statisticsInfo.getId());row.createCell(1).setCellValue(statisticsInfo.getMoney().toString());row.createCell(2).setCellValue(statisticsInfo.getDescription());HSSFCell cell = row.createCell(3);cell.setCellValue(statisticsInfo.getCurrentdate());cell.setCellStyle(style);rowNum++;}//拼装blobNameString fileName = "测试数据统计表.xlsx";SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");String dateTime = dateFormat.format(new Date());String blobName = dateTime + "/" + UUID.randomUUID().toString().replaceAll("-", "") + "/" + fileName;//获取或创建containerCloudBlobContainer blobContainer = BlobHelper.getBlobContainer("temp", storageConfig);//设置文件类型,并且上传到azure blobtry {CloudBlockBlob blob = blobContainer.getBlockBlobReference(blobName);ByteArrayOutputStream out = new ByteArrayOutputStream();workbook.write(out);ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray());blob.upload(in, out.toByteArray().length);Map map = new HashMap();map.put("fileName", fileName);map.put("excelUrl", blob.getUri().toString());ResultMsg resultMsg = new ResultMsg(ResultStatusCode.OK.getErrcode(),ResultStatusCode.OK.getErrmsg(), map);return resultMsg;} catch (Exception e){ResultMsg resultMsg = new ResultMsg(ResultStatusCode.SYSTEM_ERR.getErrcode(),ResultStatusCode.SYSTEM_ERR.getErrmsg(), null);return resultMsg;}}}
5、运行测试
调用接口,获取生成excel后的url
直接使用excelURL下载excel文件,打开文件后如下所示
6、
1 0
- Spring Boot实战之导出excel,并上传存入Azure Storage
- Spring Boot实战之文件上传存入Azure Storage
- Spring Boot实战之导出excel
- 上传Excel文件并读取存入数据库
- Spring Boot+AngularJS导出excel
- Spring Boot+AngularJS导出excel
- gridview导出excel并上传
- 上传excel文件并在服务器端读取存入数据库
- spring boot使用AbstractXlsView导出excel
- Spring Boot--POI导出excel文件下载
- Spring Boot实战之入门
- Spring Boot实战之单元测试
- Spring Boot实战之单元测试
- Spring Boot实战之Maven
- spring boot实战之JSP
- Spring Boot实战之单元测试
- spring boot之文件上传
- Azure Blob Storage 基本用法 -- Azure Storage 之 Blob
- 关于block使用的5点注意事项
- 解读jQuery筛选器children()
- c++回调函数
- 【POJ】1985 - Cow Marathon(树的直径)
- phash安装
- Spring Boot实战之导出excel,并上传存入Azure Storage
- 获取APP的版本信息或者UUID
- 欧拉函数总结
- Java编程实战宝典学习笔记——第一章Java的开发运行环境
- Js高级笔记
- 运用扩展实体构建链表
- iOS 内存管理
- PID控制算法的C语言实现一 PID算法原理
- Redis Memcache SSDB比较