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

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

SpringBoot內存數據導出成Excel的實現方法

瀏覽:171日期:2022-06-16 14:04:55
前言

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

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

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

若數據量超出行數,需要進行腳頁的控制,這一點沒做,因為一般100W行已夠用。

提供3種方法寫入:

1.根據給定的實體類列List和列名數組arr[]進行Excel寫入

2.根據給定的List和key的順序數組key[]進行Excel寫入

3.根據給定的List按順序Excel寫入,列名數組arr[]需要自行和數據列順序進行一一對應

同名的Excel會被覆蓋!??!

寫入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 = '姓名') private String name; @excelRescoure(value = '密碼') private String passwork; @excelRescoure(value = '工號') 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.excelWrite類(寫入Excel數據類)有很多冗余的代碼,可抽離出來

package com.cly.utils.Excel;import org.apache.poi.ss.usermodel.*;import org.apache.poi.xssf.usermodel.XSSFCellStyle;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import javax.servlet.http.HttpServletResponse;import java.beans.IntrospectionException;import java.beans.PropertyDescriptor;import java.io.*;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.net.URLEncoder;import java.text.SimpleDateFormat;import java.util.*;/** * @author : CLy * @ClassName : excelWrite * @date : 2020/7/17 17:01 **/public class excelWrite { //日志輸出 private static Logger logger = LoggerFactory.getLogger(excelWrite.class); /** * 方法一: * 實體類數據寫入新建的excel * @path:excel文件路徑 * @array[]:文件首行數據列名,可為空,為空時不存在首行列名 * @list<T>:實體類數據數列 */ public static <T> String writeToExcelByPOJO(String path, String[] array, List<T> list) { /* for (T t : list) { System.out.println(t); }*/ //創建工作薄 Workbook wb = new XSSFWorkbook(); /**標題和頁碼*/ CellStyle titleStyle = wb.createCellStyle(); // 設置單元格對齊方式 titleStyle.setAlignment(HorizontalAlignment.CENTER); // 水平居中 //titleStyle.setVerticalAlignment(); // 默認垂直居中 // 設置字體樣式 Font titleFont = wb.createFont(); titleFont.setFontHeightInPoints((short) 12); // 字體高度 titleFont.setFontName('黑體'); // 字體樣式 titleStyle.setFont(titleFont); //創建sheet Sheet sheet = wb.createSheet('第一頁'); sheet.autoSizeColumn(0);// 自動設置寬度 // 在sheet中添加標題行 Row row = sheet.createRow((int) 0);// 行數從0開始 for (int i = 0; i < array.length; i++) { Cell cell = row.createCell(i); cell.setCellValue(array[i]); cell.setCellStyle(titleStyle); } /**數據樣式*/ // 數據樣式 因為標題和數據樣式不同 需要分開設置 不然會覆蓋 CellStyle dataStyle = wb.createCellStyle(); // 設置居中樣式 dataStyle.setAlignment(HorizontalAlignment.CENTER); // 水平居中 /**處理實體類數據并寫入*/ //獲取當前的泛型對象 Object obj = list.get(0); ArrayList arrayList = new ArrayList(); //LinkedHashMap保證順序 LinkedHashMap<String, Object> POJOfields = getPOJOFieldAndValue(obj); for (int i = 0; i < array.length; i++) { for (Map.Entry<String, Object> map : POJOfields.entrySet()) { if (map.getKey().equals(array[i])) { arrayList.add(map.getValue()); } } } if (array.length != arrayList.size()) { return '標題列數和實體類標記數不相同'; } try { //數據從序號1開始 int index = 1; //利用迭代器,遍歷集合數據,產生數據行 Iterator<T> it = list.iterator(); while (it.hasNext()) { row = sheet.createRow(index);// 默認的行數從0開始,為了統一格式設置從1開始,就是從excel的第二行開始 index++; T t = (T) it.next(); //System.out.println('t:' + t); for (int i = 0; i < arrayList.size(); i++) { String fieldName = (String) arrayList.get(i); //System.out.println(fieldName); String getMethodName = 'get' + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1); //System.out.println(getMethodName); Class<? extends Object> tCls = t.getClass();// 泛型為Object以及所有Object的子類 //System.out.println(tCls); Method method = tCls.getMethod(getMethodName, new Class[]{});// 通過方法名得到對應的方法 //PropertyDescriptor pd = new PropertyDescriptor((String) arrayList.get(i), it.getClass()); //獲取成員變量的get方法 //Method method = pd.getWriteMethod(); Object value = method.invoke(t, new Object[]{});// 動態調用方,得到屬性值 //System.out.println(value.toString()); Cell cell = row.createCell(i); if (value != null) { if (value instanceof Date) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat('yyyy-MM-dd'); value = simpleDateFormat.format(value); } cell.setCellValue(value.toString());// 為當前列賦值 cell.setCellStyle(dataStyle);//設置數據的樣式 } } } FileOutputStream fileOut = new FileOutputStream(path); wb.write(fileOut); fileOut.flush(); wb.close(); fileOut.close(); return 'success'; } catch (Exception e) { e.printStackTrace(); } return 'faile'; } /** * 獲取對應的實體類成員 */ private static LinkedHashMap<String, Object> getPOJOFieldAndValue(Object T) { //聲明返回結果集 LinkedHashMap<String, Object> result = new LinkedHashMap<>(); Field[] fields = T.getClass().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; } /**---------------------===================================================---------------------------**/ /** * 方法2: * HashMap數據寫入新建的excel * @path:excel文件路徑 * @array[]:文件首行數據列名,可為空,為空時不存在首行列名 * @List<Map<?,?>>:HashMap數據數列 * @key:hashmap里面的key值,需要一一對應列名的順序 * */ public static String writeToExcelByHashMap (String path, String[] array, List<HashMap> list,String[] key){ //創建工作薄 Workbook wb = new XSSFWorkbook(); /**標題和頁碼*/ CellStyle titleStyle = wb.createCellStyle(); // 設置單元格對齊方式 titleStyle.setAlignment(HorizontalAlignment.CENTER); // 水平居中 //titleStyle.setVerticalAlignment(); // 默認垂直居中 // 設置字體樣式 Font titleFont = wb.createFont(); titleFont.setFontHeightInPoints((short) 12); // 字體高度 titleFont.setFontName('黑體'); // 字體樣式 titleStyle.setFont(titleFont); //創建sheet Sheet sheet = wb.createSheet('第一頁'); sheet.autoSizeColumn(0);// 自動設置寬度 // 在sheet中添加標題行 Row row = sheet.createRow((int) 0);// 行數從0開始 for (int i = 0; i < array.length; i++) { Cell cell = row.createCell(i); cell.setCellValue(array[i]); cell.setCellStyle(titleStyle); } /**數據樣式*/ // 數據樣式 因為標題和數據樣式不同 需要分開設置 不然會覆蓋 CellStyle dataStyle = wb.createCellStyle(); // 設置居中樣式 dataStyle.setAlignment(HorizontalAlignment.CENTER); // 水平居中 /**數據寫入*/ //數據從序號1開始 try { int index = 1; for (int i = 0; i < list.size(); i++) { row = sheet.createRow(index);// 默認的行數從0開始,為了統一格式設置從1開始,就是從excel的第二行開始 index++; HashMap hashMap= list.get(i); for (int j = 0; j < key.length; j++) { Cell cell = row.createCell(j); cell.setCellValue(hashMap.get(key[j]).toString());// 為當前列賦值 cell.setCellStyle(dataStyle);//設置數據的樣式 } } FileOutputStream fileOut = new FileOutputStream(path); wb.write(fileOut); fileOut.flush(); wb.close(); fileOut.close(); return 'success'; }catch (Exception e){ e.printStackTrace(); } return 'faile'; } /**------------------===========================================================------------------------------------------------------*/ /** * 方法3: * HashMap數據寫入新建的excel * @path:excel文件路徑 * @array[]:文件首行數據列名,可為空,為空時不存在首行列名,列名需要和數列的數據順序一一對應 * @List<List>:數列數據數列 * * */ public static String writeToExcelByList(String path, String[] array, List<List> list){ //創建工作薄 Workbook wb = new XSSFWorkbook(); /**標題和頁碼*/ CellStyle titleStyle = wb.createCellStyle(); // 設置單元格對齊方式 titleStyle.setAlignment(HorizontalAlignment.CENTER); // 水平居中 //titleStyle.setVerticalAlignment(); // 默認垂直居中 // 設置字體樣式 Font titleFont = wb.createFont(); titleFont.setFontHeightInPoints((short) 12); // 字體高度 titleFont.setFontName('黑體'); // 字體樣式 titleStyle.setFont(titleFont); //創建sheet Sheet sheet = wb.createSheet('第一頁'); sheet.autoSizeColumn(0);// 自動設置寬度 // 在sheet中添加標題行 Row row = sheet.createRow((int) 0);// 行數從0開始 for (int i = 0; i < array.length; i++) { Cell cell = row.createCell(i); cell.setCellValue(array[i]); cell.setCellStyle(titleStyle); } /**數據樣式*/ // 數據樣式 因為標題和數據樣式不同 需要分開設置 不然會覆蓋 CellStyle dataStyle = wb.createCellStyle(); // 設置居中樣式 dataStyle.setAlignment(HorizontalAlignment.CENTER); // 水平居中 /**數據寫入*/ //數據從序號1開始 try { int index = 1; for (int i = 0; i < list.size(); i++) { row = sheet.createRow(index);// 默認的行數從0開始,為了統一格式設置從1開始,就是從excel的第二行開始 index++; List data= list.get(i); for (int j = 0; j < data.size(); j++) { Cell cell = row.createCell(j); cell.setCellValue(data.get(j).toString());// 為當前列賦值 cell.setCellStyle(dataStyle);//設置數據的樣式 } } FileOutputStream fileOut = new FileOutputStream(path); wb.write(fileOut); fileOut.flush(); wb.close(); fileOut.close(); return 'success'; }catch (Exception e){ e.printStackTrace(); } return 'faile'; }}5.測試類,同名的Excel會被覆蓋

package com.cly.utils.Excel;import java.util.*;/** * @author : CLy * @ClassName : WriteTest * @date : 2020/7/31 15:26 **/public class WriteTest { public static void main(String[] args) throws Exception { /**實體類測試 * writeToExcelByPOJO(String path, String[] array, List<T> list) * @path:excel文件路徑 * @array[]:文件首行數據列名,可為空,為空時不存在首行列名 * @list<T>:實體類數據數列 * 注意同名的Excel會被覆蓋,請寫好文件名字和對應的后綴 */ ExcelPOJO excelPOJO = new ExcelPOJO(); excelPOJO.setName('name'); excelPOJO.setPasswork('pass'); excelPOJO.setLook('look'); ExcelPOJO POJO2 = new ExcelPOJO(); POJO2.setName('name2'); POJO2.setPasswork('pass2'); POJO2.setLook('look2'); ExcelPOJO POJO3 = new ExcelPOJO(); POJO3.setName('name3'); POJO3.setPasswork('pass3'); POJO3.setLook('look3'); List<ExcelPOJO> list = new ArrayList<>(); list.add(excelPOJO); list.add(POJO2); list.add(POJO3); /**列名對應實體類中成員變量@excelRescoure的值,只需要寫入要的列明,不必全部成員變量都寫上*/ String[] arr = {'姓名', '密碼'}; String s = excelWrite.writeToExcelByPOJO('D:123.xls', arr, list); System.out.println(s); /**HashMap測試 * writeToExcelByHashMap (String path, String[] array, List<HashMap> list,String[] key) * @path:excel文件路徑 * @array[]:文件首行數據列名,可為空,為空時不存在首行列名 * @List<Map<?,?>>:HashMap數據數列 * @key:hashmap里面的key值,需要一一對應列名的順序 * 注意同名的Excel會被覆蓋,請寫好文件名字和對應的后綴 */ HashMap hashMap= new HashMap<>(); hashMap.put('1','q'); hashMap.put('0','w'); hashMap.put('5','e'); hashMap.put('2','r'); HashMap hashMap2= new HashMap<>(); hashMap2.put('1','q2'); hashMap2.put('0','w2'); hashMap2.put('5','e2'); hashMap2.put('2','r2'); /**列名順序*/ String[] arr2 = {'第一列','第二列','第三列','第四列'}; /**HashMap中的數據KEY對應列名順序,不存在列名或順序要求可隨意,但該數組數據必須要*/ String[] key = {'0','1','2','5'}; List list = new ArrayList(); list.add(hashMap); list.add(hashMap2); String s = excelWrite.writeToExcelByHashMap('D:123.xls', arr2, list,key); System.out.println(s); /**List測試 * writeToExcelByList(String path, String[] array, List<List> list) * @path:excel文件路徑 * @array[]:文件首行數據列名,可為空,為空時不存在首行列名,列名需要和數列的數據順序一一對應 * @List<List>:數列數據數列 * 注意同名的Excel會被覆蓋,請寫好文件名字和對應的后綴 */ String[] arr3 = {'第一列','第二列','第三列','第四列'}; List data = new ArrayList(); data.add('1'); data.add('2'); data.add('3'); data.add('4'); List data2 = new ArrayList(); data2.add('5'); data2.add('6'); data2.add('7'); data2.add('8'); List<List> list1 = new ArrayList(); list1.add(data); list1.add(data2); String s = excelWrite.writeToExcelByList('D:123.xls', arr3, list1); System.out.println(s); }}6.運行結果和說明

1.實體類測試結果

SpringBoot內存數據導出成Excel的實現方法SpringBoot內存數據導出成Excel的實現方法

2.HashMap測試

SpringBoot內存數據導出成Excel的實現方法

3.List測試

SpringBoot內存數據導出成Excel的實現方法

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

SpringBoot實現Excel讀取在另一篇文章 文章地址:https://www.jb51.net/article/202762.htm

總結

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

標簽: excel
相關文章:
主站蜘蛛池模板: www亚洲成人 | 免费日韩精品 | 老汉色影院 | 国产欧美日韩综合精品 | 一级做a爰片性色毛片 | 日韩国产精品一区二区三区 | 日韩欧美国产一区二区 | 午夜影院免费 | 国外成人在线视频网站 | 国精产品一区二区三区有限公司 | 国产综合精品 | 欧美激情性国产欧美无遮挡 | 国产传媒在线视频 | 精品欧美一区二区精品久久久 | 欧美日韩国产在线观看 | 国产专区一区 | 国产成人精品一区二区三区四区 | 欧洲精品久久久 | 精品美女在线观看视频在线观看 | 日韩av一区二区三区四区 | 在线观看免费黄色 | 91在线免费视频 | 亚洲综合无码一区二区 | 精品美女在线观看视频在线观看 | av一二三区 | 国产一区不卡视频 | 亚洲免费在线视频 | 亚洲每日更新 | 免费高清av | 香蕉大人久久国产成人av | 欧美中文在线 | 国产丝袜人妖ts黄檬 | 91精品国产乱码久久久久久久久 | 暖暖视频日韩欧美在线观看 | 在线三级电影 | 日韩精品一区二区三区视频播放 | 久久99精品久久久久久按摩秒播 | 国产高清精品一区二区三区 | 成av在线 | 天天操免费 | 亚洲综合无码一区二区 | 九九热有精品 | а天堂中文最新一区二区三区 | 美女张开腿视频网站免费 | 日韩一区二区在线观看视频 | 国产中文字幕在线 | 中文字幕在线视频第一页 | 久久免费视频9 | 天天干狠狠干 | 成人精品视频在线观看 | 久久国产精品99精国产 | 欧美日韩福利 | 日韩精品一区二区三区 | 福利片在线观看 | 久草在线高清 | 国产一区二区在线免费观看 | 亚洲免费电影一区 | 亚洲一区欧美 | 一区二区久久 | 91性高湖久久久久久久久_久久99 | 国产99久久久久久免费看农村 | 九色视频网站 | 噜噜噜噜噜在线视频 | 精品视频在线观看一区二区 | 最新日韩视频 | 免费午夜电影 | 亚洲午夜精品片久久www慈禧 | 成人午夜影院 | 国产乱码精品一区二区三区中文 | 在线免费黄色小视频 | 亚洲精品在线播放 | 午夜精品一区 | 成人三级网址 | 黄色影视网址 | 午夜av电影院 | 国产精品乱码一区二区三区 | 久久久久久91 | 欧美在线一区二区三区 | 国产精品久久久久久久岛一牛影视 | 国产欧美亚洲精品 | 色黄视频在线看 | 亚洲精品日本 | 青青草视频网站 | 欧美在线小视频 | 成人午夜电影在线观看 | 午夜男人天堂 | 婷婷国产成人精品视频 | 日韩在线中文字幕 | 欧美日韩国产一区二区三区在线观看 | 成人国产在线 | 日韩欧美国产精品综合嫩v 国产高清av在线一区二区三区 | 久久国产精品99久久久久久老狼 | av男人天堂网| 日韩一区二区在线观看视频 | 一区二区日本 | 黄色片网站在线免费观看 | 久久男人 | 7799精品视频 | 2024天天干| 黄桃av| 久久久久久国产精品 | 91玖玖| 一区二区三区精品 | 欧美精品1区2区3区 国产女无套免费网站 | 91av爱爱| 欧美一区二区另类 | 青青草人人 | 精品国产乱码久久久久久1区2区 | 在线观看国产小视频 | 日韩一片 | 成人午夜视频在线观看 | 久久精视频 | 亚洲成人激情在线观看 | 久久久久久久久久一区二区 | 精品久久久久国产 | 国产69精品久久久久观看黑料 | 欧美日韩亚洲成人 | 天堂伊人网 | 91性高湖久久久久久久久网站 | 福利视频一区二区 | 一区二区三区在线免费播放 | 中文字幕自拍偷拍 | 蜜桃视频在线观看www社区 | 成人妇女免费播放久久久 | 久久99精品久久久久久青青日本 | 岛国av在线 | 操操操夜夜操 | www日本高清视频 | 99久久日韩精品视频免费在线观看 | 91精品福利 | julia中文字幕久久一区二区 | 欧美色欧美亚洲另类七区 | 国产欧美在线观看 | 99精彩视频 | 色黄网站| 欧美激情a∨在线视频播放 中文字幕网在线 | 欧美精品91| aa级毛片毛片免费观看久 | 成人激情视频在线免费观看 | 亚洲一区二区三区久久 | 国产aⅴ一区二区 | 青青草综合在线 | chengrenzaixian| 国产二区三区 | 懂色av色香蕉一区二区蜜桃 | 成人18视频在线观看 | av色伊人久久综合一区二区 | 99爱在线观看 | 超碰人人插| www.99re| 欧美久久精品一级c片 | 日韩一区二区在线观看视频 | 欧美一区二区在线视频 | 亚洲一区二区三区四区五区午夜 | 精品视频一区二区三区四区 | 午夜私人影院在线观看 | 欧美成人精品激情在线观看 | 欧美理论片在线观看 | 国产精品国产三级国产aⅴ无密码 | 国产精品久久久久久久久久久免费看 | 成人一区av| 免费观看视频www | 欧美精品在线视频 | 亚洲社区在线观看 | 国产精品视频导航 | 日本中文字幕一区 | 成人夜晚看av | 欧美怡红院视频一区二区三区 | 不卡久久 | 久久综合成人精品亚洲另类欧美 | 国产综合视频在线播放 | 久久久综合亚洲91久久98 | 久在线视频播放免费视频 | 日本一区高清 | 欧美日韩国产在线观看 | 日韩久久久 | 国产视频福利一区 | 黄色一级毛片 | 免费av一区二区三区 | 毛片网站免费在线观看 | 国产精品久久精品 | 精品视频免费观看 | 国产精品亚洲综合 | 日韩精品成人 | 91免费观看视频 | 亚洲国产精品综合久久久 | 欧美日韩不卡合集视频 | 亚洲一区在线日韩在线深爱 | 久草精品视频 | av大片| 97国产精品视频人人做人人爱 | 午夜精品久久久久久久久久久久久 | 亚洲 成人 av | 亚洲精品亚洲人成人网 | 久久久久久久久久久久久久久久久久久 | 男人久久天堂 | 久久精品中文 | 久草福利在线视频 | 成人免费视频网 | 成人在线免费观看 | 亚洲精品在线播放视频 | 99久久精品国产一区二区成人 | 国产在线小视频 | 日本免费三片免费观看 | 久久精品久久久久久 | 亚洲高清在线 | 成人午夜免费视频 | 日本成人中文字幕在线观看 | 中文字幕日韩av | 精品一区免费观看 | 日本久久久久久 | a级毛片免费高清视频 | 999精品在线 | 国产乱码精品一区二区三区中文 | 亚洲成人久久久 | 国产精品二区三区 | 精品久久久久久久人人人人传媒 | 中文字幕av第一页 | 人人干人人干人人干 | 91久草视频 | 久久久精品免费观看 | 色综合99| 毛片免费看| 亚洲综合无码一区二区 | 欧美二区精品 | a免费在线| 国产精品久久国产愉拍 | 五月婷婷激情 | 欧美一区二区三区在线观看视频 | 美女一区二区三区在线观看 | 成人毛片视频免费 | 日韩欧美中文字幕在线视频 | 中文视频在线 | 欧美日韩不卡合集视频 | 欧美日韩一区二区三区在线观看 | 国产视频精品免费 | 日韩激情欧美 | 一区亚洲| 亚洲欧美精选 | 国产精品毛片久久久久久 | 亚洲一区二区三区在线视频 | 在线欧美a| 这里只有精品视频 | 国产成人免费视频 | www.fefe66.com| 欧美一区二区三区四区视频 | 国产成人精品久久二区二区 | 亚洲免费在线播放 | 欧美影院| 久久久.com | 中文字幕成人在线 | www.亚洲 | 伊人网站 | 国产视频久久久久久久 | 中文字幕在线视频精品 | 日本美女一区二区三区 | 国产美女www爽爽爽免费视频 | 亚洲精品一区 | 91香蕉 | 精品国产一区二区三区高潮视 | www.啪啪| 中国一级大黄大黄大色毛片 | 精品国产一区二区三区久久 | 精品免费国产一区二区三区 | 成av在线 | 国产免费自拍 | 91精品国产综合久久国产大片 | 国产日韩一区二区三区 | 国产精品久久久久久网站 | 91久久夜色精品国产网站 | 91久久国产综合久久 | 日韩精品免费在线视频 | 久久精品欧美 | 在线日韩 | 999精品视频| 最近免费中文字幕在线视频2 | 国产ts余喵喵和直男多体位 | 精品免费视频 | 一区二区在线看 | 免费黄看片| a级在线观看免费 | 91免费在线视频 | 日韩精品www | 国产精品91久久久久 | 日韩欧美在线免费观看 | 在线免费毛片 | 日韩精品一区二区三区中文在线 | 国产91综合一区在线观看 | 超碰在线国产 | 久久51 | 国产精品99视频 | 亚洲欧美国产毛片在线 | 欧美高清视频在线观看 | 精品国产乱码久久久久久密桃99 | 国产精品一区二区久久久 | 久久久久久亚洲 | 亚洲第一色片 | 欧美视频中文字幕 | 欧美激情一区二区 | 国产一级免费 | 国产精品亚洲一区 | 久久久久久久中文 | 免费国产一区二区 | 欧美伦理一区二区 | 狠狠爱天天干 | 福利在线播放 | 久久综合一区二区 | 国产一区二区三区久久久 | 亚洲毛片在线观看 | 亚洲 欧美 精品 | 国产精品无码久久久久 | 久久精品国产精品亚洲 | 精品一区av | 美女视频一区二区三区 | 久久99精品久久久久久琪琪 | 精品视频在线视频 | 免费xxxx大片国产在线 | 中文字幕 欧美 日韩 | 最新的黄色网址 | 亚洲一区二区精品在线观看 | 久久色av | 久久人人爽人人爽 | 国产在线一区二区三区 | 一区二区三区日韩 | 日韩综合 | 日本在线免费观看 | 伊人网网站| 久久久久久亚洲国产 | 视频在线一区二区 | 日韩欧美在线播放视频 | 欧美一级片在线观看 | 日韩不卡一区二区三区 | 亚洲国产精品福利 | 欧美另类一区二区 | 精品国产一区二区三区在线观看 | 国产精品视频一区二区三区不卡 | 在线a级毛片 | 久久91久久久久麻豆精品 | 一区二区久久久 | 亚洲卡一 | 国产精品久久久久一区二区三区 | 国产高清av在线一区二区三区 | 日本成人高清视频 | 亚洲精品三级 | 日本理伦片午夜理伦片 | 日韩免费一级 | av在线一区二区 | 中文字幕亚洲欧美日韩在线不卡 | 成人福利视频 | 日韩欧美一区二区三区久久婷婷 | 精品视频一区二区三区 | 日韩视频一区二区 | 精品在线一区二区 | 男女免费在线观看视频 | 波多野结衣一区二 | 超碰人人插 | 精品91久久久 | 中文字幕亚洲欧美日韩在线不卡 | 99这里只有精品视频 | 伊人网视频 | 波多野结衣先锋影音 | 亚洲成人一区二区 | 91精品国产99久久久久久红楼 | 国产精品婷婷午夜在线观看 | 午夜精品久久久久久久男人的天堂 | 亚洲欧美自拍视频 | a级片在线观看 | 一区二区免费视频 | 欧美日在线| 福利视频1000 | www.av7788.com| 日韩精品一二三 | 日韩一区二区精品 | 国产一级视频在线观看 | 2020亚洲视频 | 九九在线视频 | 日韩三级黄 | 成人在线观看免费视频 | 国产精品一区二区不卡 | 久久1区| 国产夜夜夜 | 成人免费高清视频 | 男女国产网站 | 国产91久久精品一区二区 | 中文字幕 在线观看 | 视频一区二区三 | 91中文字幕在线观看 | 自拍偷拍小视频 | 午夜精品一区二区三区在线 | 99草免费视频 | 九九亚洲 | 黄色资源网站 | 中国妞xxxhd露脸偷拍视频 | 一区在线观看视频 | 日韩伦理一区二区 | 国产一级在线观看 | 禁果av一区二区三区 | 亚洲免费视频一区二区 | 国产在线观看一区 | 精品久久久久一区二区国产 | 欧美一区二区三区视频 | 欧美日韩在线精品 | 日韩网站免费观看 | 黄色毛片观看 | 欧美国产综合 | 婷婷激情在线 | 日韩欧美国产一区二区三区 | 在线日韩视频 | 亚洲免费在线视频 | 一级黄色短片 | 成人在线视频播放 | 偷拍呻吟高潮91 | 男人av网| 免费成人高清 | 97色婷婷成人综合在线观看 | 亚洲精品一二三 | 国产在线视频一区二区 | 国产在线中文字幕 | 欧美一区二区三区xxxx监狱 | 国产午夜一区二区三区 | 亚洲成人日韩 | 91天堂在线观看 | 亚洲精品久久久久久久久久久久久 | 亚洲激情在线 | 99精品久久久久 | 精品视频久久 | www.色在线| 欧美亚洲日本 | 中文字幕在线欧美 | 久久国产精品视频 | 狠狠狠| www.一区 | 午夜国产精品视频 | 国产中文字幕一区 | 青青久久北条麻妃 | 人人干在线视频 | 久久久国产视频 | 日本久久精品一区二区 | 亚洲一区二区在线 | 欧美日韩激情在线 | 欧美一区二区三区精品 | 亚洲精品网址 | 亚洲精品自在在线观看 | 国产高潮在线观看 | 性瘾调教校园h | 中文字幕一区二区三区免费视频 | 激情开心成人网 | 亚洲女人的天堂 | 久久99精品久久久久久青青日本 | 久久久久亚洲视频 | 国产一区二区三区免费视频 | 欧美激情精品久久久久久免费 | 国产一区二区三区久久 | 一级毛片色一级 | 久久中文字幕一区 | 亚洲1区2区在线 | 色伊人网 | 久久精彩 | 成人欧美一区二区三区黑人孕妇 | 国产成人精 | 中文字幕观看 | 亚洲不卡在线观看 | 北条麻妃国产九九九精品小说 | 日韩欧美在线一区 | 免费黄色毛片视频 | 日日做 | 国产综合精品一区二区三区 | 黄色一级影视 | 欧美成人精品一区二区 | 日韩视频一区二区三区 | 免费h| 午夜精品视频 | 久久久精品一区二区三区 | 免费99精品国产自在在线 | 久久久久久久一区 | 成人午夜免费视频 | 久久久久久综合 | 免费看一区二区三区 | 电影午夜精品一区二区三区 | 国产999免费视频 | 一区二区三区视频 | 久久色av| 欧美视频在线免费看 | 中文字幕在线日韩 | 国产一区二区三区免费看 | 精品亚洲成a人片在线观看 国产高清在线 | 中文字幕在线观看 | 国产福利91精品一区二区 | 操人网址 | 在线观看免费毛片视频 | 欧美日韩免费在线 | 国产伦精品一区二区三区四区视频 | 精品久久久久一区二区国产 | 91视频网| 国产精品美女久久久久久久久久久 | 日韩免费视频 | 亚洲免费视频在线 | 欧美亚洲一区二区三区 | 国产精品久久久99 | 国产成人av电影 | 国产精品黄视频 | 日韩精品一91爱爱 | 大黑人交xxx极品hd | 欧美一级成人欧美性视频播放 | 成人在线免费观看 | 久久在线 | 亚洲成人精品一区 | 免费大片黄在线观看 | 亚洲成人精品久久 | 亚洲国产高清在线 | 精品国产乱码久久久久夜 | 日韩国产精品一区二区三区 | 国产精品久久久久久久久免费桃花 | 国产精品久久久久久久久久久久 | 欧美一级高清在线 | 欧美视频在线一区 | 国产午夜久久 | 亚洲欧美福利视频 | 国产激情视频在线 | 午夜在线视频 | 欧美在线一区二区三区 | 国产精品久久嫩一区二区 免费 | 自拍偷拍视频网站 | 欧美一区精品 | 国产日韩一区二区 | 日韩av免费在线播放 | 国产成人精品免高潮在线观看 | 一级毛片大全免费播放 | 一区二区三区欧美在线 | 精品中文在线 | 午夜视频 | 噜噜噜在线 | 久久久久久国产 | 亚洲日本精品视频 | 性欧美大战久久久久久久免费观看 | 99国产精品 | 天天草天天干天天 | 狠狠躁天天躁夜夜添人人 | 狠狠狠色丁香婷婷综合久久五月 | 日韩欧美在线视频 | 欧日韩毛片 | 亚洲v在线 | 国内精品视频一区国产 | 91精品电影 | 久草久 | 国产成人在线一区二区 | 精品欧美黑人一区二区三区 | 伊人av在线| 欧美日韩视频在线第一区 | 蜜桃臀一区二区三区 | 九九资源站| 欧美日韩中文在线 | 精品国产一区二区三区不卡蜜臂 | v888av成人 | 久久久国产精品入口麻豆 | 欧美精品片 | 最新国产精品 | 中文字幕7777 | 精品中文一区 | 四虎影院网站 | 99在线视频观看 | 热久久免费视频 | 一区二区影院 | 国产成人精品午夜视频免费 | 亚洲人成人一区二区在线观看 | 国产精品日韩一区二区 | 成人h视频在线观看 | 午夜精品久久久久久久久久久久 | 亚洲久久久久久 | 国产一区二区三区久久久 | 欧美日韩视频在线观看一区 | 成人一级| 亚洲欧洲精品视频在线观看 | 日韩精品免费在线视频 | 日本中文字幕在线视频 | 国产精品久久久久久久免费大片 | 婷婷中文字幕 | 91av视频在线 | 一区二区久久 | 综合天天 | 亚洲一区二区福利 | 精品在线视频观看 | 四虎影院网 | 国产成人激情 | 不卡一区 | 久久亚洲天堂 | 青青草草 | 亚洲一区二区三区四区五区午夜 | www.国产 | 欧美精品网 | 青青草一区 | 亚洲电影免费 | 日本成人高清视频 | 色综久久 | 99国内精品久久久久久久 | www.国产.com| 一级在线观看 | 一色桃子av一区二区免费 | 一区二区免费看 | 婷婷综合五月天 | 国产成人精品亚洲777人妖 | 欧美精品在线视频 | 男女羞羞视频免费观看 | 精品久久久久久久久久久久久久 | 精品国产一区二区三区久久久蜜臀 | 午夜一区二区三区在线观看 | 91免费观看视频 | 精品久久久久久久久久久久久久 | 国产午夜精品视频 | 亚洲国产精品久久人人爱 | 久久久久久免费毛片精品 | 中文一区二区 | 欧美涩涩网站 | 成人午夜毛片 | 在线观看免费黄色小视频 |