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

Java利用Easyexcel導(dǎo)出excel表格的示例代碼

 更新時間:2022年07月15日 14:28:21   作者:羈客%  
這篇文章主要為大家詳細介紹了Java利用Easyexcel導(dǎo)出excel表格的示例代碼,文中的代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下

1.導(dǎo)入 EasyExcel Maven包

<!--easyexcel 導(dǎo)出excel依賴-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>2.2.7</version>
</dependency>

2.配置

配置表格表頭樣式,以及內(nèi)容的寫入方式

import com.alibaba.excel.write.handler.SheetWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder;
import org.apache.poi.ss.usermodel.*;
 
import java.util.List;
 
 
public class EasyExcelWriteHandler implements SheetWriteHandler {
 
    /**
     * 表頭數(shù)據(jù)
     */
    private final List<String> headsDatas;
 
    /**
     * 內(nèi)容數(shù)據(jù)
     */
    private final List<List<String>> bodyDatas;
 
    /**
     * 表頭樣式
     */
    private CellStyle cellStyle;
 
    /**
     * 內(nèi)容樣式
     */
    private CellStyle cellStyleHeader;
 
 
    public EasyExcelWriteHandler(List<String> headsDatas, List<List<String>> bodyDatas) {
        this.headsDatas = headsDatas;
        this.bodyDatas = bodyDatas;
    }
 
 
    @Override
    public void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
 
    }
 
    @Override
    public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
        Workbook workbook = writeWorkbookHolder.getWorkbook();
        Sheet sheet = workbook.getSheetAt(0);
 
        // 表頭樣式
        if (cellStyleHeader == null) {
            cellStyleHeader = workbook.createCellStyle();
            cellStyleHeader.setAlignment(HorizontalAlignment.CENTER);
            cellStyleHeader.setVerticalAlignment(VerticalAlignment.CENTER);
            cellStyleHeader.setFillForegroundColor(IndexedColors.WHITE.getIndex());
            Font font = workbook.createFont();
            // 字體大小
            font.setFontHeightInPoints((short) 16);
            // 字體
            font.setFontName("微軟雅黑");
            //加粗
            font.setBold(true);
            cellStyleHeader.setFont(font);
        }
 
        // 內(nèi)容樣式
        if (cellStyle == null) {
            cellStyle = workbook.createCellStyle();
            cellStyle.setAlignment(HorizontalAlignment.CENTER);
            cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
            cellStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex());
            Font font = workbook.createFont();
            font.setFontName("微軟雅黑");
            font.setFontHeightInPoints((short) 12);
            cellStyle.setFont(font);
        }
 
        //表頭內(nèi)容
        Row row = sheet.getRow(0);
        if (row == null) {
            row = sheet.createRow(0);
        }
        //遍歷寫入表頭
        for (int rowInt = 0; rowInt < headsDatas.size(); rowInt++) {
            //獲取列內(nèi)容
            String cellValue = headsDatas.get(rowInt);
            //根據(jù)表頭內(nèi)容設(shè)置表頭列寬(自適應(yīng)表頭寬度)
            sheet.setColumnWidth(rowInt, cellValue.length() * 875);
            Cell cell = row.getCell(rowInt);
            if (cell == null) {
                cell = row.createCell(rowInt);
            }
            cell.setCellStyle(cellStyleHeader);
            cell.setCellValue(cellValue);
 
            //遍歷寫入內(nèi)容
            if (rowInt < bodyDatas.size()) {
                for (int bodyRowInt = 0; bodyRowInt < bodyDatas.get(rowInt).size(); bodyRowInt++) {
                    Row row0 = sheet.getRow(bodyRowInt + 1);
                    if (row0 == null) {
                        row0 = sheet.createRow(bodyRowInt + 1);
                    }
                    Cell cell0 = row0.getCell(rowInt);
                    if (cell0 == null) {
                        cell0 = row0.createCell(rowInt);
                    }
                    cell0.setCellStyle(cellStyle);
                    cell0.setCellValue(bodyDatas.get(rowInt).get(bodyRowInt));
                }
            }
        }
    }
}

3.輸出Excel到前端

  public static void easyUtil1(ExcelBody excelBody) throws IOException {
       //轉(zhuǎn)換內(nèi)容數(shù)據(jù)
       List<List<String>> list2 = new ArrayList<>();
        for (List<Object> objects : excelBody.getBodyDatas()) {
            List<String> strs = new ArrayList<>();
            for (Object object : objects) {
                strs.add(String.valueOf(object));
            }
            list2.add(strs);
        }
        //設(shè)置表名
        String simpleDateFormat = new String((new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())).getBytes(), "UTF-8");
        //設(shè)置字符編碼
        response.setCharacterEncoding("utf-8");
        //設(shè)置內(nèi)容類型
        response.setContentType("application/vnd.ms-excel");
        //設(shè)置標(biāo)題
        response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(excelBody.getFileName() + simpleDateFormat + ".xlsx", "utf-8"));
        //核心代碼
        //方式一:
       //EasyExcel.write(response.getOutputStream()).head(list2).sheet("sheet1").doWrite(list2);
        //方式二:
        ExcelWriterBuilder writerBuilder = EasyExcel.write(response.getOutputStream());
        writerBuilder.registerWriteHandler(new EasyExcelWriteHandler(excelBody.getHeads(), list2));
        ExcelWriter excelWriter = writerBuilder.build();
        ExcelWriterSheetBuilder writerSheetBuilder = EasyExcel.writerSheet("Sheet1");
        excelWriter.write(new ArrayList<>(), writerSheetBuilder.build());
        excelWriter.finish();
    }
@Data
public class ExcelBody {
 
    /**
     * 文件名
     */
    private String fileName;
 
    /**
     * 表頭
     */
    private List<String> heads;
 
    /**
     * 數(shù)據(jù)體
     */
    private List<List<Object>> bodyDatas;
}

到此這篇關(guān)于Java利用Easyexcel導(dǎo)出excel表格的示例代碼的文章就介紹到這了,更多相關(guān)Java Easyexcel導(dǎo)出excel內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot的三大開發(fā)工具小結(jié)

    SpringBoot的三大開發(fā)工具小結(jié)

    本文主要介紹了SpringBoot的三大開發(fā)工具,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-02-02
  • spring mvc 和ajax異步交互完整實例代碼

    spring mvc 和ajax異步交互完整實例代碼

    本篇文章主要介紹了spring mvc 和ajax異步交互完整實例代碼,簡單的AJAX+SpringMVC的異步交互小例子,有興趣的可以了解一下。
    2017-02-02
  • mybatisPlus中批量刪除的示例代碼

    mybatisPlus中批量刪除的示例代碼

    本文主要介紹了mybatisPlus中批量刪除的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 詳解SpringBoot如何刪除引用jar包中的無用bean

    詳解SpringBoot如何刪除引用jar包中的無用bean

    為了趕速度和直接將之前多模塊的maven項目中的部分模塊,直接以jar包的形式引入到新項目中了,雖然省去了不少開發(fā)時間,導(dǎo)致項目臃腫,啟動很慢。本文將用@ComponentScan注解去實現(xiàn)讓項目只加載自己需要的bean,需要的可以參考一下
    2022-06-06
  • Java根據(jù)控制臺實現(xiàn)定位異常

    Java根據(jù)控制臺實現(xiàn)定位異常

    這篇文章主要介紹了Java根據(jù)控制臺定位異常,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • Java concurrency線程池之線程池原理(四)_動力節(jié)點Java學(xué)院整理

    Java concurrency線程池之線程池原理(四)_動力節(jié)點Java學(xué)院整理

    這篇文章主要為大家詳細介紹了Java concurrency線程池之線程池原理,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • springboot中filter的用法詳解

    springboot中filter的用法詳解

    本篇文章主要介紹了springboot中filter的用法詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • Mybatis創(chuàng)建逆向工程的步驟

    Mybatis創(chuàng)建逆向工程的步驟

    Mybatis逆向工程是一個自動生成Mybatis Mapper接口、XML文件和Java實體類的工具,可以提高開發(fā)效率,避免手動編寫大量的重復(fù)代碼,本文主要介紹了Mybatis創(chuàng)建逆向工程的步驟,感興趣的可以了解一下
    2023-10-10
  • 詳解application.properties和application.yml文件的區(qū)別

    詳解application.properties和application.yml文件的區(qū)別

    這篇文章主要介紹了詳解application.properties和application.yml文件的區(qū)別,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • 使用Java實現(xiàn)將ppt轉(zhuǎn)換為文本

    使用Java實現(xiàn)將ppt轉(zhuǎn)換為文本

    這篇文章主要為大家詳細介紹了如何使用Java實現(xiàn)將ppt轉(zhuǎn)換為文本,文中的示例代碼簡潔易懂,具有一定的借鑒價值,有需要的小伙伴可以參考下
    2024-01-01

最新評論

荔波县| 镇江市| 都江堰市| 贡觉县| 固安县| 辽源市| 阜阳市| 宁明县| 大化| 永善县| 曲阜市| 惠东县| 锡林浩特市| 筠连县| 仙游县| 阿克陶县| 巴林右旗| 澄迈县| 榆林市| 百色市| 阳东县| 裕民县| 咸阳市| 临沧市| 眉山市| 天津市| 五家渠市| 浏阳市| 利津县| 甘泉县| 太谷县| 巨野县| 墨竹工卡县| 涿州市| 三亚市| 安丘市| 本溪| 阿鲁科尔沁旗| 通化市| 阿拉尔市| 星座|