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

Java使用Poi導出Excel表格方法實例

 更新時間:2023年10月12日 09:57:32   作者:wry2000  
這篇文章主要給大家介紹了關于Java使用Poi導出Excel表格的相關資料,Java POI是一個用于操作Microsoft Office格式的Java API庫,可以使用它來導出Excel文件,需要的朋友可以參考下

一、導出下面的表格

二、流程詳解

        1、導出excel需要先將數(shù)據(jù)準備好

        2、創(chuàng)建工作傅對象SXSSFWorkbook

        3、使用工作傅對象創(chuàng)建sheet對象(工作頁)

        4、使用sheet對象創(chuàng)建行對象row(行對象)

        5、使用row對象創(chuàng)建cell對象(單元格對象)

        6、將數(shù)據(jù)依次插入對應的單元格

        7、創(chuàng)建excel文件,寫入數(shù)據(jù)

三、代碼

3.1、依賴

  <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.14</version>
        </dependency>

注意:本文使用的是SXSSFSheet對象,所以使用的是上面的依賴

3.2、主要代碼

3.2.1、實體類

import lombok.Data;
@Data
public class MyCell {
    private int top;
    private int below;
    private int left;
    private int right;
    public MyCell(){}
    public MyCell(int top,int below,int left,int right){
        this.top = top;
        this.below = below;
        this.left = left;
        this.right = right;
    }
}

3.2.2、工具類

public class ExportUtil
{
    public static void main(String[] args)
    {
        //1、準備數(shù)據(jù)
        List<HashMap<String,List<List<String>>>> list = new ArrayList<>();//存放一個excel文件所有數(shù)據(jù)(可放多個sheet頁)
        HashMap<String,List<List<String>>> map = new HashMap<>();//存放一個sheet頁所有數(shù)據(jù)
        List<List<String>> titleList = new ArrayList<>();//存放一個sheet頁表頭數(shù)據(jù)
        List<List<String>> bodyList = new ArrayList<>();//存放一個sheet頁表體數(shù)據(jù)
        List<String> title = new ArrayList<>();//存一行表頭數(shù)據(jù)
        List<String> body = null;//存一行表體數(shù)據(jù)
        int length = 8;//-------------------------每行8個數(shù)據(jù),即8列表格
        title.add("報表表體");
        for (int i = 0; i < 7; i++) {
            title.add("");
        }
        titleList.add(title);//把第一行表頭數(shù)據(jù)放入titleList
        title = new ArrayList<>();
        title.add("代碼 : 000000");
        for (int i = 0; i < 3; i++){
            title.add("");
        }
        title.add("報告期 : 2023年6月");
        for (int i = 0; i < length - 5; i++){
            title.add("");
        }
        titleList.add(title);//把第二行表頭數(shù)據(jù)放入titleList
        String str1 = "";
        for (int i = 0; i <= 8; i++){//放8行表體數(shù)據(jù)
            body = new ArrayList<>();
            for (int j = 0; j < length; j++) {
                body.add(i + 1 + "行" + (j + 1) + "列");
            }
            bodyList.add(body);//把第i行表體數(shù)據(jù)放入bodyList
        }
        map.put("title_key",titleList);//把一個sheet頁表頭數(shù)據(jù)放入map
        map.put("body_key",bodyList);//把一個sheet頁表體數(shù)據(jù)放入map
        list.add(map);//把一個sheet頁的所有數(shù)據(jù)放list
        //--------------------------------------------------------------數(shù)據(jù)已準備完畢
        //2、創(chuàng)建工作傅(即一個excel對象,可以包含多個sheet對象)
        SXSSFWorkbook wb = new SXSSFWorkbook(500);//創(chuàng)建一個工作副本,保留500條數(shù)據(jù)在內(nèi)存中
        for (int i = 0;i < list.size(); i++){
            HashMap<String,List<List<String>>> map1 = list.get(i);//獲取一個sheet頁的所有數(shù)據(jù)
            exportExcelFiles(wb,map1,"第一頁");//將一個sheet頁的所有數(shù)據(jù)插入wb對象中
        }
        //--------------------------------------------------------------數(shù)據(jù)已插入完畢
        //3、創(chuàng)建excel文件,并寫入數(shù)據(jù)
        FileOutputStream fos = null;
        File file = new File("D:\\" + "00年的大帥哥" + ".xls");
        try {
            fos = new FileOutputStream(file);
            wb.write(fos);//寫入數(shù)據(jù)
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (fos != null) {
                    fos.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            System.out.println("------------導出成功-------------");
        }
    }
    //插入數(shù)據(jù)
    public static void exportExcelFiles(SXSSFWorkbook wb,HashMap<String,List<List<String>>> map,String name)
    {
        //1、準備數(shù)據(jù)
        List<List<String>> head = map.get("title_key");//取出表頭數(shù)據(jù)
        List<List<String>> body = map.get("body_key");//取出表體數(shù)據(jù)
        int rowEleCount = body.get(0).size();//表體一共多少列
        //2、創(chuàng)建一個sheet對象并插入數(shù)據(jù)
        SXSSFSheet sheet = wb.createSheet(name);//創(chuàng)建一個工作頁,并設置sheet的name
        //wb.setSheetName(0,name);//設置sheet名字,可以根據(jù)下標設置sheet的name
        sheet.setDefaultColumnWidth(20);//設置默認列寬
        mergeCell(sheet,rowEleCount);//---------------------------------------------------------先合并表頭的單元格
        List<CellStyle> headStyleList = getHeadCellStyleList(wb);// 獲取一個表頭樣式集合
        List<CellStyle> bodyStyleList = getBodyCellStyleList(wb);// 獲取一個表體樣式集合
        setExcelHead(sheet,head,headStyleList);// 插入表頭數(shù)據(jù)
        setExcelBody(sheet,body,bodyStyleList);// 插入表體數(shù)據(jù)
    }
    // 合并表頭
    public static void mergeCell(SXSSFSheet sheet,int rowEleCount)
    {
        List<MyCell> listMerge = new ArrayList<>();//存儲前3行合并單元格的信息
        MyCell myCell1 = new MyCell(0,0,0,rowEleCount);
        listMerge.add(myCell1);
        MyCell myCell2 = new MyCell(1,2,0,3);
        listMerge.add(myCell2);
        MyCell myCell3 = new MyCell(1,2,4,rowEleCount);
        listMerge.add(myCell3);
        for (int i = 0; i < listMerge.size() ; i++){
            sheet.addMergedRegion(new CellRangeAddress(listMerge.get(i).getTop(),//開始行
                    listMerge.get(i).getBelow(),//結束行
                    listMerge.get(i).getLeft(),//開始列
                    listMerge.get(i).getRight()));//結束列
        }
    }
    //插入表頭數(shù)據(jù)
    public static void setExcelHead(SXSSFSheet sheet, List<List<String>> head,List<CellStyle> cellStyleList)
    {
        int rowNum = head.size();//表頭有幾行
        int rowElementNum = head.get(0).size();//每行有幾列
        SXSSFRow row = null;//聲明一個行對象
        SXSSFCell cell = null;//聲明一個列對象(即一個單元格對象)
        for (int i = 0; i < rowNum; i++){
            row = sheet.createRow(i);//創(chuàng)建第 i + 1 行的行對象
            //設置行高
            if(i == 1 || i == 2){//將第二行和第三行的行高設置為400
                row.setHeight((short) 400);
            }
            for(int j = 0; j < rowElementNum; j++) {
                cell = row.createCell(j);//創(chuàng)建第 i + 1 行,第 j + 1 列的單元格
                cell.setCellValue(head.get(i).get(j));//設置單元格內(nèi)容(插入數(shù)據(jù))
                //設置表頭樣式
                switch (i){
                    case 0:
                        cell.setCellStyle(cellStyleList.get(0));//將第一行設置為上下左右居中,單元格無邊框,字體:等線,字號:12
                        break;
                    default:
                        switch (j){
                            case 0:
                                cell.setCellStyle(cellStyleList.get(1));//將第二行第1個單元格設置為靠左,單元格無邊框,上下居中,字體:等線,字號:10
                                break;
                            case 4:
                                cell.setCellStyle(cellStyleList.get(2));//將第二行第5個單元格設置上下左右居中,單元格無邊框,字體:等線,字號:10
                                break;
                            default:
                                cell.setCellStyle(cellStyleList.get(3));//其他單元格
                        }
                }
            }
        }
    }
    //插入表體數(shù)據(jù)
    public static void setExcelBody(SXSSFSheet sheet, List<List<String>> body,List<CellStyle> bodyStyleList)
    {
        int rowNum = body.size();//表體有幾行
        int rowElementNum = body.get(0).size();//每行有幾列
        List<String> rowList = null;//聲明一個行數(shù)據(jù)集合
        SXSSFRow row = null;//聲明一個行對象
        SXSSFCell cell = null;//聲明一個單元格對象
        for (int i = 3; i < rowNum + 3; i++) {//前3行是表頭,從第4行開始創(chuàng)建行對象
            row = sheet.createRow(i);//創(chuàng)建行對象
            //將第4行行高設為600
            if(i == 3){
                row.setHeight((short)600);
            }
            rowList = body.get(i - 3);//取出表體的一行數(shù)據(jù)
            for (int j = 0; j < rowList.size() ; j++){
                cell = row.createCell(j);//創(chuàng)建第 i + 1 行,第 j + 1 列的單元格
                cell.setCellValue(rowList.get(j));//設置單元格內(nèi)容(插入數(shù)據(jù))
                //設置單元格數(shù)據(jù)樣式
                switch (i){
                    case 3:
                        cell.setCellStyle(bodyStyleList.get(3));//第4行設置為上下左右居中,單元格有邊框,字體:等線,字號:10
                        break;
                    case 4:
                        cell.setCellStyle(bodyStyleList.get(3));//第5行設置為上下左右居中,單元格有邊框,字體:等線,字號:10
                        break;
                    default:
                        switch (j){
                            case 0:
                                cell.setCellStyle(bodyStyleList.get(0));//其他行第一列設置為靠左,上下居中,單元格有左右邊框,無上下邊框,字體:等線,字號:10
                                break;
                            case 1:
                                cell.setCellStyle(bodyStyleList.get(1));//其他行第二列設置為靠左,上下居中,單元格有左右邊框,無上下邊框,字體:等線,字號:10
                                break;
                            default:
                                cell.setCellStyle(bodyStyleList.get(2));//其他行其他列設置為上下左右居中,單元格有左右邊框,無上下邊框,字體:等線,字號:10
                        }
                }
            }
        }
    }
    //獲取表頭樣式集合
    private static List<CellStyle> getHeadCellStyleList(SXSSFWorkbook wb) {
        List<CellStyle> cellStyleList = new ArrayList<>();
        CellStyle bodyStyle1 = headStyle1(wb);
        CellStyle bodyStyle2 = headStyle2(wb);
        CellStyle bodyStyle3 = headStyle3(wb);
        CellStyle bodyStyle4 = headStyle3(wb);
        cellStyleList.add(bodyStyle1);
        cellStyleList.add(bodyStyle2);
        cellStyleList.add(bodyStyle3);
        cellStyleList.add(bodyStyle4);
        return cellStyleList;
    }
    //獲取表體樣式集合
    private static List<CellStyle> getBodyCellStyleList(SXSSFWorkbook wb)
    {
        List<CellStyle> list = new ArrayList<>();
        CellStyle cellStyle1 = bodyStyle1(wb);
        CellStyle cellStyle2 = bodyStyle2(wb);
        CellStyle cellStyle3 = bodyStyle3(wb);
        CellStyle cellStyle4 = bodyStyle4(wb);
        list.add(cellStyle1);
        list.add(cellStyle2);
        list.add(cellStyle3);
        list.add(cellStyle4);
        return list;
    }
    //字體
    public static Font getFont(SXSSFWorkbook wb,String fontName,int height){
        Font font = wb.createFont();
        //font.setBoldweight((short) 10);// 設置字體的寬度
        //font.setFontHeightInPoints((short) height);// 設置字體的高度
        //font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 粗體顯示
        font.setFontHeightInPoints((short)height);//設置字號
        font.setFontName(fontName);//設置字體(輸入字體名)
        return font;
    }
    //表頭樣式1
    public static CellStyle headStyle1(SXSSFWorkbook wb)
    {
        CellStyle style1 = wb.createCellStyle();// 樣式對象
        // 設置單元格上、下、左、右的邊框線
        style1.setBorderTop(HSSFCellStyle.BORDER_NONE);//NONE為不顯示邊框,THIN為顯示邊框
        style1.setBorderBottom(HSSFCellStyle.BORDER_NONE);
        style1.setBorderLeft(HSSFCellStyle.BORDER_NONE);
        style1.setBorderRight(HSSFCellStyle.BORDER_NONE);
        Font font = getFont(wb,"等線",12);// 創(chuàng)建一個字體對象
        style1.setFont(font);// 設置style1的字體
        //style1.setWrapText(true);// 設置自動換行
        style1.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 設置單元格字體顯示居中(左右方向)
        style1.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 設置單元格字體顯示居中(上下方向)
        return style1;
    }
    //表頭樣式2
    public static CellStyle headStyle2(SXSSFWorkbook wb)
    {
        CellStyle style1 = wb.createCellStyle();// 樣式對象
        // 設置單元格上、下、左、右的邊框線
        style1.setBorderBottom(HSSFCellStyle.BORDER_NONE);//NONE為不顯示邊框,THIN為顯示邊框
        style1.setBorderLeft(HSSFCellStyle.BORDER_NONE);
        style1.setBorderRight(HSSFCellStyle.BORDER_NONE);
        style1.setBorderTop(HSSFCellStyle.BORDER_NONE);
        Font font = getFont(wb,"等線",10);// 創(chuàng)建一個字體對象
        style1.setFont(font);// 設置style1的字體
        //style1.setWrapText(true);// 設置自動換行
        style1.setAlignment(HSSFCellStyle.ALIGN_LEFT);// 設置單元格字體顯示居中(左右方向)
        style1.setVerticalAlignment(HSSFCellStyle.VERTICAL_BOTTOM);// 設置單元格字體顯示居中(上下方向)
        return style1;
    }
    //表頭樣式3
    public static CellStyle headStyle3(SXSSFWorkbook wb)
    {
        CellStyle style1 = wb.createCellStyle();// 樣式對象
        // 設置單元格上、下、左、右的邊框線
        style1.setBorderBottom(HSSFCellStyle.BORDER_NONE);//NONE為不顯示邊框,THIN為顯示邊框
        style1.setBorderLeft(HSSFCellStyle.BORDER_NONE);
        style1.setBorderRight(HSSFCellStyle.BORDER_NONE);
        style1.setBorderTop(HSSFCellStyle.BORDER_NONE);
        Font font = getFont(wb,"等線",10);// 創(chuàng)建一個字體對象
        style1.setFont(font);// 設置style1的字體
        //style1.setWrapText(true);// 設置自動換行
        style1.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 設置單元格字體顯示居中(左右方向)
        style1.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 設置單元格字體顯示居中(上下方向)
        return style1;
    }
    //表體樣式1
    public static CellStyle bodyStyle1(SXSSFWorkbook wb)
    {
        // 設置style1的樣式,此樣式運用在第二行
        CellStyle style = wb.createCellStyle();//樣式對象
        // 設置單元格上、下、左、右的邊框線
        style.setBorderTop(HSSFCellStyle.BORDER_NONE);//NONE為不顯示邊框,THIN為顯示邊框
        style.setBorderBottom(HSSFCellStyle.BORDER_NONE);
        style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        style.setBorderRight(HSSFCellStyle.BORDER_THIN);
        Font font = getFont(wb,"等線",10);// 創(chuàng)建一個字體對象
        style.setFont(font);// 設置style1的字體
        //style1.setWrapText(true);// 設置自動換行
        style.setAlignment(HSSFCellStyle.ALIGN_LEFT);// 設置單元格字體顯示靠左(左右方向)
        style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 設置單元格字體顯示居中(上下方向)
        return style;
    }
    //表體樣式2
    public static CellStyle bodyStyle2(SXSSFWorkbook wb)
    {
        // 設置style1的樣式,此樣式運用在第二行
        CellStyle style1 = wb.createCellStyle();// 樣式對象
        // 設置單元格上、下、左、右的邊框線
        style1.setBorderTop(HSSFCellStyle.BORDER_NONE);//NONE為不顯示邊框,THIN為顯示邊框
        style1.setBorderBottom(HSSFCellStyle.BORDER_NONE);
        style1.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        style1.setBorderRight(HSSFCellStyle.BORDER_THIN);
        Font font = getFont(wb,"等線",10);// 創(chuàng)建一個字體對象
        style1.setFont(font);// 設置style1的字體
        //style1.setWrapText(true);// 設置自動換行
        style1.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 設置單元格字體顯示居中(左右方向)
        style1.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 設置單元格字體顯示居中(上下方向)
        return style1;
    }
    //表體樣式3
    public static CellStyle bodyStyle3(SXSSFWorkbook wb)
    {
        // 設置style1的樣式,此樣式運用在第二行
        CellStyle style1 = wb.createCellStyle();//樣式對象
        // 設置單元格上、下、左、右的邊框線
        style1.setBorderTop(HSSFCellStyle.BORDER_NONE);//NONE為不顯示邊框,THIN為顯示邊框
        style1.setBorderBottom(HSSFCellStyle.BORDER_NONE);
        style1.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        style1.setBorderRight(HSSFCellStyle.BORDER_THIN);
        Font font = getFont(wb,"等線",10);// 創(chuàng)建一個字體對象
        style1.setFont(font);// 設置style1的字體
        //style1.setWrapText(true);// 設置自動換行
        style1.setAlignment(HSSFCellStyle.ALIGN_RIGHT);// 設置單元格字體顯示靠右(左右方向)
        style1.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 設置單元格字體顯示居中(上下方向)
        return style1;
    }
    //表體樣式4
    public static CellStyle bodyStyle4(SXSSFWorkbook wb)
    {
        // 設置style1的樣式
        CellStyle style1 = wb.createCellStyle();//樣式對象
        // 設置單元格上、下、左、右的邊框線
        style1.setBorderTop(HSSFCellStyle.BORDER_THIN);//NONE為不顯示邊框,THIN為顯示邊框
        style1.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        style1.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        style1.setBorderRight(HSSFCellStyle.BORDER_THIN);
        Font font = getFont(wb,"等線",10);// 創(chuàng)建一個字體對象
        style1.setFont(font);// 設置style1的字體
        //style1.setWrapText(true);// 設置自動換行
        style1.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 設置單元格字體顯示居中(左右方向)
        style1.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 設置單元格字體顯示居中(上下方向)
        return style1;
    }
}

設置樣式,如字體、單元格等(詳細的可以去看官方文檔)

 // 設置單元格的橫向和縱向?qū)R方式,  cellStyle.setAlignment(HSSFCellStyle.ALIGN_JUSTIFY); 
 cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); 
 //設置背景顏色 
cellStyle.setFillBackgroundColor(HSSFColor.LIGHT_YELLOW.index);

四、總結

單元格合并,單元格樣式、字體樣式,在代碼中都有注釋,上述代碼,講述了復雜excel的導出,可以導出多個sheet頁,可自己準備數(shù)據(jù)測試

到此這篇關于Java使用Poi導出Excel表格的文章就介紹到這了,更多相關Java Poi導出Excel表格內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Lombok的@Accessors使用說明

    Lombok的@Accessors使用說明

    這篇文章主要介紹了Lombok的@Accessors使用說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • SpringBoot使用MockMvc進行單元測試的實例代碼

    SpringBoot使用MockMvc進行單元測試的實例代碼

    在Spring Boot應用程序中,使用MockMvc進行單元測試是一種有效的方式,可以驗證控制器的行為和API的正確性,在這篇博客中,我們將介紹如何使用MockMvc對用戶控制器進行測試,感興趣的朋友可以參考下
    2024-01-01
  • Java實現(xiàn)視頻格式轉(zhuǎn)換的完整指南

    Java實現(xiàn)視頻格式轉(zhuǎn)換的完整指南

    在Java中實現(xiàn)視頻格式的轉(zhuǎn)換,通常需要借助第三方工具或庫,因為視頻的編解碼操作復雜且性能需求較高,以下是實現(xiàn)視頻格式轉(zhuǎn)換的常用方法和步驟,需要的朋友可以參考下
    2025-05-05
  • springboot?去掉netflix?禁用Eureka的解決方法

    springboot?去掉netflix?禁用Eureka的解決方法

    這篇文章主要介紹了springboot?去掉netflix?禁用Eureka的解決方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • 優(yōu)化Java代碼中if-else的方案分享

    優(yōu)化Java代碼中if-else的方案分享

    代碼可讀性是衡量代碼質(zhì)量的重要標準,可讀性也是可維護性、可擴展性的保證,而我們在編程時常常會發(fā)現(xiàn)代碼中有大量if?else語句,如何進行優(yōu)化呢,下面就來和大家詳細聊聊
    2023-05-05
  • ArrayList源碼探秘之Java動態(tài)數(shù)組的實現(xiàn)

    ArrayList源碼探秘之Java動態(tài)數(shù)組的實現(xiàn)

    這篇文章將帶大家從ArrayList源碼來探秘一下Java動態(tài)數(shù)組的實現(xiàn),文中的示例代碼講解詳細,對我們深入了解JavaScript有一定的幫助,需要的可以參考一下
    2023-08-08
  • MyBatis之自動映射與緩存問題及解析

    MyBatis之自動映射與緩存問題及解析

    文章主要介紹了MyBatis的配置與操作,包括自動映射(autoMappingBehavior)的設置(NONE、PARTIAL、FULL)、手動映射的步驟(使用<resultMap>標簽)、SQL注入攻擊的原理、緩存機制及其影響(一級緩存和二級緩存的作用、緩存失效的情況)
    2025-09-09
  • 一篇文章學會java死鎖與CPU 100%的排查

    一篇文章學會java死鎖與CPU 100%的排查

    這篇文章主要介紹了一篇文章學會java死鎖與CPU 100%的排查,文中主要介紹了Java死鎖以及服務器CPU占用率達到100%時的排查和解決方法,感興趣的朋友一起來看一看吧
    2021-08-08
  • 使用jsoup解析html的table中的文本信息實例

    使用jsoup解析html的table中的文本信息實例

    今天小編就為大家分享一篇使用jsoup解析html的table中的文本信息實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Java中Boolean引發(fā)缺陷的解決

    Java中Boolean引發(fā)缺陷的解決

    本文主要介紹了Java中Boolean引發(fā)缺陷的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06

最新評論

会昌县| 大渡口区| 长沙市| 龙井市| 望奎县| 双桥区| 故城县| 偃师市| 清远市| 湖南省| 聂拉木县| 叙永县| 彰化县| 铜陵市| 嘉善县| 南通市| 邓州市| 通榆县| 凉山| 鹿泉市| 吉木萨尔县| 孟连| 偏关县| 班玛县| 大姚县| 万州区| 响水县| 凤凰县| 广灵县| 岑溪市| 太谷县| 灵川县| 宽甸| 博爱县| 枣强县| 麻城市| 离岛区| 平阳县| 太仆寺旗| 临武县| 广河县|