<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      簡單導出更新版---詳細

      1.導入依賴

      <!--easy-poi-->
      <dependency>
      <groupId>cn.afterturn</groupId>
      <artifactId>easypoi-spring-boot-starter</artifactId>
      <version>4.3.0</version>
      </dependency>
      2.編寫一個導出的類的方法

      package com.jx.util.api.util;
      import cn.afterturn.easypoi.excel.ExcelExportUtil;
      import cn.afterturn.easypoi.excel.entity.ExportParams;
      import org.apache.poi.ss.usermodel.Workbook;
      import org.springframework.stereotype.Component;
      import javax.servlet.ServletOutputStream;
      import javax.servlet.http.HttpServletResponse;
      import java.io.ByteArrayOutputStream;
      import java.net.URLEncoder;
      import java.util.List;

      @Component
      public class MyExcelImportUtil {


      /**
      * 簡單導出數據
      * @param tage 導出的表的名稱
      * @param list 要導出的數據
      * @param t 導出表的實體
      * @param response 響應流
      * @param <T>
      * @throws Exception
      */
      public static <T> void simplyExportExcel(String tage,List<T> list, T t, HttpServletResponse response) throws Exception {
      ExportParams params = new ExportParams();
      params.setSheetName(tage);
      params.setStyle(ExcelStyleUtil.class);
      Workbook workbook = ExcelExportUtil.exportExcel(params, t.getClass(), list);

      // 設置響應的ContentType和Header,告訴瀏覽器下載文件
      response.setContentType("application/vnd.ms-excel");
      response.setHeader("Access-Control-Expose-Headers","Content-Disposition");
      response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(tage+".xls", "UTF-8"));


      ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
      workbook.write(byteArrayOutputStream);
      byte[] bytes = byteArrayOutputStream.toByteArray();

      ServletOutputStream servletOutputStream = response.getOutputStream();

      int bufferSize = 1024 * 1024; // 1 兆字節(jié)
      int offset = 0;

      while (offset < bytes.length) {
      int remaining = bytes.length - offset;
      int chunkSize = Math.min(remaining, bufferSize);
      servletOutputStream.write(bytes, offset, chunkSize);
      offset += chunkSize;
      servletOutputStream.flush();
      }

      servletOutputStream.close();
      }
      }
      額外附加處理樣式的類
      package com.jx.util.api.util;

      import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
      import cn.afterturn.easypoi.excel.entity.params.ExcelForEachParams;
      import cn.afterturn.easypoi.excel.export.styler.IExcelExportStyler;
      import org.apache.poi.ss.usermodel.*;

      /**
      * @author 丁慶洋
      */
      public class ExcelStyleUtil implements IExcelExportStyler {
      private static final short STRING_FORMAT = (short) BuiltinFormats.getBuiltinFormat("TEXT");
      private static final short FONT_SIZE_TEN = 11;
      private static final short FONT_SIZE_ELEVEN = 13;
      private static final short FONT_SIZE_TWELVE = 10;
      /**
      * 大標題樣式
      */
      private CellStyle headerStyle;
      /**
      * 每列標題樣式
      */
      private CellStyle titleStyle;
      /**
      * 數據行樣式
      */
      private CellStyle styles;

      public ExcelStyleUtil(Workbook workbook) {
      this.init(workbook);
      }

      /**
      * 初始化樣式
      *
      * @param workbook
      */
      private void init(Workbook workbook) {
      this.headerStyle = initHeaderStyle(workbook);
      this.titleStyle = initTitleStyle(workbook);
      this.styles = initStyles(workbook);
      }

      /**
      * 大標題樣式
      *
      * @param color
      * @return
      */
      @Override
      public CellStyle getHeaderStyle(short color) {
      return headerStyle;
      }

      /**
      * 每列標題樣式
      *
      * @param color
      * @return
      */
      @Override
      public CellStyle getTitleStyle(short color) {
      return titleStyle;
      }

      /**
      * 數據行樣式
      *
      * @param parity 可以用來表示奇偶行
      * @param entity 數據內容
      * @return 樣式
      */
      @Override
      public CellStyle getStyles(boolean parity, ExcelExportEntity entity) {
      return styles;
      }

      /**
      * 獲取樣式方法
      *
      * @param dataRow 數據行
      * @param obj 對象
      * @param data 數據
      */
      @Override
      public CellStyle getStyles(Cell cell, int dataRow, ExcelExportEntity entity, Object obj, Object data) {
      return getStyles(true, entity);
      }

      /**
      * 模板使用的樣式設置
      */
      @Override
      public CellStyle getTemplateStyles(boolean isSingle, ExcelForEachParams excelForEachParams) {
      return null;
      }

      /**
      * 初始化--大標題樣式
      *
      * @param workbook
      * @return
      */
      private CellStyle initHeaderStyle(Workbook workbook) {
      CellStyle style = getBaseCellStyle(workbook);
      Font font = getFont(workbook, FONT_SIZE_TWELVE, true);
      font.setColor(Font.COLOR_RED);
      style.setFont(font);
      return style;
      }

      /**
      * 初始化--每列標題樣式
      *
      * @param workbook
      * @return
      */
      private CellStyle initTitleStyle(Workbook workbook) {
      CellStyle style = getBaseCellStyle(workbook);
      style.setFont(getFont(workbook, FONT_SIZE_ELEVEN, true));
      //背景色
      style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
      style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
      return style;
      }

      /**
      * 初始化--數據行樣式
      *
      * @param workbook
      * @return
      */
      private CellStyle initStyles(Workbook workbook) {
      CellStyle style = getBaseCellStyle(workbook);
      style.setFont(getFont(workbook, FONT_SIZE_TEN, false));
      style.setDataFormat(STRING_FORMAT);
      return style;
      }

      /**
      * 基礎樣式
      *
      * @return
      */
      private CellStyle getBaseCellStyle(Workbook workbook) {
      CellStyle style = workbook.createCellStyle();
      //下邊框
      style.setBorderBottom(BorderStyle.THIN);
      //左邊框
      style.setBorderLeft(BorderStyle.THIN);
      //上邊框
      style.setBorderTop(BorderStyle.THIN);
      //右邊框
      style.setBorderRight(BorderStyle.THIN);
      //水平居中
      style.setAlignment(HorizontalAlignment.CENTER);
      //上下居中
      style.setVerticalAlignment(VerticalAlignment.CENTER);
      //設置自動換行
      style.setWrapText(false);
      return style;
      }

      /**
      * 字體樣式
      *
      * @param size 字體大小
      * @param isBold 是否加粗
      * @return
      */
      private Font getFont(Workbook workbook, short size, boolean isBold) {
      Font font = workbook.createFont();
      //字體樣式
      font.setFontName("宋體");
      //是否加粗
      font.setBold(isBold);
      //字體大小
      font.setFontHeightInPoints(size);
      return font;
      }
      }
      3.接下來就是正式開始處理數據
      (1)對導出的實體進行處理

       時間的格式一樣要注意 格式不對 會導致 解析錯誤 導出不合理的數據

       一定記得加produces="application/octet-stream" 切記!!!!!!!

       處理數據 如果想要文字 進行封裝方法處理 

       當查詢條件是ids時 用

        來處理

       這是用的時候注意事項

       

       

      還有就是如果入參是多個id的時候 用post請求來寫 要不前端笨比不好處理

      posted @ 2024-06-13 15:19  一只小松許  閱讀(53)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 伊人激情一区二区三区av| 久久久久久久久毛片精品| 最近中文字幕日韩有码| 丁香花在线观看免费观看图片| 久久精品国产精品第一区| 色综合色国产热无码一| 成人精品区| 亚洲人成电影网站 久久影视| 成年女人片免费视频播放A| 国产区一区二区现看视频| 成人乱人伦精品小说| 好男人官网资源在线观看| 国产97色在线 | 免费| 国产极品精品自在线不卡| 女人下边被添全过视频的网址| 欧美日韩中文字幕视频不卡一二区 | 国产精品中文字幕第一页| 浓毛老太交欧美老妇热爱乱| 麻豆一区二区三区精品视频| 亚洲成在人线AⅤ中文字幕| 亚洲av激情一区二区三区| 亚洲熟妇自偷自拍另类| 亚洲中文一区二区av| 国产午夜精品福利91| 桃花岛亚洲成在人线AV| 亚洲精品日韩久久精品| 粉嫩av一区二区三区蜜臀| 国产在线观看黄| 亚洲综合小综合中文字幕| 国产高潮刺激叫喊视频| 亚洲AV日韩AV激情亚洲| 99久久婷婷国产综合精品青草漫画| 久久香蕉国产线看观看怡红院妓院| 日本一区二区三深夜不卡| 东安县| 久久精品国产亚洲精品色婷婷 | 亚洲无线码一区二区三区| 亚洲中文字幕国产综合| 老熟妇欲乱一区二区三区| 在线 | 国产精品99传媒a| 成人午夜视频一区二区无码 |