最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot中EasyPoi實(shí)現(xiàn)自動新增序號的方法

 更新時(shí)間:2021年09月27日 08:49:19   作者:御風(fēng)尋  
本文主要介紹了EasyPoi實(shí)現(xiàn)自動新增序號,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

方式一:

新增一個(gè)名為序號的列,設(shè)置導(dǎo)出格式為:isAddIndex

不要在ExportParams 中設(shè)置addIndex 為true 這個(gè)沒啥用

List<ExcelExportEntity> colList = new ArrayList<ExcelExportEntity>();
//自動新增首列序號
ExcelExportEntity xh = new ExcelExportEntity("序號", "xh");
xh.setFormat("isAddIndex");
colList.add(xh);


方式二:

第一步:重新定義一個(gè)ExcelExportUtil(easypoi 中的ExcelExportUtil是被final 修飾的)

如下圖所示: SubExcelExportService是我們繼承easypoi 的ExcelExportService 并重寫了insertDataToSheet()方法。

import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.Collection;
import java.util.List;
 
import javax.servlet.http.HttpServletResponse;
 
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
 
public class ExcelExportUtil {
 
    public static Workbook exportExcel(ExportParams entity, List<ExcelExportEntity> entityList, Collection<?> dataSet) {
        Workbook workbook =getWorkbook(entity.getType(),dataSet.size());;
        new SubExcelExportService().createSheetForMap(workbook, entity, entityList, dataSet);
        return workbook;
    }
 
    public static Workbook exportExcel(ExportParams entity, Class<?> pojoClass, Collection<?> dataSet) {
        Workbook workbook =getWorkbook(entity.getType(), dataSet.size());
        new SubExcelExportService().createSheet(workbook, entity, pojoClass, dataSet);
        return workbook;
    }
 
    private static Workbook getWorkbook(ExcelType type, int size) {
        if (ExcelType.HSSF.equals(type)) {
            return new HSSFWorkbook();
        } else if (size < 100000) {
            return new XSSFWorkbook();
        } else {
            return new SXSSFWorkbook();
        }
    }
 
    public static void exportExcel(HttpServletResponse response, Workbook workbook) throws Exception {
        response.reset();
        response.setContentType("application/vnd.ms-excel");
        String fileName = System.currentTimeMillis() + ".xlsx";
        response.setHeader("Content-disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8"));
        response.setCharacterEncoding("UTF-8");
        OutputStream output = response.getOutputStream();
        workbook.write(output);
        workbook.close();
        output.close();
    }
}

第二步:繼承ExcelExportService 并重寫insertDataToSheet()方法

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
 
import org.apache.poi.ss.usermodel.Drawing;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
 
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.afterturn.easypoi.excel.export.ExcelExportService;
import cn.afterturn.easypoi.excel.export.styler.IExcelExportStyler;
import cn.afterturn.easypoi.exception.excel.ExcelExportException;
import cn.afterturn.easypoi.exception.excel.enums.ExcelExportEnum;
import cn.afterturn.easypoi.util.PoiExcelGraphDataUtil;
 
public class SubExcelExportService extends ExcelExportService {
    private static intMAX_NUM= 60000;
 
    @Override
    protected void insertDataToSheet(Workbook workbook, ExportParams entity, List<ExcelExportEntity> entityList,
                                     Collection<?> dataSet, Sheet sheet) {
        try {
            dataHandler = entity.getDataHandler();
            if (dataHandler != null && dataHandler.getNeedHandlerFields() != null) {
                needHandlerList = Arrays.asList(dataHandler.getNeedHandlerFields());
            }
            dictHandler = entity.getDictHandler();
            i18nHandler = entity.getI18nHandler();
            // 創(chuàng)建表格樣式
            setExcelExportStyler(
                    (IExcelExportStyler) entity.getStyle().getConstructor(Workbook.class).newInstance(workbook));
            Drawing patriarch = PoiExcelGraphDataUtil.getDrawingPatriarch(sheet);
            List<ExcelExportEntity> excelParams = new ArrayList<ExcelExportEntity>();
            if (entity.isAddIndex()) {
                excelParams.add(indexExcelEntity(entity));
            }
            excelParams.addAll(entityList);
            int index = entity.isCreateHeadRows() ? createHeaderAndTitle(entity, sheet, workbook, excelParams) : 0;
            int titleHeight = index;
            setCellWith(excelParams, sheet);
            setColumnHidden(excelParams, sheet);
            short rowHeight = entity.getHeight() != 0 ? entity.getHeight() : getRowHeight(excelParams);
            setCurrentIndex(1);
            Iterator<?> its = dataSet.iterator();
            List<Object> tempList = new ArrayList<Object>();
            while (its.hasNext()) {
                Object t = its.next();
                index += createCells(patriarch, index, t, excelParams, sheet, workbook, rowHeight, 0)[0];
                tempList.add(t);
                if (index >=MAX_NUM) {
                    break;
                }
            }
            if (entity.getFreezeCol() != 0) {
                sheet.createFreezePane(entity.getFreezeCol(), 0, entity.getFreezeCol(), 0);
            }
 
            mergeCells(sheet, excelParams, titleHeight);
 
            its = dataSet.iterator();
            for (int i = 0, le = tempList.size(); i < le; i++) {
                its.next();
                its.remove();
            }
            if (LOGGER.isDebugEnabled()) {
LOGGER.debug("List data more than max ,data size is {}", dataSet.size());
            }
            // 發(fā)現(xiàn)還有剩余l(xiāng)ist 繼續(xù)循環(huán)創(chuàng)建Sheet
            if (dataSet.size() > 0) {
                createSheetForMap(workbook, entity, entityList, dataSet);
            } else {
                // 創(chuàng)建合計(jì)信息
                addStatisticsRow(getExcelExportStyler().getStyles(true, null), sheet);
            }
 
        } catch (Exception e) {
LOGGER.error(e.getMessage(), e);
            throw new ExcelExportException(ExcelExportEnum.EXPORT_ERROR, e.getCause());
        }
    }

第三步:設(shè)置導(dǎo)出文件的時(shí)候自動新增序號

ExportParams params = new ExportParams();

params.setAddIndex(true);

注意事項(xiàng):ExcelExportUtil需要使用我們自己定義的(不要使用easyPoi的),ExcelExportUtil.exportExcel()中的 ExcelExportService 一定要使用我們自己定義的SubExcelExportService詳細(xì)參考上圖中的示例。

到此這篇關(guān)于springboot中EasyPoi實(shí)現(xiàn)自動新增序號的方法的文章就介紹到這了,更多相關(guān)springboot中EasyPoi自動新增序號內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java內(nèi)部測試類代碼詳解

    java內(nèi)部測試類代碼詳解

    這篇文章主要介紹了java內(nèi)部測試類代碼詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • SpringBoot3實(shí)現(xiàn)webclient的通用方法詳解

    SpringBoot3實(shí)現(xiàn)webclient的通用方法詳解

    Spring Boot WebClient 是 Spring Framework 5 中引入的一個(gè)新的響應(yīng)式 Web 客戶端,用于異步和響應(yīng)式地與外部服務(wù)進(jìn)行通信,下面我們就來看看SpringBoot3實(shí)現(xiàn)webclient的通用方法吧
    2024-04-04
  • Java?try?catch語句異常處理詳解

    Java?try?catch語句異常處理詳解

    這篇文章主要給大家介紹了關(guān)于Java?try?catch語句異常處理的相關(guān)資料,Java中的try-catch用于捕獲和處理異常,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • 關(guān)于Spring源碼是如何解決Bean的循環(huán)依賴

    關(guān)于Spring源碼是如何解決Bean的循環(huán)依賴

    這篇文章主要介紹了關(guān)于Spring源碼是如何解決Bean的循環(huán)依賴,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 談?wù)剬ava多態(tài)性的一點(diǎn)理解

    談?wù)剬ava多態(tài)性的一點(diǎn)理解

    多態(tài)就是指程序中定義的引用變量所指向的具體類型和通過該引用變量發(fā)出的方法調(diào)用在編程時(shí)并不確定,而是在程序運(yùn)行期間才確定,即一個(gè)引用變量倒底會指向哪個(gè)類的實(shí)例對象,該引用變量發(fā)出的方法調(diào)用到底是哪個(gè)類中實(shí)現(xiàn)的方法,必須在由程序運(yùn)行期間才能決定
    2017-08-08
  • Java設(shè)計(jì)模式之備忘錄模式實(shí)現(xiàn)對象狀態(tài)的保存和恢復(fù)

    Java設(shè)計(jì)模式之備忘錄模式實(shí)現(xiàn)對象狀態(tài)的保存和恢復(fù)

    本文介紹Java設(shè)計(jì)模式之備忘錄模式,該模式可以實(shí)現(xiàn)對象狀態(tài)的保存和恢復(fù)。通過詳細(xì)講解備忘錄模式的原理、實(shí)現(xiàn)方法和應(yīng)用場景,幫助讀者深入理解該設(shè)計(jì)模式,并提供示例代碼和技巧,便于讀者實(shí)際應(yīng)用
    2023-04-04
  • SpringBoot定時(shí)監(jiān)聽RocketMQ的NameServer問題及解決方案

    SpringBoot定時(shí)監(jiān)聽RocketMQ的NameServer問題及解決方案

    這篇文章主要介紹了SpringBoot定時(shí)監(jiān)聽RocketMQ的NameServer問題及解決方案,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-12-12
  • DWR異常情況處理常見方法解析

    DWR異常情況處理常見方法解析

    這篇文章主要介紹了DWR異常情況處理常見方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • java實(shí)現(xiàn)登錄驗(yàn)證碼功能

    java實(shí)現(xiàn)登錄驗(yàn)證碼功能

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)登錄驗(yàn)證碼功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • java多線程實(shí)現(xiàn)下載圖片并壓縮

    java多線程實(shí)現(xiàn)下載圖片并壓縮

    這篇文章主要為大家詳細(xì)介紹了java多線程實(shí)現(xiàn)下載圖片并壓縮,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05

最新評論

红桥区| 平武县| 渑池县| 鄄城县| 吉安市| 高青县| 铁岭市| 溆浦县| 静安区| 始兴县| 许昌市| 杭锦旗| 大荔县| 东山县| 马鞍山市| 宁安市| 宜宾县| 平利县| 织金县| 丹东市| 平湖市| 抚州市| 镇安县| 潮安县| 思茅市| 凤山市| 扬中市| 门源| 岳普湖县| 太仓市| 伊吾县| 新蔡县| 婺源县| 宜兰县| 绥宁县| 兴安盟| 甘谷县| 贡觉县| 满洲里市| 澄城县| 汝南县|