当前位置: 首页 > news >正文

基于html5的购物商城网站做宾馆网站

基于html5的购物商城网站,做宾馆网站,得物app的网络营销分析论文,wordpress分类信息模板目录 0 EasyExcel简介1 Excel导出工具类设置自定义表头样式设置自适应列宽添加合计行 2 调用导出工具类导出Excel表3 测试结果 0 EasyExcel简介 在数据处理和报表生成的过程中#xff0c;Excel是一个非常常用的工具。特别是在Java开发中#xff0c;EasyExcel库因其简单高效而… 目录 0 EasyExcel简介1 Excel导出工具类设置自定义表头样式设置自适应列宽添加合计行 2 调用导出工具类导出Excel表3 测试结果 0 EasyExcel简介 在数据处理和报表生成的过程中Excel是一个非常常用的工具。特别是在Java开发中EasyExcel库因其简单高效而备受欢迎。 EasyExcel是阿里巴巴开源的一个Excel处理库特别适用于大数据量的Excel文件的读写。它的优点在于使用简单、性能高效特别适合在Java项目中处理Excel文件。 1 Excel导出工具类 Excel导出工具类ExcelUtil类代码如下 import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.support.ExcelTypeEnum; import com.alibaba.excel.write.builder.ExcelWriterBuilder; import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.metadata.style.WriteCellStyle; import com.alibaba.excel.write.metadata.style.WriteFont; import com.alibaba.excel.write.style.HorizontalCellStyleStrategy; import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; import lombok.Data; import org.apache.poi.ss.usermodel.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory;import javax.servlet.http.HttpServletResponse; import java.io.*; import java.net.URLEncoder; import java.util.List;Data public class ExcelUtil{public static void downloadExcelWithHead(HttpServletResponse response, List? list, String sheetName, ListListString rowHead) throws IOException {if (list.isEmpty()) {throw new IllegalArgumentException(列表不能为空);}Class? clazz list.get(0).getClass();response.setContentType(application/vnd.openxmlformats-officedocument.spreadsheetml.sheet);response.setCharacterEncoding(utf-8);String fileName URLEncoder.encode(sheetName, UTF-8).replaceAll(\\, %20);response.setHeader(Content-disposition, attachment;filename*utf-8 fileName .xlsx);ExcelWriter excelWriter EasyExcel.write(response.getOutputStream(), clazz).excelType(ExcelTypeEnum.XLSX).build();// 创建 ExcelWriterBuilderExcelWriterBuilder excelWriterBuilder EasyExcel.write(response.getOutputStream(), clazz).autoCloseStream(true).needHead(true);excelWriterBuilder.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy());excelWriterBuilder.useDefaultStyle(false);// 创建 WriteSheet 并设置动态标题行WriteSheet writeSheet EasyExcel.writerSheet(sheetName).head(rowHead) // 设置标题行.registerWriteHandler(setCellStyle()) // 设置表头样式.registerWriteHandler(new CustomCellWriteUtil()) // 设置列宽自适应.build();// 写入数据excelWriter.write(list, writeSheet);excelWriter.finish();}}设置自定义表头样式 其中downloadExcelWithHead()中调用setCellStyle()方法用于设置表头样式。setCellStyle()方法的代码如下 public static HorizontalCellStyleStrategy setCellStyle() {// 表头策略WriteCellStyle headWriteCellStyle new WriteCellStyle();// 背景设置为白色headWriteCellStyle.setFillForegroundColor(IndexedColors.WHITE.index);headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);headWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//边框headWriteCellStyle.setBorderBottom(BorderStyle.THIN);headWriteCellStyle.setBorderLeft(BorderStyle.THIN);headWriteCellStyle.setBorderRight(BorderStyle.THIN);headWriteCellStyle.setBorderTop(BorderStyle.THIN);//自动换行headWriteCellStyle.setWrapped(true);WriteFont headWriteFont new WriteFont();headWriteFont.setBold(true);headWriteFont.setFontName(宋体);headWriteFont.setFontHeightInPoints((short)12);headWriteCellStyle.setWriteFont(headWriteFont);// 内容的策略WriteCellStyle contentWriteCellStyle new WriteCellStyle();// 这里需要指定 FillPatternType 为FillPatternType.SOLID_FOREGROUND 不然无法显示背景颜色.头默认了 FillPatternType所以可以不指定contentWriteCellStyle.setFillPatternType(FillPatternType.SOLID_FOREGROUND);// 背景白色contentWriteCellStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex());contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//边框contentWriteCellStyle.setBorderBottom(BorderStyle.THIN);contentWriteCellStyle.setBorderLeft(BorderStyle.THIN);contentWriteCellStyle.setBorderRight(BorderStyle.THIN);contentWriteCellStyle.setBorderTop(BorderStyle.THIN);//自动换行contentWriteCellStyle.setWrapped(true);//文字WriteFont contentWriteFont new WriteFont();// 字体大小contentWriteFont.setFontHeightInPoints((short)12);contentWriteFont.setFontName(宋体);contentWriteCellStyle.setWriteFont(contentWriteFont);return new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);}设置自适应列宽 自适应列宽通过CustomCellWriteUtil类设置CustomCellWriteUtil类的代码如下 import com.alibaba.excel.enums.CellDataTypeEnum; import com.alibaba.excel.metadata.Head; import com.alibaba.excel.metadata.data.CellData; import com.alibaba.excel.metadata.data.WriteCellData; import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; import com.alibaba.excel.write.style.column.AbstractColumnWidthStyleStrategy; import org.apache.commons.collections4.CollectionUtils; import org.apache.poi.ss.usermodel.Cell;import java.util.HashMap; import java.util.List; import java.util.Map;/*** excel自适应列宽*/ public class CustomCellWriteUtil extends AbstractColumnWidthStyleStrategy {private static final int MAX_COLUMN_WIDTH 255;private MapInteger, MapInteger, Integer CACHE new HashMap(8);public CustomCellWriteUtil() {}protected void setColumnWidth(WriteSheetHolder writeSheetHolder, ListWriteCellData? cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {boolean needSetWidth isHead || !CollectionUtils.isEmpty(cellDataList);if (needSetWidth) {MapInteger, Integer maxColumnWidthMap (Map) CACHE.get(writeSheetHolder.getSheetNo());if (maxColumnWidthMap null) {maxColumnWidthMap new HashMap(16);CACHE.put(writeSheetHolder.getSheetNo(), maxColumnWidthMap);}Integer columnWidth this.dataLength(cellDataList, cell, isHead);if (columnWidth 0) {if (columnWidth 255) {columnWidth 255;}Integer maxColumnWidth (Integer) ((Map) maxColumnWidthMap).get(cell.getColumnIndex());if (maxColumnWidth null || columnWidth maxColumnWidth) {((Map) maxColumnWidthMap).put(cell.getColumnIndex(), columnWidth);writeSheetHolder.getSheet().setColumnWidth(cell.getColumnIndex(), 7250);}}}}private Integer dataLength(ListWriteCellData? cellDataList, Cell cell, Boolean isHead) {if (isHead) {return cell.getStringCellValue().getBytes().length;} else {CellData cellData (CellData) cellDataList.get(0);CellDataTypeEnum type cellData.getType();if (type null) {return -1;} else {switch (type) {case STRING:return cellData.getStringValue().getBytes().length;case BOOLEAN:return cellData.getBooleanValue().toString().getBytes().length;case NUMBER:return cellData.getNumberValue().toString().getBytes().length;default:return -1;}}}} }添加合计行 合计行用于展示数据的总和或其他统计信息。在Controller中调用downloadExcelWithHead()方法导出Excel时添加合计行和自定义表头形式。 2 调用导出工具类导出Excel表 此处以导出产品明细表为例新建产品表如下 entity、mapper、service层省略在Controller层中添加一个导出产品明细表接口代码如下 import com.z.entity.Product; import com.z.service.ProductService; import com.z.util.ConvertUtil; import com.z.util.ExcelUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; import java.util.List;RestController RequestMapping(/product) public class ProductController {Autowiredprivate ProductService productService;PostMapping(/export)public void export(HttpServletResponse response) throws IOException {ListProduct dataList productService.list();if(null dataList || dataList.isEmpty()){throw new RuntimeException(数据为空导出失败);}// 计算合计double totalProductCost dataList.stream().mapToDouble(data - data.getProductCost() ! null ? data.getProductCost() : 0.0).sum();int totalProductNum dataList.stream().mapToInt(data - data.getProductNum() ! null ? data.getProductNum() : 0).sum();// 创建合计行Product totalRow new Product();totalRow.setId(合计);totalRow.setProductCost(totalProductCost);totalRow.setProductNum(totalProductNum);// 添加合计行到列表dataList.add(totalRow);// 创建自定义表头ListListString rowHead createHead();// 导出 Excel(带标题列带合计列)ExcelUtil.downloadExcelWithHead(response, dataList, 产品明细表, rowHead);}/*** 设置Excel头* return*/private ListListString createHead() {ListListString list new ArrayList();// 第一列表头ListString headRow1 new ArrayList();headRow1.add(产品明细表报表);headRow1.add(test);headRow1.add(产品序号);list.add(headRow1);// 第二列表头ListString headRow2 new ArrayList();headRow2.add(产品明细表报表);headRow2.add(备注此处可调用方法取值);headRow2.add(产品编号);list.add(headRow2);// 第三列表头ListString headRow3 new ArrayList();headRow3.add(产品明细表报表);headRow3.add(备注此处可调用方法取值);headRow3.add(产品名称);list.add(headRow3);// 第四列表头ListString headRow4 new ArrayList();headRow4.add(产品明细表报表);headRow4.add(无);headRow4.add(产品进价);list.add(headRow4);// 第五列表头ListString headRow5 new ArrayList();headRow5.add(产品明细表报表);headRow5.add(测试);headRow5.add(产品库存);list.add(headRow5);return list;}其中在使用createHead()方法设置Excel头时可以调用service层中的方法自定义显示特定值。 3 测试结果 最终使用postman调用该导出接口导出的表格结果如下
http://www.tj-hxxt.cn/news/229373.html

相关文章:

  • 分销网站广告喷绘机器多少钱一台
  • 微软做网站市场调研公司的最主要职能是
  • 网站建设岗位叫什么wordpress 站内搜索
  • 淄博网站建设培训南昌推广软件
  • 网站内链设计wordpress主题 学校官网
  • 搜索引擎网站推广怎么做在线seo优化
  • 小型教育网站的开发建设论文为什么要更新网站
  • 建站工具官网遵化市城乡建设规划局网站
  • 西安网站建设案例wordpress滑动
  • 中山建设厅网站景区网络推广方案
  • 网站策划 ppt建设网站的建筑公司
  • 做网站的最终目的wordpress 时光网
  • 商业网站成功的原因在线营销推广
  • 北京购物网站建设建同城购物网站经历
  • 电商网站如何备案wordpress ftp存储
  • 湛江电气建站软件网站首页开发收费
  • 玉溪市建设厅官方网站网站备案IP与空间
  • 淘宝客网站建设教程梅县区住房和城市建设局网站
  • 百度助手官网企业优化网站
  • 开发网站用什么语言如何在阿里云自主建网站
  • 5000个网站资源做外链外贸网店
  • 网站优化公司排名深圳深圳网络营销公司
  • 泾川网站城镇建设规化图烟台市建设局网站
  • 网站建设如何入账如何做网站ppt
  • 贵阳网站开发外包公司代刷网网站怎么做
  • 企业网站pc优化淘客推广计划
  • 3d建模怎么做网站旋转快捷的网站建设排行榜
  • 商务网站建设毕业设计模板网站建设实践试卷
  • 东莞一站式网站建设广告联盟
  • 网站制作网站做网怎样选择网站建设