久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

SpringBoot實現Excel讀取的實例教程

瀏覽:173日期:2022-06-16 14:09:20
前言

這是本人寫的一個SpringBoot對Excel讀取的方法,實測能用,待提升的地方有很多,有不足之處請多多指點。

Excel2003版(后綴為.xls)最大行數是65536行,最大列數是256列。

Excel2007以上的版本(后綴為.xlsx)最大行數是1048576行,最大列數是16384列。

提供2種方法讀取:

1.根據指定的開始和結束行數讀取返回結果,結果格式為List<Map<String, Object>>

2.根據指定的開始和結束行數讀取返回結果,結果格式為List<POJO(傳入的實體類)>

請根據實際內存堆可用大小進行讀取,太多可進行分段讀取(類似分頁的原理)

讀取Excel所需要的幾個類

SpringBoot實現Excel讀取的實例教程

1.在pom.xml加上依賴

</dependencies> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.0.1</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.0.1</version> </dependency></dependencies>2.ExcelPOJO實體類

package com.cly.utils.Excel;/** * @author : CLy * @ClassName : ExcelPOJO * @date : 2020/7/9 17:13 * 實體類所有成員變量都需要有GET,SET方法 * 所有成員變量都要加上注解@excelRescoure(value = '?'),?為Excel真實列名,必須一一對應 * @excelRescoure(value = '?'),?可為空,需要用到才賦值 * 成員變量目前只允許String,Double,Interge,Float **/public class ExcelPOJO { public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPasswork() { return passwork; } public void setPasswork(String passwork) { this.passwork = passwork; } public String getLook() { return look; } public void setLook(String look) { this.look = look; } @excelRescoure(value = 'XM') private String name; @excelRescoure(value = 'SFZH') private String passwork; @excelRescoure() private String look; @Override public String toString(){ return 'name:'+this.getName()+',passwork:'+this.getPasswork()+',look:'+this.getLook(); } public ExcelPOJO() {}}3.@interface自定義注解(用于實體類讀取)

package com.cly.utils.Excel;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;/** * @author : CLy * @ClassName : myRescoure * @date : 2020/7/10 9:31 **/@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)public @interface excelRescoure { String value() default '';//默認為空}4.excelRead類(讀取Excel數據類)有很多冗余的代碼,可抽離出來

package com.cly.utils.Excel;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject;import com.sun.org.apache.bcel.internal.generic.NEW;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.formula.functions.T;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import javax.xml.transform.Source;import java.beans.IntrospectionException;import java.beans.PropertyDescriptor;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.lang.reflect.*;import java.text.DecimalFormat;import java.util.*;/** * @author : CLy * @ClassName : excelRead * @date : 2020/7/9 11:08 **/public class excelRead { //日志輸出 private static Logger logger = LoggerFactory.getLogger(excelRead.class); //定義excel類型 private static final String XLS = 'xls'; private static final String XLSX = 'xlsx'; /** * 根據文件后綴名類型獲取對應的工作簿對象 * @param inputStream 讀取文件的輸入流 * @param fileType 文件后綴名類型(xls或xlsx) * @return 包含文件數據的工作簿對象 */ private static Workbook getWorkbook(InputStream inputStream, String fileType) throws IOException { //用自帶的方法新建工作薄 Workbook workbook = WorkbookFactory.create(inputStream); //后綴判斷有版本轉換問題 //Workbook workbook = null; //if (fileType.equalsIgnoreCase(XLS)) { // workbook = new HSSFWorkbook(inputStream); //} else if (fileType.equalsIgnoreCase(XLSX)) { // workbook = new XSSFWorkbook(inputStream); //} return workbook; } /** * 將單元格內容轉換為字符串 * @param cell * @return */ private static String convertCellValueToString(Cell cell) { if (cell == null) { return null; } String returnValue = null; switch (cell.getCellType()) { case NUMERIC: //數字 Double doubleValue = cell.getNumericCellValue(); // 格式化科學計數法,取一位整數,如取小數,值如0.0,取小數點后幾位就寫幾個0 DecimalFormat df = new DecimalFormat('0'); returnValue = df.format(doubleValue); break; case STRING: //字符串 returnValue = cell.getStringCellValue(); break; case BOOLEAN: //布爾 Boolean booleanValue = cell.getBooleanCellValue(); returnValue = booleanValue.toString(); break; case BLANK: // 空值 break; case FORMULA: // 公式 returnValue = cell.getCellFormula(); break; case ERROR: // 故障 break; default: break; } return returnValue; } /** * 處理Excel內容轉為List<Map<String,Object>>輸出 * workbook:已連接的工作薄 * StatrRow:讀取的開始行數(默認填0,0開始,傳過來是EXcel的行數值默認從1開始,這里已處理減1) * EndRow:讀取的結束行數(填-1為全部) * ExistTop:是否存在頭部(如存在則讀取數據時會把頭部拼接到對應數據,若無則為當前列數) */ private static List<Map<String, Object>> HandleData(Workbook workbook, int StatrRow, int EndRow, boolean ExistTop) { //聲明返回結果集result List<Map<String, Object>> result = new ArrayList<>(); //聲明一個Excel頭部函數 ArrayList<String> top = new ArrayList<>(); //解析sheet(sheet是Excel腳頁) /** *此處會讀取所有腳頁的行數據,若只想讀取指定頁,不要for循環,直接給sheetNum賦值,腳頁從0開始(通常情況Excel都只有一頁,所以此處未進行進一步處理) */ for (int sheetNum = 0; sheetNum < workbook.getNumberOfSheets(); sheetNum++) { Sheet sheet = workbook.getSheetAt(sheetNum); // 校驗sheet是否合法 if (sheet == null) { continue; } //如存在頭部,處理頭部數據 if (ExistTop) { int firstRowNum = sheet.getFirstRowNum(); Row firstRow = sheet.getRow(firstRowNum); if (null == firstRow) { logger.warn('解析Excel失敗,在第一行沒有讀取到任何數據!'); } for (int i = 0; i < firstRow.getLastCellNum(); i++) { top.add(convertCellValueToString(firstRow.getCell(i))); } } //處理Excel數據內容 int endRowNum; //獲取結束行數 if (EndRow == -1) { endRowNum = sheet.getPhysicalNumberOfRows(); } else { endRowNum = EndRow <= sheet.getPhysicalNumberOfRows() ? EndRow : sheet.getPhysicalNumberOfRows(); } //遍歷行數 for (int i = StatrRow - 1; i < endRowNum; i++) { Row row = sheet.getRow(i); if (null == row) { continue; } Map<String, Object> map = new HashMap<>(); //獲取所有列數據 for (int y = 0; y < row.getLastCellNum(); y++) { if (top.size() > 0) { if (top.size() >= y) { map.put(top.get(y), convertCellValueToString(row.getCell(y))); } else { map.put(String.valueOf(y + 1), convertCellValueToString(row.getCell(y))); } } else { map.put(String.valueOf(y + 1), convertCellValueToString(row.getCell(y))); } } result.add(map); } } return result; } /** * 方法一 * 根據行數和列數讀取Excel * fileName:Excel文件路徑 * StatrRow:讀取的開始行數(默認填0) * EndRow:讀取的結束行數(填-1為全部) * ExistTop:是否存在頭部(如存在則讀取數據時會把頭部拼接到對應數據,若無則為當前列數) * 返回一個List<Map<String,Object>> */ public static List<Map<String, Object>> ReadExcelByRC(String fileName, int StatrRow, int EndRow, boolean ExistTop) { //判斷輸入的開始值是否少于等于結束值 if (StatrRow > EndRow && EndRow != -1) { logger.warn('輸入的開始行值比結束行值大,請重新輸入正確的行數'); List<Map<String, Object>> error = null; return error; } //聲明返回的結果集 List<Map<String, Object>> result = new ArrayList<>(); //聲明一個工作薄 Workbook workbook = null; //聲明一個文件輸入流 FileInputStream inputStream = null; try { // 獲取Excel后綴名,判斷文件類型 String fileType = fileName.substring(fileName.lastIndexOf('.') + 1); // 獲取Excel文件 File excelFile = new File(fileName); if (!excelFile.exists()) { logger.warn('指定的Excel文件不存在!'); return null; } // 獲取Excel工作簿 inputStream = new FileInputStream(excelFile); workbook = getWorkbook(inputStream, fileType); //處理Excel內容 result = HandleData(workbook, StatrRow, EndRow, ExistTop); } catch (Exception e) { logger.warn('解析Excel失敗,文件名:' + fileName + ' 錯誤信息:' + e.getMessage()); } finally { try { if (null != workbook) { workbook.close(); } if (null != inputStream) { inputStream.close(); } } catch (Exception e) { logger.warn('關閉數據流出錯!錯誤信息:' + e.getMessage()); return null; } } return result; }/**==============================================================================================================================**/ /** * 方法二 * 根據給定的實體類中賦值的注解值讀取Excel * fileName:Excel文件路徑 * StatrRow:讀取的開始行數(默認填0) * EndRow:讀取的結束行數(填-1為全部) * Class<T>:傳過來的實體類類型 * 返回一個List<T>:T為實體類 */ public static List<Object> ReadExcelByPOJO(String fileName, int StatrRow, int EndRow, Class t) throws InvocationTargetException, IntrospectionException, InstantiationException, IllegalAccessException, NoSuchFieldException { //判斷輸入的開始值是否少于等于結束值 if (StatrRow > EndRow && EndRow != -1) { logger.warn('輸入的開始行值比結束行值大,請重新輸入正確的行數'); List<Object> error = null; return error; } //聲明返回的結果集 List<Object> result = new ArrayList<>(); //聲明一個工作薄 Workbook workbook = null; //聲明一個文件輸入流 FileInputStream inputStream = null; try { // 獲取Excel后綴名,判斷文件類型 String fileType = fileName.substring(fileName.lastIndexOf('.') + 1); // 獲取Excel文件 File excelFile = new File(fileName); if (!excelFile.exists()) { logger.warn('指定的Excel文件不存在!'); return null; } // 獲取Excel工作簿 inputStream = new FileInputStream(excelFile); workbook = getWorkbook(inputStream, fileType); //處理Excel內容 result = HandleDataPOJO(workbook, StatrRow, EndRow, t); } catch (Exception e) { logger.warn('解析Excel失敗,文件名:' + fileName + ' 錯誤信息:' + e.getMessage()); } finally { try { if (null != workbook) { workbook.close(); } if (null != inputStream) { inputStream.close(); } } catch (Exception e) { logger.warn('關閉數據流出錯!錯誤信息:' + e.getMessage()); return null; } } return result; } /** * 處理Excel內容轉為List<T>輸出 * workbook:已連接的工作薄 * StatrRow:讀取的開始行數(默認填0,0開始,傳過來是EXcel的行數值默認從1開始,這里已處理減1) * EndRow:讀取的結束行數(填-1為全部) * Class<T>:所映射的實體類 */ private static <t> List<Object> HandleDataPOJO(Workbook workbook, int StatrRow, int EndRow, Class<?> t) throws IntrospectionException, NoSuchFieldException, IllegalAccessException, InstantiationException, InvocationTargetException, ClassNotFoundException { //聲明返回的結果集 List<Object> result = new ArrayList<Object>(); //解析sheet(sheet是Excel腳頁) for (int sheetNum = 0; sheetNum < workbook.getNumberOfSheets(); sheetNum++) { Sheet sheet = workbook.getSheetAt(sheetNum); // 校驗sheet是否合法 if (sheet == null) { continue; } //獲取頭部數據 //聲明頭部數據數列對象 ArrayList<String> top = new ArrayList<>(); //獲取Excel第一行數據 int firstRowNum = sheet.getFirstRowNum(); Row firstRow = sheet.getRow(firstRowNum); if (null == firstRow) { logger.warn('解析Excel失敗,在第一行沒有讀取到任何數據!'); return null; } for (int i = 0; i < firstRow.getLastCellNum(); i++) { top.add(convertCellValueToString(firstRow.getCell(i))); } //獲取實體類的成原變量 Map<String, Object> POJOfields = getPOJOFieldAndValue(t); //判斷所需要的數據列 Map<String, Object> exceltoPOJO = new HashMap<>(); for (int i = 0; i < top.size(); i++) { if (POJOfields.get(top.get(i)) != null && !''.equals(POJOfields.get(top.get(i)))) { exceltoPOJO.put(String.valueOf(i), POJOfields.get(top.get(i))); } } /*處理Excel數據內容*/ int endRowNum; //獲取結束行數 if (EndRow == -1) { endRowNum = sheet.getPhysicalNumberOfRows(); } else { endRowNum = EndRow <= sheet.getPhysicalNumberOfRows() ? EndRow : sheet.getPhysicalNumberOfRows(); } List<Map<String, Object>> mapList = new ArrayList<>(); //遍歷行數 for (int i = StatrRow - 1; i < endRowNum; i++) { Row row = sheet.getRow(i); if (null == row) { continue; } //獲取需要的列數據 t texcel = (t) t.newInstance(); for (Map.Entry<String, Object> map : exceltoPOJO.entrySet()) { //獲取Exceld對應列的數據 String celldata = convertCellValueToString(row.getCell(Integer.parseInt(map.getKey()))); //使用發射 //獲取實體類T中指定成員變量的對象 PropertyDescriptor pd = new PropertyDescriptor((String) map.getValue(), texcel.getClass()); //獲取成員變量的set方法 Method method = pd.getWriteMethod(); //判斷成員變量的類型 Field field = texcel.getClass().getDeclaredField((String) map.getValue()); String object = field.getGenericType().getTypeName(); if (object.endsWith('String')) { //執行set方法 method.invoke(texcel, celldata); } if (object.endsWith('Double')) { Double middata = Double.valueOf(celldata); //執行set方法 method.invoke(texcel, middata); } if (object.endsWith('Float')) { Float middata = Float.valueOf(celldata); //執行set方法 method.invoke(texcel, middata); } if (object.endsWith('Integer')) { Integer middata = Integer.parseInt(celldata); //執行set方法 method.invoke(texcel, middata); } } result.add(texcel); } } return result; } /** * 獲取對應的實體類成員 * */ private static Map<String, Object> getPOJOFieldAndValue(Class T) { //聲明返回結果集 Map<String, Object> result = new HashMap<>(); Field[] fields = T.getDeclaredFields();//獲取屬性名 if (fields != null) { for (Field field : fields) { excelRescoure Rescoure = field.getAnnotation(excelRescoure.class); if (Rescoure.value() != null && !''.equals(Rescoure.value())) { result.put(Rescoure.value(), field.getName()); } } } else { logger.warn('實體類:' + T + '不存在成員變量'); return null; } return result; }}5.測試類

package com.cly.utils.Excel;import java.util.*;/** * @author : CLy * @ClassName : Readtest * @date : 2020/7/9 16:31 **/public class Readtest {public static void main(String[] args) throws Exception { /** 方法一 * fileName:Excel文件路徑 * StatrRow:讀取的開始行數(默認填0) * EndRow:讀取的結束行數(填-1為全部) * ExistTop:是否存在頭部(如存在則讀取數據時會把頭部拼接到對應數據作為KEY,若無則KEY為當前列數) */ List<Map<String,Object>> result =excelRead.ReadExcelByRC('D:.xls',2,10,false); System.out.println(result.size()); System.out.println(result); /** * 方法二 * ReadExcelByPOJO(String fileName, int StatrRow, int EndRow, Class t) * fileName:Excel文件路徑 * StatrRow:讀取的開始行數(默認填0) * EndRow:讀取的結束行數(填-1為全部) * Class<T>:傳過來的實體類類型 */ List<Object> result2 = excelRead.ReadExcelByPOJO('D:.xls',2,10,ExcelPOJO.class); System.out.println(result2.size()); System.out.println(result2); }} 6.運行結果和說明

exce表格數據

SpringBoot實現Excel讀取的實例教程

方法一的運行結果

1.ture:key為列名

SpringBoot實現Excel讀取的實例教程

2.false:key為第幾列列數

SpringBoot實現Excel讀取的實例教程

方法二的運行結果

實體類的所有成員變量一定要加上自定義注釋@excelRescoure,不然會報錯

SpringBoot實現Excel讀取的實例教程SpringBoot實現Excel讀取的實例教程

還有很多不足的地方,請多多指點,希望能給你帶來幫助。

SpringBoot實現內存數據導出成Excel在另一篇文章 文章地址:https://www.jb51.net/article/202767.htm

總結

到此這篇關于SpringBoot實現Excel讀取的文章就介紹到這了,更多相關SpringBoot實現Excel讀取內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: excel
相關文章:
主站蜘蛛池模板: 亚洲欧美日韩另类精品一区二区三区 | 欧美另类综合 | 激情久久久久 | 日本三级做a全过程在线观看 | 中国电影黄色一级片免费观看 | 欧美在线视频一区二区 | 91春色| www久久久久久久 | 可以免费观看的av | 福利视频网址导航 | 黄色在线免费观看 | 久热免费在线 | 日干夜干天天干 | 亚洲国产欧美一区二区三区久久 | 欧美日在线 | 日韩欧美精品在线 | www.se天堂| 久久精彩 | 国内精品在线视频 | 欧美国产精品一区 | 日本精品免费 | 91综合在线观看 | 精品96久久久久久中文字幕无 | 羞羞视频网站 | www.国产精| 欧美激情国产日韩精品一区18 | 免费大片黄在线观看 | 久久久99久久久国产自输拍 | 欧美日韩在线成人 | 亚洲高清视频一区 | 综合伊人 | 国产福利视频在线观看 | 日韩综合视频在线观看 | 日韩成人在线免费视频 | 亚洲国产欧美日韩 | 欧日韩在线视频 | 日日插日日操 | 久久久天堂国产精品女人 | 福利午夜| 亚洲高清不卡视频 | 欧美性大战久久久久久久蜜臀 | 日韩视频精品在线 | 成人免费一区二区三区视频网站 | 本道综合精品 | 日本黄色片免费看 | 一级a性色生活片久久毛片波多野 | 久久久成人网 | 九九精品视频在线 | 久久之精品| 日韩欧美在线视频播放 | 久久人爽 | 国产综合精品一区二区三区 | 日本狠狠操| 特级黄一级播放 | 日本精品视频在线观看 | 国产一区二区三区久久久 | 国产精品99久久久久久宅男 | 538在线精品 | 毛片久久久| 最近免费中文字幕在线视频2 | 91网站免费 | 欧美精品网 | 亚洲成人国产精品 | 精产国产伦理一二三区 | www精品 | 一区二区三区四区久久 | 91精品国产高清一区二区三区 | 天天看天天爽 | 国产1区在线观看 | 三级视频在线观看 | 中文字幕第33页 | 成人1区| 中文字幕在线播放第一页 | 国产一区二区日韩 | 一区二区日韩精品 | 亚洲第一精品在线 | 电影午夜精品一区二区三区 | 毛片日韩 | 韩日视频在线观看 | 人人草在线观看视频 | 成人一区二区三区久久精品嫩草 | www狠狠干 | 97精品国产97久久久久久粉红 | 黄色影片网址 | 香蕉视频成人在线观看 | 中文字幕99 | 日韩精品在线视频观看 | 黄色免费观看 | 久久久久久国产精品美女 | 免费看黄色大片 | 日韩视频在线免费播放 | 最新国产视频 | 国产精品视频免费 | 亚洲成年 | 日韩久久网 | 国产精品一区二区三区99 | 男女免费在线观看视频 | www.日韩 | 一区二区影视 | 最新国产精品精品视频 | 亚洲精品在线国产 | 国产精品视频一区二区三区 | 午夜精品一区二区三区四区 | 六月丁香av | 日韩一区二区视频在线 | 亚洲色图综合 | 麻豆视频国产 | 婷婷免费在线观看 | 国产高清久久久 | 精品国产一区二区三区性色av | 欧美日韩精品一区二区三区 | 亚洲一区二区在线 | 日本三级国产 | 51国产午夜精品免费视频 | 妞干网国产 | 国产精品一区二区av | 国产视频成人 | 永久免费精品视频 | 日韩精品www| 亚洲福利 | 在线观看成人网 | 亚洲一区二区三区 | 欧美成年黄网站色视频 | 免费一二区| 狠狠爱天天操 | 亚洲精品乱码久久久久久 | 日韩国伦理久久一区 | 久久精品高清视频 | 欧洲毛片基地 | 欧美一区二区三区久久精品 | 天天操,夜夜操 | 青青草国产在线 | 天天干天天骑 | 国产一级黄 | 欧美一级一区 | 亚洲高清在线观看 | 欧美日韩一二三 | 天堂网中文在线 | 成人在线免费网站 | 日韩免费一区二区 | 国产午夜精品久久久久久久 | 精品国产色 | 久久久欧美 | 国产免费高清 | 国产欧美日韩精品在线 | 亚洲日本精品视频 | 久久之精品 | 日韩在线一区二区 | 99国产精品99久久久久久 | 欧美亚洲免费 | 亚洲成人av一区二区三区 | 国产九九在线观看 | 欧美日韩免费看 | av一区在线观看 | 在线欧美亚洲 | 一区二区在线播放视频 | 中文字幕日韩欧美 | 国产一区二区三区免费视频 | 91精品欧美久久久久久动漫 | www视频在线观看 | 精品久久一区二区三区 | 日韩精品在线播放 | 日韩在线播放网址 | 精品三级在线观看 | 黄a在线| www.av欧美 | 亚洲精品福利在线 | 日韩一区二区黄色片 | 国产精品久久久久久久久久免费 | 色欧美片视频在线观看 | 色综合久久久久 | 91在线综合 | 久久成人午夜 | 久热精品视频 | 欧美日韩国产一区 | 国产区视频在线观看 | 欧美视频在线观看 | 国产精品久久久久久亚洲调教 | 性色av一区二区三区 | 欧美日韩国产精品一区二区 | 欧美精品a∨在线观看不卡 欧美日韩中文字幕在线播放 | 在线视频国产一区 | 久久精品无码一区二区日韩av | 无码日韩精品一区二区免费 | 亚洲精品乱码久久久久久麻豆不卡 | 一区二区精品视频在线观看 | 欧美色视频在线观看 | 日韩视频不卡 | 国产免费一区 | 一级a性色生活片毛片 | 日韩素人一区二区三区 | 国产日韩欧美综合 | 国产精品久久久久久亚洲调教 | 二区三区在线观看 | 日韩欧美在线观看一区二区 | 欧美日韩精品一区二区三区蜜桃 | 国产精品456在线影视 | 成人一区二区三区 | 精品视频免费观看 | 精品第一区| 在线观看不卡一区 | 亚洲一区成人在线观看 | 婷婷综合五月天 | 午夜精品在线 | 亚洲欧美日韩精品久久亚洲区 | 亚洲一区二区精品 | 久久久中文字幕 | 亚洲成人一区二区 | 亚洲一区二区三区免费视频 | 久久伊99综合婷婷久久伊 | 亚洲视频免费在线 | 91色视频在线观看 | 国产精品久久二区 | 成人久久18免费网站图片 | 成年人精品视频在线观看 | 国产视频久久 | 欧美成人高清视频 | 欧美成人精品一区二区男人看 | 久久中文在线观看 | 91香蕉视频 | www.99re| 欧美日韩成人在线视频 | 亚洲欧美日韩国产综合精品二区 | 国产男女免费视频 | 欧美a级在线观看 | 亚洲国产精品久久久久久女王 | 久久久久一区 | 免费在线看a | 日本国产一区二区 | 另类二区| 91精品午夜 | 99国产精品久久久久久久 | 综合网视频| 小草av| 国产精品毛片一区二区 | 在线a视频 | 日韩欧美在 | 国产精品成人免费视频 | 日韩成人在线视频 | 视频一区在线播放 | 成人在线国产 | 黄色一级大片在线免费看产 | 久久久www成人免费精品 | 久久久av亚洲男天堂 | 亚洲电影在线 | 青青草免费在线视频 | 成人久久久精品国产乱码一区二区 | 日韩在线视频免费看 | 国内自拍视频网 | 国产一区二区三区91 | 日韩国产一区二区三区 | 欧美精品一二三区 | 黄色天堂在线观看 | 午夜免费视频网站 | 欧美国产在线视频 | 久久综合爱 | 色婷婷网 | 香蕉在线影院 | 天天操天天干天天爽 | 黄色大片免费网站 | 欧美日韩在线播放 | 综合国产 | 午夜精品久久久久久久久久久久久 | 91精品国产99久久久久久红楼 | 欧美日韩中文字幕 | 日韩精品| 大胸av | 国产精品三级久久久久久电影 | 亚洲成av人片一区二区梦乃 | 国产成人免费视频 | 欧美黄色一区 | 国产日韩欧美一区 | 国产精品美女久久久久久久久久久 | 国产日韩在线视频 | 五月免费视频 | 亚洲精品一区在线观看 | 亚洲国产精品一区二区久久 | 日韩字幕一区 | 四虎最新影视 | 精品久久久久久久久久久 | 国产精品成人在线观看 | 亚洲国产日韩a在线播放性色 | 国产全黄| 欧美第8页 | 爱干视频 | 亚洲福利小视频 | av国产精品 | 欧美一区二区三 | 精品成人佐山爱一区二区 | 欧美视频一区二区三区在线观看 | 理论片免费在线观看 | 免费观看成人毛片 | 国产精品一区二区在线观看 | 精品96久久久久久中文字幕无 | 国产成人av一区二区三区 | 91精品国产欧美一区二区 | 成人在线国产 | 国产成人精品一区二区三区四区 | 欧美日韩一 | 国产男人天堂 | 超碰免费观看 | 国产在线精品一区二区三区 | 成人免费xxxxxxx | 国产精品99久久久久久动医院 | 精品一区二区在线观看 | 国产超碰人人模人人爽人人添 | 亚洲一区中文字幕在线观看 | 国产二区三区 | 九九热这里只有精品8 | 亚洲视频精品一区 | av三级| 国产成人精品亚洲777人妖 | 亚洲精品一区二三区不卡 | www.com欧美| 91亚洲在线 | 精品免费久久久久 | 亚洲日本韩国在线观看 | 精产国产伦理一二三区 | 国产精品www| 91中文在线观看 | 国产一级高清视频 | 日韩欧美国产精品综合嫩v 亚洲欧美日韩在线 | 九九精品视频在线观看 | 日韩中文一区 | 日韩超级大片免费看国产国产播放器 | 亚洲 欧美 日韩在线 | 欧美 亚洲 一区 | 97精品国产 | av男人的天堂网 | 国产精品久久久久国产a级 91福利网站在线观看 | 欧美日韩高清 | 亚洲网在线 | 久久久久国产一区二区三区四区 | 精品久久久久久久 | 国产成人精品免高潮在线观看 | 日韩日韩日韩日韩日韩日韩日韩 | 一区二区三区不卡视频 | 精品视频免费观看 | 欧美激情网址 | 欧美亚洲91 | 国产午夜精品久久久久久久 | 在线国产一区二区 | 久久综合av| 日韩免费高清视频 | 久久99深爱久久99精品 | 自拍视频在线观看免费 | 99久久精品免费看国产四区 | 成人在线免费 | 秋霞av电影| 在线中文av | 国产亚洲精品久久久久久豆腐 | 亚洲一区二区在线视频 | 99国产精品| 日韩综合一区 | 国产精品粉嫩白浆在线观看 | 精品久久一区 | 福利二区视频 | 亚洲国产一区二区在线 | 亚洲精品视频在线免费播放 | 日韩在线免费 | 亚洲高清在线观看 | 欧美在线视频一区二区 | 日本丶国产丶欧美色综合 | 国产午夜精品久久久 | 久久99精品久久久久蜜臀 | 国产精品成人久久久久 | 天堂网中文在线 | 精品欧美一区二区在线观看视频 | 国产精品毛片一区二区在线看 | 中文字幕国产一区 | 成人免费观看男女羞羞视频 | 久久国产精品一区二区 | 国产精品看片 | av在线网址观看 | 午夜视频| 99精品久久久 | 中文字幕在线观看www | 日本一区二区三区视频免费看 | 国产精选一区二区三区不卡催乳 | 在线国产一区 | 中文成人在线 | 国产99久久久久久免费看农村 | 日韩毛片 | 亚洲三级在线播放 | 高清国产午夜精品久久久久久 | 九九99热 | 国产综合区 | 亚洲午夜av| 手机看片在线 | 日韩精品视频久久 | 欧美日本亚洲 | 国产宾馆自拍 | 99久久视频 | 欧美精品一区二区三区在线 | 高清国产午夜精品久久久久久 | 午夜电影网站 | 精品一区二区三区免费 | 理论片免费在线观看 | 国产亚洲精品美女久久久久久久久久 | 热久久这里只有精品 | 午夜影院在线 | 久久国产精品毛片 | av在线成人 | 婷婷五月在线视频 | 成人免费一区二区三区视频网站 | 国产成人精品久久 | 欧美亚洲国产一区 | 国内外成人在线视频 | 操碰97| 国产精品ssss在线亚洲 | 国产精品久久久久久久久久 | 欧美一级黄色大片 | 一区二区免费播放 | 国产91精品一区二区绿帽 | 成人免费视频网站 | 欧美成人一区二免费视频软件 | 成人在线国产 | 日本黄色毛片 | 在线观看国产视频 | 国产精品免费观看 | 碰在线视频 | 国产综合精品视频 | 国产欧美综合一区二区三区 | 青青草久草 | 国产老女人精品毛片久久 | 欧美日韩另类在线 | 欧美电影一区 | 四虎新网站| 日本黄色激情片 | 久久精品国产视频 | 99久久99久久精品国产片果冻 | 精品久久一区 | 成人 在线| 亚洲国产精品一区二区久久 | 欧美精品 在线观看 | 91精品久久久久久久久久久久久久久 | 亚洲高清电影 | av三级在线观看 | 日本久久影视 | 亚洲欧洲综合 | 日韩毛片免费看 | 亚洲综合大片69999 | 美女一区 | 一区二区三区国产精品 | 欧美日韩在线观看中文字幕 | 国产真实精品久久二三区 | 一区二区三区日韩 | 日韩精品视频在线 | 大象视频成人在线观看 | 在线中文字幕第一页 | a级片在线观看 | 亚洲一级毛片 | 精品久久久久久久久久久久包黑料 | 久久国产精彩视频 | 成人国产精品久久久 | 亚洲国产精品第一区二区 | 99伊人| 天堂在线中文 | 欧美国产日韩一区 | 亚洲精品影院在线 | 91精品视频在线播放 | 色婷网| 狠狠色综合色综合网络 | 欧美日韩在线播放 | 亚洲免费视频在线观看 | 爽死777影院 | 国产在线不卡一区 | 亚洲精品九九 | 99re国产精品视频 | 日韩视频一区二区三区 | 久久免费精品 | www亚洲成人| 91精品久久| 欧美精品在线免费观看 | 一级淫片免费 | 国产精品免费一区二区三区四区 | 中文字幕在线观看av | 国产精品久久久久一区二区三区 | a级毛片免费高清视频 | 国产成人精品久久二区二区91 | 午夜久久 | 免费精品 | 亚洲高清在线视频 | 国产成人精品免高潮在线观看 | 日韩国产一区 | 亚洲一区成人 | 男人天堂99| 亚洲一区二区三区视频 | 国产一区在线视频 | 玖色视频 | 欧美日韩三区 | 国产精品国产成人国产三级 | 亚洲成人一区二区三区 | 国产一区二区精品 | av亚洲在线 | 国产野精品久久久久久久不卡 | 精品国产精品国产偷麻豆 | 免费黄色在线观看 | 精品成人一区二区 | 欧美日韩亚洲一区二区 | 日本一区二区不卡 | 久久久久国产精品免费免费搜索 | 亚洲精品成人久久久 | 91免费看电影 | 日韩毛片免费看 | 免费一二二区视频 | 欧美日韩在线视频一区 | 性大毛片视频 | 欧美福利视频 | 午夜久久久 | 麻豆久久精品 | 亚洲一区二区中文字幕在线观看 | 一级片网 | 欧美一级c片 | 日韩视频在线观看中文字幕 | 蜜桃免费一区二区三区 | 午夜激情影院 | 国产一区二区三区久久久久久久久 | 奇米色欧美一区二区三区 | 久久福利电影 | 国产精品毛片久久久久久久 | 色com| 91亚洲一区| 欧美日韩在线观看中文字幕 | 三级视频网站 | 日韩中文字幕欧美 | 国产精品亚洲成在人线 | 成人黄色电影小说 | 久久久久免费观看 | 久久国内免费视频 | 日日干日日操 | 久久成人视屏 | 欧美另类综合 | 自拍偷拍视频网站 | 日韩一区二区在线视频 | 蜜臀av在线播放一区二区三区 | 免费v片 | 黄色a级网站 | 国产成人精品网站 | 国产午夜精品美女视频明星a级 | 欧美成人精品一区二区三区 | av中文字幕第一页 | 婷婷五月色综合 | 亚洲国产精品一区二区www | 国内精品视频 | 欧美激情视频一区二区三区在线播放 | 国产精品久久久久久久久久新婚 | 一级黄色录像视频 | 午夜精品久久久久久久久久久久 | 日本一区二区中文字幕 | 日韩城人网站 | 羞羞视频在线观看入口 | 国产成人在线电影 | 亚洲成人精品在线观看 | 婷婷激情五月 | 亚洲精品一区二三区不卡 | 日韩欧美视频一区二区三区 | 真人女人一级毛片免费播放 | www国产精品 | 狠狠入ady亚洲精品经典电影 | 久久久精品网站 | 国产亚洲精品美女久久久久久久久久 | 成人一区二区在线 | 国产精品18 | 黄色一级免费看 | 色爱av| 极品一区 | 欧美亚洲另类丝袜综合网动图 | 91亚洲国产成人久久精品网站 | 精品国产三级 | 天天夜夜操 | 精品成人在线 | 久久丝袜| 久久伊人免费视频 | 欧美精品综合 | 国产精品久久久久久久久久久新郎 | 成人av片在线观看 | 日韩av一区二区三区在线观看 | 91在线视频免费观看 | 狠狠综合久久 | 欧美一级欧美三级在线观看 | 精品中文一区 | 波多野结衣一二三区 | 欧美成人精品一区二区男人看 | 午夜精品一区二区三区四区 | 欧美日韩国产在线播放 | 欧美成人性生活视频 | 国产精品久久久久久久久 | www.中文字幕.com | 成人午夜激情 | 国产美女久久 | 欧美成人激情 | 亚洲国产精品一区二区第一页 | 狠狠爱综合 | 色官网 | 久久精品视频一区 | 欧美在线播放一区 | 国产一区二区三区久久 | 一区二区三区四区久久 | 亚洲欧洲一区二区三区 | 久热官网 | 羞羞视频网站 | 欧美乱操 | 亚洲综合精品 | 三级黄色片在线观看 | 9999国产精品欧美久久久久久 | 日韩理论在线 | 啪一啪 | 国产伦精品一区二区三区在线 | 日韩国产欧美精品 | 日韩在线观看一区 | 九九久久精品 | 国外成人在线视频 | 电影k8一区二区三区久久 | 色视频在线播放 |