日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

poi和easyExcel基于Java操作Excel学习笔记

發(fā)布時(shí)間:2023/12/14 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 poi和easyExcel基于Java操作Excel学习笔记 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1 學(xué)習(xí)前言

Excel和讀寫(xiě)和文件的讀寫(xiě)沒(méi)有本質(zhì)的區(qū)別,都是屬于IO操作,我們使用原生的IO就能解決Excel的導(dǎo)入和導(dǎo)出,當(dāng)然操作起來(lái)比較麻煩,性能也不高,這次我們就學(xué)習(xí)poi和easyExcel(它們都屬于第三方工具)的方式去基于Java和Mysql數(shù)據(jù)庫(kù)導(dǎo)入導(dǎo)出我們的Excel的數(shù)據(jù)

poi:Apache

easyExcel:阿里巴巴開(kāi)源的工具

2 使用常用場(chǎng)景

1 將大量的數(shù)據(jù)導(dǎo)入為excel表格

2 將excel表中的信息錄入到數(shù)據(jù)庫(kù)(比如習(xí)題上傳)(也叫批量插入),大大減輕我們?nèi)斯つ酥辆W(wǎng)站的錄入量

開(kāi)發(fā)中經(jīng)常會(huì)涉及到對(duì)Excel的處理,如導(dǎo)入Excel,導(dǎo)出Excel到數(shù)據(jù)庫(kù)

目前操作excel比較流行的就是Apache POI和阿里巴巴的easyExcel

3 Apache POI

官網(wǎng): https://poi.apache.org


Apache給我們提供的POI不僅可以操作excel格式,對(duì)于word,ppt,visio都是提供支持的,而且語(yǔ)法大概類(lèi)似

HSSF是處理普通的excel的

XSSF是處理OOXML格式的excel的

值得注意點(diǎn)是,雖然HSSF和XSSF都可以處理excel,但是還是有差距

比如excel主要有兩個(gè)版本 03版和07版,其中03版的行數(shù)最多只能存65535行,07版的是沒(méi)有限制的

如果想要操作Word,那么使用HWPF

如果想要操作PPT,那么使用HSLF

如果想要操作Visio,那么使用HDGF

原生的POI使用起來(lái)比較麻煩,而且量大的時(shí)候會(huì)報(bào)OOM異常(out of memory的簡(jiǎn)稱(chēng),稱(chēng)之為內(nèi)存溢出),但是現(xiàn)在很多市面上的工具底層也是會(huì)使用封裝POI的

4 easyExcel(阿里巴巴開(kāi)源工具)

官網(wǎng):https://github.com/alibaba/easyexcel

官方文檔:https://www.yuque.com/easyexcel/doc/easyexcel

easyExcel是阿里巴巴開(kāi)源的一個(gè)對(duì)于excel處理工具(框架)以使用簡(jiǎn)單,節(jié)省內(nèi)存著稱(chēng)

easyExcel能大大減少內(nèi)存占用的主要原因是在解析excel中沒(méi)有將文件數(shù)據(jù)一次性全部加載到內(nèi)存中,而是從磁盤(pán)上一行一行的讀取,逐個(gè)解析
由于POI比較原生比較復(fù)雜,我們后研發(fā)出新的(工具)框架easyExcel,它是阿里巴巴退出的對(duì)于POI的后續(xù)產(chǎn)品,并且對(duì)POI做了升級(jí)和優(yōu)化,不會(huì)因?yàn)閑xcel數(shù)據(jù)量過(guò)大引起oom異常(內(nèi)存溢出),使我們用起來(lái)更加的方便(讀寫(xiě)Excel只需要一行代碼!)

5 poi和easyExcel的不同

主要在于內(nèi)存和操作過(guò)程

比如我們現(xiàn)在excel表有100W數(shù)據(jù)

1 poi是先把數(shù)據(jù)加載到內(nèi)存,如果我們內(nèi)存比較小,Java是會(huì)直接報(bào)OOM內(nèi)存溢出異常,這時(shí)候就會(huì)有問(wèn)題,但是easyExcel它就比較簡(jiǎn)單只能,就算讀寫(xiě)100W行數(shù)據(jù),會(huì)一行一行的讀寫(xiě),不會(huì)直接全部解析

2poi會(huì)一次性全部讀取和返回execl表格的數(shù)據(jù),但是easyExcel不會(huì)這樣,它沒(méi)有將文件數(shù)據(jù)一次性全部加載到內(nèi)存中,而是從磁盤(pán)上一行一行的讀取,逐個(gè)解析

poi和easyExcel的本質(zhì)上就是時(shí)間和空間的轉(zhuǎn)換,根據(jù)我們的需求自行選擇即可

6 poi excel寫(xiě)

1 創(chuàng)建Java項(xiàng)目

2 pom引入依賴(lài)

<!--導(dǎo)入依賴(lài)jar包--> <!--xls(03)--> <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.9</version> </dependency><!--xlsx(07)--> <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.9</version> </dependency><!--日期格式化工具--> <dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId><version>2.10.1</version> </dependency><!--單元測(cè)試--> <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version> </dependency>

3 本地創(chuàng)建兩個(gè)excel 分別是03版和07版

首先03版,它最多有65536行

但是07版的,是沒(méi)有限制的

他們對(duì)應(yīng)的后綴也是不一樣的,03版本的xls,07版本的是xslx,這意味著操作它們的工具類(lèi)也不相同.03版本用的是poi,07版用的則是poi-ooxml

4 Java的宗旨就是萬(wàn)物皆對(duì)象,我們也要把excel當(dāng)成我們的一個(gè)對(duì)象去處理

1 工作薄
首先我們打開(kāi)的excel就是一個(gè)大對(duì)象,也叫工作簿,它包括以下內(nèi)容

2 工作表
每一個(gè)sheet也是我們excel對(duì)象的屬性,也叫工作表,我們肯定是現(xiàn)有工作簿才會(huì)有工作表,而且會(huì)默認(rèn)自帶sheet,也可以根據(jù)我們的需要自行添加sheet工作表

3 行
excel中有很多行,每一行也是我們excel對(duì)象的屬性(橫的叫行,豎的叫列)

4 列
excel中有很多列,每一列也是我們excel對(duì)象的屬性(橫的叫行,豎的叫列)

5 單元格
一行一列有很多個(gè)單元格,每一個(gè)單元格也是我們excel對(duì)象的屬性

創(chuàng)建我們的測(cè)試類(lèi),創(chuàng)建Workbook對(duì)象,按著ctrl點(diǎn)進(jìn)去發(fā)現(xiàn)它是一個(gè)接口

點(diǎn)擊箭頭可以看到它的三個(gè)實(shí)現(xiàn)類(lèi)



定義工作簿,工作表,行列,單元格,和我們手動(dòng)創(chuàng)建excel是一樣的操作,只不過(guò)是用代碼來(lái)實(shí)現(xiàn)


03版本excel IO操作寫(xiě)的全部代碼如下

package com.wyh.Test;import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; 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.joda.time.DateTime; import org.junit.Test;import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.util.Date;/*** @program: JavaExecl* @description: 寫(xiě)excel 03版本* @author: 魏一鶴* @createDate: 2021-12-12 10:42**/public class ExcelWrite03 {//全局路徑,供我們操作使用方便static String path="D:\\Tools\\JavaWorkSpace\\JavaExecl\\";@Testpublic void ExcelWrite03() throws Exception {//1創(chuàng)建一個(gè)工作簿Workbook workbook=new HSSFWorkbook();//2創(chuàng)建一個(gè)工作表 工作簿里面包含工作表,所以創(chuàng)建工作表要通過(guò)工作簿創(chuàng)建//默認(rèn)的工作表是沒(méi)有名字的,需要我們手動(dòng)賦值,和我們?cè)趀xcel中更改sheet工作表的名稱(chēng)是一樣的 操作Sheet sheet=workbook.createSheet("用戶(hù)表");//3創(chuàng)建行 行也是在我們的表中存在的,所以需要用到表來(lái)創(chuàng)建//默認(rèn)從0開(kāi)始 也就是第一行Row row1 = sheet.createRow(0);//創(chuàng)建單元格 第一行的第一個(gè)數(shù)據(jù) 用坐標(biāo)表示為(1,1)Cell cell11 = row1.createCell(0);//創(chuàng)建單元格 第一行的第二個(gè)數(shù)據(jù) 用坐標(biāo)表示為(1,2)Cell cell12 = row1.createCell(1);//給單元格賦值cell11.setCellValue("姓名");cell12.setCellValue("魏一鶴");//創(chuàng)建第二行Row row2=sheet.createRow(1);//創(chuàng)建第二行的第一列Cell cell21 = row2.createCell(0);Cell cell22 = row2.createCell(1);//給單元格賦值(2.1)cell21.setCellValue("出生日期");//創(chuàng)建時(shí)間并且格式化String s = new DateTime().toString("yyyy-MM-dd HH:mm:ss");//給單元格賦值(2.2)cell22.setCellValue(s);//生成一張表 其實(shí)就是IO流操作 03版本就是使用xls文件結(jié)尾FileOutputStream fileOutputStream = new FileOutputStream(path + "用戶(hù)測(cè)試03.xls");//輸出工作簿workbook.write(fileOutputStream);//關(guān)閉流fileOutputStream.close();System.out.println("用戶(hù)測(cè)試03.xls生成完畢");} }

運(yùn)行后發(fā)現(xiàn),會(huì)在項(xiàng)目本地生成我們定義的excel,打開(kāi)查看



03版和07版的區(qū)別如下

1 03版本有最大長(zhǎng)度現(xiàn)在 07版本沒(méi)有

2 03版本后綴xls 07版本后綴xlsx

3 03版本使用的工具是HSSF,07版本使用的是XSSF

5 大數(shù)據(jù)繞導(dǎo)入導(dǎo)出(批量)

真實(shí)開(kāi)發(fā)中,大多數(shù)就是大數(shù)據(jù)批量導(dǎo)入或者導(dǎo)出excel

大文件寫(xiě)HSSF

缺點(diǎn):最多只能處理65536行,否則會(huì)報(bào)內(nèi)存溢出異常

優(yōu)點(diǎn):過(guò)程中寫(xiě)入緩存,不操作磁盤(pán),最后一次性寫(xiě)入磁盤(pán),速度快

大文件寫(xiě)XSSF

缺點(diǎn):寫(xiě)數(shù)據(jù)時(shí)速度非常慢,非常消耗內(nèi)存,也會(huì)發(fā)生內(nèi)存溢出,比如100萬(wàn)條

優(yōu)點(diǎn):可以寫(xiě)較大的數(shù)據(jù)量,比如20萬(wàn)條

03版本HSSF循環(huán)導(dǎo)入65536行數(shù)據(jù)(03版本最大行就是65536)

03版本HSSF循環(huán)插入65536條

package com.wyh.Test;import org.apache.poi.hssf.usermodel.HSSFWorkbook; 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.junit.Test;import java.io.FileOutputStream;/*** @program: JavaExecl* @description: 大數(shù)據(jù)量寫(xiě)03版本* @author: 魏一鶴* @createDate: 2021-12-14 23:31**/public class BigDateExcelWrite03 {//全局路徑,供我們操作使用方便static String path = "D:\\Tools\\JavaWorkSpace\\JavaExecl\\";@Testpublic void BigDateExcelWrite03() throws Exception {//開(kāi)始時(shí)間 用于計(jì)算時(shí)間差long beginTime = System.currentTimeMillis();//創(chuàng)建工作簿 03版本使用HSSFWorkbook workbook = new HSSFWorkbook();//創(chuàng)建工作表 這里就不給它命令了 按照默認(rèn)的來(lái)Sheet sheet = workbook.createSheet();//寫(xiě)入數(shù)據(jù) 循環(huán)插入65536行數(shù)據(jù),03版的HSSF最多只能插入65536行for (int rowNum = 0; rowNum < 65536; rowNum++) {//循環(huán)創(chuàng)建行Row row = sheet.createRow(rowNum);for(int cellNum=0;cellNum<10;cellNum++){//循環(huán)插入列Cell cell = row.createCell(cellNum);//循環(huán)設(shè)置值cell.setCellValue(cellNum);}}System.out.println("生成excel表完畢");//03版本的后綴是xls//開(kāi)啟文件流FileOutputStream fileOutputStream = new FileOutputStream(path + "BigDateExcelWrite03.xlsx");//開(kāi)始寫(xiě)excelworkbook.write(fileOutputStream);//關(guān)閉流fileOutputStream.close();//結(jié)束時(shí)間long endTime = System.currentTimeMillis();//輸出花費(fèi)的時(shí)間System.out.println("花費(fèi)的時(shí)間:"+(double)(endTime - beginTime)/1000);} }

運(yùn)行發(fā)現(xiàn)excel已經(jīng)創(chuàng)建成功,速度也非常的快

打開(kāi)查看
已知03版本xls最多存65536行,那么如果我們循環(huán)插入65537行會(huì)怎么樣呢? 保留源代碼,循環(huán)最大值設(shè)置為65537

再次運(yùn)行發(fā)現(xiàn)會(huì)報(bào)錯(cuò)

java.lang.IllegalArgumentException: Invalid row number (65536) outside allowable range (0..65535)

07版本XSSF循環(huán)插入65536條

把后綴改為xlsx,把HSSF緩存XSSF即可

package com.wyh.Test;import org.apache.poi.hssf.usermodel.HSSFWorkbook; 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.junit.Test;import java.io.FileOutputStream;/*** @program: JavaExecl* @description: 大數(shù)據(jù)量寫(xiě)03版本* @author: 魏一鶴* @createDate: 2021-12-14 23:31**/public class BigDateExcelWrite07 {//全局路徑,供我們操作使用方便static String path = "D:\\Tools\\JavaWorkSpace\\JavaExecl\\";@Testpublic void BigDateExcelWrite07() throws Exception {//開(kāi)始時(shí)間 用于計(jì)算時(shí)間差long beginTime = System.currentTimeMillis();//創(chuàng)建工作簿 07版本的使用XSSFWorkbook workbook = new XSSFWorkbook();//創(chuàng)建工作表 這里就不給它命令了 按照默認(rèn)的來(lái)Sheet sheet = workbook.createSheet();//寫(xiě)入數(shù)據(jù) 循環(huán)插入65536行數(shù)據(jù),03版的HSSF最多只能插入65536行for (int rowNum = 0; rowNum < 65536; rowNum++) {//循環(huán)創(chuàng)建行Row row = sheet.createRow(rowNum);for(int cellNum=0;cellNum<10;cellNum++){//循環(huán)插入列Cell cell = row.createCell(cellNum);//循環(huán)設(shè)置值cell.setCellValue(cellNum);}}System.out.println("生成excel表完畢");//037版本的后綴是xlsx//開(kāi)啟文件流FileOutputStream fileOutputStream = new FileOutputStream(path + "BigDateExcelWrite07.xlsx");//開(kāi)始寫(xiě)excelworkbook.write(fileOutputStream);//關(guān)閉流fileOutputStream.close();//結(jié)束時(shí)間long endTime = System.currentTimeMillis();//輸出花費(fèi)的時(shí)間System.out.println("花費(fèi)的時(shí)間:"+(double)(endTime - beginTime)/1000);} }

雖然也運(yùn)行成功,但是可以明顯感覺(jué)到速度不如03版HSSF,但是可以存更多的數(shù)據(jù)

打開(kāi)excel查看發(fā)現(xiàn)數(shù)據(jù)到了65536停并沒(méi)有結(jié)束,說(shuō)明07版本XSSF上限不是65536,是可以存儲(chǔ)更多的,可以寫(xiě)更多的數(shù)據(jù)

如果我們正在查看同一個(gè)文件,但是又進(jìn)行其他操作,就會(huì)出現(xiàn)以下錯(cuò)誤,我們把我們正在查看的文件關(guān)閉讓它運(yùn)行,等運(yùn)行結(jié)束后再次打開(kāi)即可

java.io.FileNotFoundException: D:\Tools\JavaWorkSpace\JavaExecl\BigDateExcelWrite07.xlsx (另一個(gè)程序正在使用此文件,進(jìn)程無(wú)法訪(fǎng)問(wèn)。)

07版本XSSF導(dǎo)入100000條數(shù)據(jù),把循環(huán)數(shù)改為100000即可


既然XSSF可以存這么多數(shù)據(jù),但是速度比較慢,有沒(méi)有方法可以?xún)?yōu)化效率呢(緩存,這個(gè)問(wèn)題也可以叫做如何給poi加速

它就是Workbook接口三個(gè)實(shí)現(xiàn)類(lèi)之一的SXSSFWorkbook,其他的兩個(gè)我們上面都有操作過(guò)


這時(shí)候需要用到我們的SXSSF

優(yōu)點(diǎn):可以寫(xiě)非常大的數(shù)據(jù)量.如100萬(wàn)條甚至更多,寫(xiě)速度非常快,占用更少的

注意
1 過(guò)程中會(huì)產(chǎn)生臨時(shí)文件,需要清理臨時(shí)文件
2 默認(rèn)由100條記錄被保存在內(nèi)存中,如果超過(guò)這數(shù)量,則最前面的數(shù)據(jù)被寫(xiě)入臨時(shí)文件,當(dāng)然緩存數(shù)量也可以自定義
3 如果自定義內(nèi)存中數(shù)據(jù)的數(shù)量,可以使用new SXSSFWorkbook(數(shù)量)


SXSSF循環(huán)插入100000條數(shù)據(jù)

package com.wyh.Test;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.streaming.SXSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.junit.Test;import java.io.FileOutputStream;/*** @program: JavaExecl* @description: 大數(shù)據(jù)量寫(xiě)03版本* @author: 魏一鶴* @createDate: 2021-12-14 23:31**/public class BigDateExcelWrite07Super {//全局路徑,供我們操作使用方便static String path = "D:\\Tools\\JavaWorkSpace\\JavaExecl\\";@Testpublic void BigDateExcelWrite07Super() throws Exception {//開(kāi)始時(shí)間 用于計(jì)算時(shí)間差long beginTime = System.currentTimeMillis();//創(chuàng)建工作簿 07版本的使用XSSFWorkbook workbook = new SXSSFWorkbook();//創(chuàng)建工作表 這里就不給它命令了 按照默認(rèn)的來(lái)Sheet sheet = workbook.createSheet();//寫(xiě)入數(shù)據(jù) 循環(huán)插入65536行數(shù)據(jù),03版的HSSF最多只能插入65536行for (int rowNum = 0; rowNum < 100000; rowNum++) {//循環(huán)創(chuàng)建行Row row = sheet.createRow(rowNum);for(int cellNum=0;cellNum<10;cellNum++){//循環(huán)插入列Cell cell = row.createCell(cellNum);//循環(huán)設(shè)置值cell.setCellValue(cellNum);}}System.out.println("生成excel表完畢");//037版本的后綴是xlsx//開(kāi)啟文件流FileOutputStream fileOutputStream = new FileOutputStream(path + "BigDateExcelWrite07Super.xlsx");//開(kāi)始寫(xiě)excelworkbook.write(fileOutputStream);//關(guān)閉流fileOutputStream.close();//由于SXSSF會(huì)產(chǎn)生臨時(shí)文件,這里我們需要清除下臨時(shí)文件((SXSSFWorkbook) workbook).dispose();//結(jié)束時(shí)間long endTime = System.currentTimeMillis();//輸出花費(fèi)的時(shí)間System.out.println("花費(fèi)的時(shí)間:"+(double)(endTime - beginTime)/1000);} }

運(yùn)行發(fā)現(xiàn),excel也正常生成了,但是它(SXSSF)的速度比XSSF快的多

查看我們的super

這就是我們的臨時(shí)文件,隨著我們把文件的關(guān)閉,臨時(shí)文件也會(huì)隨之消失

7 poi excel讀

1 03版poi excel讀

package com.wyh.Test;import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; 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.junit.Test;import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FilterInputStream;/*** @program: JavaExecl* @description: 03版poi讀* @author: 魏一鶴* @createDate: 2021-12-15 23:20**/public class BigDateExcelRead03 {//全局路徑,供我們操作使用方便static String path = "D:\\Tools\\JavaWorkSpace\\JavaExecl\\";@Testpublic void BigDateExcelWrite03() throws Exception {//需要讀取,肯定需要流 所以這邊我們創(chuàng)建流FileInputStream filterInputStream = new FileInputStream(path+"用戶(hù)測(cè)試03.xls");// 1 創(chuàng)建工作簿 使用excel可以完成的操作這邊通過(guò)poi都可以完成//把我們的流放在工作簿用 用于讀取excel數(shù)據(jù)Workbook workbook = new HSSFWorkbook(filterInputStream);//2 獲取工作表 可以通過(guò)名稱(chēng)和下標(biāo)獲取工作表 這邊使用下標(biāo)獲取 0就是第一個(gè)工作表Sheet sheet = workbook.getSheetAt(0);//行列組成單元格//3 獲取行 下標(biāo)為0就是第一個(gè)Row row = sheet.getRow(0);//4 獲取列 下標(biāo)為0就是第一個(gè)Cell cell1 = row.getCell(0);Cell cell2 = row.getCell(1);//獲取單元格內(nèi)容// cell 有很多方法,獲取不同的數(shù)據(jù)需要用到不同的方法getStringCellValue獲取字符串//讀取值的時(shí)候 一定要只要數(shù)據(jù)類(lèi)型 根據(jù)不同的數(shù)據(jù)類(lèi)型使用不同的方法String stringCellValue = cell1.getStringCellValue();double numericCellValue = cell2.getNumericCellValue();System.out.println(stringCellValue);System.out.println(numericCellValue);//關(guān)閉流filterInputStream.close();} }



2 07版poi excel讀

只需要把引用對(duì)象(XSSF)和后綴(xlsx)改變即可

package com.wyh.Test;import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; 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.streaming.SXSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.junit.Test;import java.io.FileInputStream;/*** @program: JavaExecl* @description: 03版poi讀* @author: 魏一鶴* @createDate: 2021-12-15 23:20**/public class BigDateExcelRead07 {//全局路徑,供我們操作使用方便static String path = "D:\\Tools\\JavaWorkSpace\\JavaExecl\\";@Testpublic void BigDateExcelWrite07() throws Exception {//需要讀取,肯定需要流 所以這邊我們創(chuàng)建流FileInputStream filterInputStream = new FileInputStream(path+"用戶(hù)測(cè)試07.xlsx");// 1 創(chuàng)建工作簿 使用excel可以完成的操作這邊通過(guò)poi都可以完成//把我們的流放在工作簿用 用于讀取excel數(shù)據(jù)Workbook workbook = new XSSFWorkbook(filterInputStream);//2 獲取工作表 可以通過(guò)名稱(chēng)和下標(biāo)獲取工作表 這邊使用下標(biāo)獲取 0就是第一個(gè)工作表Sheet sheet = workbook.getSheetAt(0);//行列組成單元格//3 獲取行 下標(biāo)為0就是第一個(gè)Row row = sheet.getRow(0);//4 獲取列 下標(biāo)為0就是第一個(gè)Cell cell1 = row.getCell(0);Cell cell2 = row.getCell(1);//獲取單元格內(nèi)容// cell 有很多方法,獲取不同的數(shù)據(jù)需要用到不同的方法getStringCellValue獲取字符串//讀取值的時(shí)候 一定要只要數(shù)據(jù)類(lèi)型 根據(jù)不同的數(shù)據(jù)類(lèi)型使用不同的方法String stringCellValue1 = cell1.getStringCellValue();String stringCellValue2 = cell2.getStringCellValue();System.out.println(stringCellValue1);System.out.println(stringCellValue2);//關(guān)閉流filterInputStream.close();} }


8 讀取不同的數(shù)據(jù)類(lèi)型

首先準(zhǔn)備一個(gè)多種數(shù)據(jù)類(lèi)型的excel


獲取全部表頭信息

row.getPhysicalNumberOfCells() //獲取全部的列并返回行數(shù)

獲取全部表頭數(shù)并且打印輸出

package com.wyh.Test;import org.apache.poi.hssf.usermodel.HSSFWorkbook; 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.junit.Test;import javax.sql.RowSet; import java.io.FileInputStream;/*** @program: JavaExecl* @description: 讀取不同的excel數(shù)據(jù)類(lèi)型* @author: 魏一鶴* @createDate: 2021-12-16 23:42**/public class ReadManyInfo {//全局路徑,供我們操作使用方便static String path="D:\\Tools\\JavaWorkSpace\\JavaExecl\\";@Testpublic void BigDateExcelWrite07() throws Exception {//需要讀取,肯定需要流 所以這邊我們創(chuàng)建流FileInputStream filterInputStream = new FileInputStream(path+"會(huì)員消費(fèi)商品明細(xì)表.xls");// 1 創(chuàng)建工作簿 使用excel可以完成的操作這邊通過(guò)poi都可以完成//把我們的流放在工作簿用 用于讀取excel數(shù)據(jù)Workbook workbook = new HSSFWorkbook(filterInputStream);//2 獲取工作表Sheet sheet = workbook.getSheetAt(0);//3獲取行(表頭)Row rowTitle = sheet.getRow(0); //其實(shí)這就是我們的表頭 最上面的部分//判斷行不為空才讀if(rowTitle!=null){//如果行不為空才去讀列的信息//getPhysicalNumberOfCells()獲取全部的列并且返回行數(shù)int cellCount = rowTitle.getPhysicalNumberOfCells();System.out.println("cellCount = " + cellCount);for (int cellNum = 0; cellNum<cellCount; cellNum++) {//得到每一行的數(shù)據(jù)Cell cell = rowTitle.getCell(cellNum);//判斷每一行是否為空 不為空再做處理if(cell!=null){//獲取全部行的數(shù)據(jù)類(lèi)型int cellType = cell.getCellType();//獲取行的值String stringCellValue = cell.getStringCellValue();//進(jìn)行輸出 這里就不換行了 直接一行顯示用豎線(xiàn)分割System.out.print(stringCellValue+"|");}}//打印完一行換行打印另外一行System.out.println();}//關(guān)閉流filterInputStream.close();} }


打印結(jié)果和我們的excel表頭內(nèi)容個(gè)數(shù)是完全對(duì)的上的

獲取表中內(nèi)容

row.getPhysicalNumberOfCells() //獲取全部的列

比較復(fù)雜的就是不同的數(shù)據(jù)類(lèi)型進(jìn)行判斷,我們可以把這些提取成一個(gè)公用的方法


package com.wyh.Test;import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFDateUtil; import org.apache.poi.hssf.usermodel.HSSFWorkbook; 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.joda.time.DateTime; import org.junit.Test;import javax.sql.RowSet; import java.io.FileInputStream; import java.util.Date;/*** @program: JavaExecl* @description: 讀取不同的excel數(shù)據(jù)類(lèi)型* @author: 魏一鶴* @createDate: 2021-12-16 23:42**/public class ReadManyInfo {//全局路徑,供我們操作使用方便static String path="D:\\Tools\\JavaWorkSpace\\JavaExecl\\";@Testpublic void BigDateExcelWrite07() throws Exception {//需要讀取,肯定需要流 所以這邊我們創(chuàng)建流FileInputStream filterInputStream = new FileInputStream(path+"會(huì)員消費(fèi)商品明細(xì)表.xls");switchDataType(filterInputStream);}public void switchDataType( FileInputStream filterInputStream ) throws Exception {// 1 創(chuàng)建工作簿 使用excel可以完成的操作這邊通過(guò)poi都可以完成//把我們的流放在工作簿用 用于讀取excel數(shù)據(jù)Workbook workbook = new HSSFWorkbook(filterInputStream);//2 獲取工作表Sheet sheet = workbook.getSheetAt(0);//3獲取行(表頭)Row rowTitle = sheet.getRow(0); //其實(shí)這就是我們的表頭 最上面的部分//判斷行不為空才讀if(rowTitle!=null){//如果行不為空才去讀列的信息//getPhysicalNumberOfCells()獲取全部的列并且返回行數(shù)int cellCount = rowTitle.getPhysicalNumberOfCells();System.out.println("cellCount = " + cellCount);for (int cellNum = 0; cellNum<cellCount; cellNum++) {//得到每一行的數(shù)據(jù)Cell cell = rowTitle.getCell(cellNum);//判斷每一行是否為空 不為空再做處理if(cell!=null){//獲取全部行的數(shù)據(jù)類(lèi)型int cellType = cell.getCellType();//獲取行的值String stringCellValue = cell.getStringCellValue();//進(jìn)行輸出 這里就不換行了 直接一行顯示用豎線(xiàn)分割System.out.print(stringCellValue+"|");}}//打印完一行換行打印另外一行System.out.println();}//獲取表中的內(nèi)容int rowCount = sheet.getPhysicalNumberOfRows();//循環(huán)獲取數(shù)據(jù)for (int rowNum = 0; rowNum < rowCount; rowNum++) {Row row = sheet.getRow(rowNum);//不為空再做處理if(row!=null){//讀取行中的列 getPhysicalNumberOfCells獲取全部的列int cellCount = rowTitle.getPhysicalNumberOfCells();for (int cellNum = 0; cellNum < cellCount; cellNum++) {System.out.print("["+(rowNum+1)+"-"+(cellNum + 1)+"]");//獲取數(shù)據(jù)Cell cell = row.getCell(cellNum);//因?yàn)椴恢懒械臄?shù)據(jù)類(lèi)型 所以這里我們要匹配數(shù)據(jù)類(lèi)型//如果不為空if(cell != null){//獲取類(lèi)型int cellType = cell.getCellType();String cellValue="";//判斷cell的數(shù)據(jù)類(lèi)型switch (cellType) {case HSSFCell.CELL_TYPE_STRING://字符串System.out.print("【STRING】");cellValue = cell.getStringCellValue();break;case HSSFCell.CELL_TYPE_BOOLEAN://布爾System.out.print("【BOOLEAN】");cellValue = String.valueOf(cell.getBooleanCellValue());break;case HSSFCell.CELL_TYPE_BLANK://System.out.print("【BLANK】");break;case HSSFCell.CELL_TYPE_NUMERIC:System.out.print("【NUMERIC】");//cellValue = String.valueOf(cell.getNumericCellValue());if (HSSFDateUtil.isCellDateFormatted(cell)) {//日期System.out.print("【日期】");Date date = cell.getDateCellValue();cellValue = new DateTime(date).toString("yyyy-MM-dd");} else {// 不是日期格式,則防止當(dāng)數(shù)字過(guò)長(zhǎng)時(shí)以科學(xué)計(jì)數(shù)法顯示System.out.print("【轉(zhuǎn)換成字符串】");cell.setCellType(HSSFCell.CELL_TYPE_STRING);cellValue = cell.toString();}break;case Cell.CELL_TYPE_ERROR:System.out.print("【數(shù)據(jù)類(lèi)型錯(cuò)誤】");break;}System.out.println(cellValue);}}}}//關(guān)閉流filterInputStream.close();} }

9 計(jì)算公式

首先需要準(zhǔn)備一個(gè)excel

需要獲取計(jì)算公式eval FormulaEvaluator


如果我們用沒(méi)有計(jì)算公式的行,那么不會(huì)有用


package com.wyh.Test;import org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.*; import org.junit.Test;import java.io.FileInputStream; import java.io.FileNotFoundException;/*** @program: JavaExecl* @description: excel計(jì)算公式* @author: 魏一鶴* @createDate: 2021-12-18 00:03**/public class ExcelCalculation {//全局路徑,供我們操作使用方便static String path="D:\\Tools\\JavaWorkSpace\\JavaExecl\\";@Testpublic void testFormula() throws Exception {//首先還是要獲取路徑FileInputStream fileInputStream = new FileInputStream(path + "計(jì)算公式.xls");//讀取文件Workbook workbook = new HSSFWorkbook(fileInputStream);//讀取表Sheet sheet = workbook.getSheetAt(0);//根據(jù)表拿出數(shù)據(jù)//因?yàn)槲覀兊男枰?jì)算的單元格在第五行 從0開(kāi)始的 所以下標(biāo)為4//如果我們用沒(méi)有計(jì)算公式的行,那么不會(huì)有用Row row = sheet.getRow(4);//(第一行 4,1)Cell cell = row.getCell(0);//拿到計(jì)算公式 evalFormulaEvaluator formulaEvaluator = new HSSFFormulaEvaluator((HSSFWorkbook)workbook);//輸出單元格的內(nèi)容//獲取類(lèi)型進(jìn)行便利int cellType = cell.getCellType();switch (cellType){case Cell.CELL_TYPE_FORMULA://獲取公式String cellFormula = cell.getCellFormula();System.out.println(cellFormula);//計(jì)算CellValue evaValue=formulaEvaluator.evaluate(cell);String cellValue = evaValue.formatAsString();System.out.println(cellValue);//結(jié)束循環(huán)break;}}}

10 easyExcel寫(xiě)

特點(diǎn):阿里巴巴開(kāi)源的工具,代碼簡(jiǎn)化,占用內(nèi)存少,優(yōu)化OOM(內(nèi)存溢出異常)

1 pom引入依賴(lài)
由于pom底層也是使用的poi進(jìn)行處理,為了避免沖突,我們把pom引入的pom注釋掉

<!--easyExcel依賴(lài)--> <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.0-beta2</version> </dependency><!--導(dǎo)入依賴(lài)jar包--> <!--xls(03)--> <!--<dependency>--><!--<groupId>org.apache.poi</groupId>--><!--<artifactId>poi</artifactId>--><!--<version>3.9</version>--> <!--</dependency>--><!-- xlsx(07) --> <!--<dependency>--><!--<groupId>org.apache.poi</groupId>--><!--<artifactId>poi-ooxml</artifactId>--><!--<version>3.9</version>--> <!--</dependency>-->

2 準(zhǔn)備一個(gè)實(shí)體類(lèi) 因?yàn)閑asyexcel根據(jù)實(shí)體類(lèi)自動(dòng)生成的表 效率非常的高

package com.wyh.entity;import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data;import java.util.Date;/*** @program: JavaExecl* @description: easyExcel實(shí)體類(lèi) 可以用它生成excel* @author: 魏一鶴* @createDate: 2021-12-18 23:03**/ @Data public class DemoData {@ExcelProperty("字符串標(biāo)題")private String string;@ExcelProperty("日期標(biāo)題")private Date date;@ExcelProperty("數(shù)字標(biāo)題")private Double doubleData;/*** 忽略這個(gè)字段*/@ExcelIgnoreprivate String ignore; }

它對(duì)應(yīng)生成的就是這樣


3 寫(xiě)一個(gè)基本的寫(xiě)入操作

//根據(jù)list寫(xiě)入excel @Test public void simpleWrite() {// 寫(xiě)法1 JDK8+// since: 3.0.0-beta1//生成的文件名和文件所在位置String fileName =path+"easyExcel.xlsx";//開(kāi)始寫(xiě)入 這里說(shuō)下幾個(gè)參數(shù)//1 fileName 是一個(gè)io流 自動(dòng)生成excel//2 DemoData.class根據(jù)哪個(gè)類(lèi)的規(guī)則去生成excel//3 sheetName 生成的表的名字//4 進(jìn)行寫(xiě)出,寫(xiě)入到規(guī)則就是我們上面定義的方法循環(huán)EasyExcel.write(fileName,DemoData.class).sheet("模板").doWrite(data()); }

完整的代碼

package com.wyh.Test;import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.write.metadata.WriteSheet; import com.wyh.entity.DemoData; import org.apache.commons.collections4.ListUtils; import org.junit.Test;import java.util.ArrayList; import java.util.Date; import java.util.List;/*** @program: JavaExecl* @description: easyExcel寫(xiě)操作* @author: 魏一鶴* @createDate: 2021-12-18 23:08**/public class EasyExcelWrite {//全局路徑,供我們操作使用方便static String path="D:\\Tools\\JavaWorkSpace\\JavaExecl\\";private List<DemoData> data() {List<DemoData> list = new ArrayList<DemoData>();for (int i = 0; i < 10; i++) {DemoData data = new DemoData();data.setString("字符串" + i);data.setDate(new Date());data.setDoubleData(0.56);list.add(data);}return list;}//根據(jù)list寫(xiě)入excel@Testpublic void simpleWrite() {// 寫(xiě)法1 JDK8+// since: 3.0.0-beta1//生成的文件名和文件所在位置String fileName =path+"easyExcel.xlsx";//開(kāi)始寫(xiě)入 這里說(shuō)下幾個(gè)參數(shù)//1 fileName 是一個(gè)io流 自動(dòng)生成excel//2 DemoData.class根據(jù)哪個(gè)類(lèi)的規(guī)則去生成excel//3 sheetName 生成的表的名字//4 進(jìn)行寫(xiě)出,寫(xiě)入到規(guī)則就是我們上面定義的方法循環(huán)EasyExcel.write(fileName,DemoData.class).sheet("模板").doWrite(data());} }

運(yùn)行完畢之后發(fā)現(xiàn)已經(jīng)生成了,而且和我們想要的數(shù)據(jù)格式是一樣的

11 easyExcel讀

1 需要一個(gè)實(shí)體,我們已經(jīng)有了,可以直接用上面的DemoData

package com.wyh.entity;import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data;import java.util.Date;/*** @program: JavaExecl* @description: easyExcel實(shí)體類(lèi) 可以用它生成excel* @author: 魏一鶴* @createDate: 2021-12-18 23:03**/ @Data public class DemoData {@ExcelProperty("字符串標(biāo)題")private String string;@ExcelProperty("日期標(biāo)題")private Date date;@ExcelProperty("數(shù)字標(biāo)題")private Double doubleData;/*** 忽略這個(gè)字段*/@ExcelIgnoreprivate String ignore; }

2 需要一個(gè)監(jiān)聽(tīng)器

package com.wyh.Test;import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.alibaba.excel.metadata.CellData; import com.alibaba.excel.metadata.CellExtra; import com.alibaba.excel.read.listener.ReadListener; import com.alibaba.fastjson.JSON; import com.wyh.entity.DemoData; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.ListUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory;import java.util.ArrayList; import java.util.List; import java.util.Map;/*** @program: JavaExecl* @description: easyExcel監(jiān)聽(tīng)器* @author: 魏一鶴* @createDate: 2021-12-18 23:30**/ // 有個(gè)很重要的點(diǎn) DemoDataListener 不能被spring管理,要每次讀取excel都要new,然后里面用到spring可以構(gòu)造方法傳進(jìn)去 public class DemoDataListener extends AnalysisEventListener<DemoData> {private static final Logger LOGGER = LoggerFactory.getLogger(DemoDataListener.class);/*** 每隔5條存儲(chǔ)數(shù)據(jù)庫(kù),實(shí)際使用中可以3000條,然后清理list ,方便內(nèi)存回收*/private static final int BATCH_COUNT = 5;List<DemoData> list = new ArrayList<DemoData>();/*** 假設(shè)這個(gè)是一個(gè)DAO,當(dāng)然有業(yè)務(wù)邏輯這個(gè)也可以是一個(gè)service。當(dāng)然如果不用存儲(chǔ)這個(gè)對(duì)象沒(méi)用。*/private DemoDAO demoDAO;public DemoDataListener() {// 這里是demo,所以隨便new一個(gè)。實(shí)際使用如果到了spring,請(qǐng)使用下面的有參構(gòu)造函數(shù)demoDAO = new DemoDAO();}/*** 如果使用了spring,請(qǐng)使用這個(gè)構(gòu)造方法。每次創(chuàng)建Listener的時(shí)候需要把spring管理的類(lèi)傳進(jìn)來(lái)** @param demoDAO*/public DemoDataListener(DemoDAO demoDAO) {this.demoDAO = demoDAO;}/*** 這個(gè)每一條數(shù)據(jù)解析都會(huì)來(lái)調(diào)用** @param data* one row value. Is is same as {@link AnalysisContext#readRowHolder()}* @param context*/@Overridepublic void invoke(DemoData data, AnalysisContext context) {System.out.println(JSON.toJSONString(data));list.add(data);System.out.println(list);// 達(dá)到BATCH_COUNT了,需要去存儲(chǔ)一次數(shù)據(jù)庫(kù),防止數(shù)據(jù)幾萬(wàn)條數(shù)據(jù)在內(nèi)存,容易OOMif (list.size() >= BATCH_COUNT) {saveData();// 存儲(chǔ)完成清理 listlist.clear();}}/*** 所有數(shù)據(jù)解析完成了 都會(huì)來(lái)調(diào)用** @param context*/@Overridepublic void doAfterAllAnalysed(AnalysisContext context) {// 這里也要保存數(shù)據(jù),確保最后遺留的數(shù)據(jù)也存儲(chǔ)到數(shù)據(jù)庫(kù)saveData();LOGGER.info("所有數(shù)據(jù)解析完成!");}/*** 加上存儲(chǔ)數(shù)據(jù)庫(kù)*/private void saveData() {demoDAO.save(list);} }

3 然后寫(xiě)一個(gè)基本的讀操作

package com.wyh.Test;import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelReader; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.read.listener.ReadListener; import com.alibaba.excel.read.metadata.ReadSheet; import com.alibaba.fastjson.JSON; import com.wyh.entity.DemoData; import org.apache.commons.collections4.ListUtils; import org.junit.Test;import java.io.File; import java.util.List;/*** @program: JavaExecl* @description: excel讀數(shù)據(jù)* @author: 魏一鶴* @createDate: 2021-12-18 23:38**/public class EasyExcelRead {//全局路徑,供我們操作使用方便static String path="D:\\Tools\\JavaWorkSpace\\JavaExecl\\";@Testpublic void simpleRead() {//文件路徑String fileName = path + "easyExcel.xlsx";//重點(diǎn)注意監(jiān)聽(tīng)器讀取的邏輯//fileName 文件//DemoData 類(lèi)規(guī)則//DemoDataListener 監(jiān)聽(tīng)器//sheet().doRead() 表的讀取EasyExcel.read(fileName,DemoData.class,new DemoDataListener()).sheet().doRead();}}

啟動(dòng)發(fā)現(xiàn)全部數(shù)據(jù)被正常讀取到

4 總結(jié)下easyExcel的步驟

1 寫(xiě)入 根據(jù)固定的類(lèi)格式進(jìn)行寫(xiě)入
2 讀取 根據(jù)監(jiān)聽(tīng)器設(shè)置規(guī)則進(jìn)行讀取

本次poi和easyExcel操作excel先到此為止,后續(xù)會(huì)結(jié)合項(xiàng)目寫(xiě)導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)的真實(shí)例子

總結(jié)

以上是生活随笔為你收集整理的poi和easyExcel基于Java操作Excel学习笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

黄色软件在线看 | 久久久综合色 | 四虎在线免费观看 | www.亚洲在线 | 成年人app网址 | 91成人免费电影 | 国产手机视频在线播放 | 国产精品黑丝在线观看 | 久久成人午夜视频 | 国产精品短视频 | 91看片在线播放 | 久久国产精品99国产精 | 99精品毛片 | 天天操天天操天天操天天操天天操 | av午夜电影 | 最新免费av在线 | 久久99久久99精品免观看软件 | 午夜精品久久久久久 | 一区二区不卡视频在线观看 | 国产视频第二页 | 欧美韩日在线 | 伊人婷婷激情 | 成人久久久久 | 久久激情视频免费观看 | 欧美中文字幕第一页 | 成年人视频在线 | 国产精品99久久免费黑人 | 国产精品不卡一区 | 久久久久亚洲最大xxxx | 99 视频 高清 | 婷婷av色综合 | 麻豆国产在线视频 | 五月天丁香综合 | 蜜臀aⅴ国产精品久久久国产 | 日日日日 | www.色国产| 中文字幕精品一区二区三区电影 | 欧美激情一区不卡 | 中文字幕在线精品 | 在线观看激情av | 国产美女视频免费观看的网站 | 麻豆果冻剧传媒在线播放 | 久草免费手机视频 | 在线观看中文字幕亚洲 | 天天色天天搞 | 日韩免费播放 | 亚洲乱码中文字幕综合 | 国产91aaa | 黄色成年网站 | 97热视频 | av视屏在线播放 | 九七在线视频 | 天堂中文在线视频 | 日日干综合 | 欧美成年网站 | 丁香综合五月 | 日韩午夜高清 | 在线观看成人福利 | 亚洲国产精品久久 | 国产午夜在线观看视频 | 婷婷.com | 99视频99| 久久y| 色在线免费观看 | a视频在线观看 | 最新日韩视频 | 亚洲精品综合欧美二区变态 | 日韩色高清 | 国产精品人人做人人爽人人添 | 毛片永久新网址首页 | 亚洲精品国产精品国自产观看 | 日产乱码一二三区别在线 | 在线观看成人福利 | 久久国产美女视频 | 久久久伦理 | 国产精品专区在线 | 黄色福利网 | www.黄色| 久久久久久国产精品999 | 国产精品成人一区二区三区吃奶 | 久久久精品久久日韩一区综合 | 国产一二三四在线观看视频 | 精品国产一区二区三区四区在线观看 | 欧美日韩一二三四区 | 欧美做受xxx | 91精品电影 | 91精品小视频 | 午夜精品三区 | 久久在线免费视频 | 中文字幕色婷婷在线视频 | 91人人在线 | 国产精品成人aaaaa网站 | 久久免费试看 | 欧美婷婷综合 | 九九视频在线观看视频6 | 日日摸日日 | 欧美在线一二 | 91丨九色丨91啦蝌蚪老版 | 精品国产伦一区二区三区 | 在线观看久久久久久 | 中文字幕在线影视资源 | 免费看av片网站 | 一本一本久久a久久精品综合小说 | 国产精品高 | 国产中文字幕视频在线观看 | av电影免费观看 | 91精品一区二区三区蜜臀 | 日本特黄一级 | 最新国产精品拍自在线播放 | 97精品视频在线 | 日日夜夜网 | 激情五月看片 | 亚洲精品美女在线 | 天天操夜夜干 | 97香蕉久久超级碰碰高清版 | 精品久久一二三区 | 国产123区在线观看 国产精品麻豆91 | 日韩欧美在线一区 | 91免费试看 | 91最新国产 | 奇米影音四色 | 丁香婷婷基地 | 91成人在线免费观看 | 成人三级网站在线观看 | 午夜av影院| 中文字幕一区二区三区四区在线视频 | 黄色免费视频在线观看 | 国产69精品久久99不卡的观看体验 | 中文字幕在线日 | av片在线观看 | 亚洲国产中文字幕在线观看 | 国产色小视频 | 日本中文字幕电影在线免费观看 | 在线不卡a| 久久久久成人精品 | 亚洲.www | 毛片一级免费一级 | 91精品国产高清自在线观看 | 91福利国产在线观看 | 免费视频色| 婷婷在线网 | 欧美日韩久久不卡 | 超碰免费在线公开 | 在线免费精品视频 | 久久久亚洲精华液 | 亚洲精品小视频 | a视频免费 | 久99久在线| 999久久久久久 | 制服丝袜在线 | 国产精品专区在线观看 | 精品国自产在线观看 | 国产精品不卡av | 五月婷香蕉久色在线看 | 91视频 - 114av | 久热色超碰 | 在线成人短视频 | av在线直接看 | 亚洲精品中文字幕视频 | 亚洲综合激情小说 | 日韩专区在线观看 | 国产高清视频网 | 国产精品一区二区三区电影 | 久久久久久久精 | 99这里精品| 国产精品视频久久 | 国产精品欧美激情在线观看 | 欧美精品久久久久久久久久白贞 | 91亚洲精品乱码久久久久久蜜桃 | av福利超碰网站 | 国产一区在线精品 | 天天射天天舔天天干 | av在线官网 | 日韩高清一区在线 | 欧美一二区视频 | 青青河边草观看完整版高清 | 国产精品一区二区三区在线免费观看 | 97在线精品国自产拍中文 | 99国产在线观看 | 日韩成人黄色av | 免费看网站在线 | 免费在线观看一区二区三区 | 99久久爱 | av大全在线观看 | 婷婷久久婷婷 | 天天艹天天干天天 | 少妇搡bbb| 久久午夜色播影院免费高清 | 久久99国产精品 | av电影中文字幕 | 美女精品国产 | www蜜桃视频 | 伊人中文字幕在线 | 夜夜夜精品 | 午夜免费视频网站 | 欧美日韩精品免费观看 | 麻豆视频国产在线观看 | 国产精品 中文在线 | 91超级碰 | 国产精品久久久久久一二三四五 | 国产免费人人看 | 免费婷婷| 久久国产乱 | 久草在线免费播放 | 中文在线最新版天堂 | 91天天操 | 99精品系列 | 久久亚洲视频 | 久久成人亚洲欧美电影 | 色偷偷网站视频 | 中文字幕免费久久 | 日韩欧美在线影院 | a级一a一级在线观看 | 欧美最爽乱淫视频播放 | av成人免费网站 | 国产视频日韩视频欧美视频 | 久久免费高清 | 色综合天天综合在线视频 | 97精品国产97久久久久久 | 99久视频 | 91免费版成人 | 激情综合网色播五月 | 亚洲精品乱码久久 | 毛片www| 久久精品久久久久电影 | 成人小视频在线 | 午夜精品一二三区 | 成人播放器 | 亚洲欧美日韩中文在线 | av青草 | 日韩免费在线视频 | 99国内精品| 美女黄频| www狠狠| 91高清在线看| 黄色午夜 | 国产精品一区二区久久精品 | 亚洲天堂网在线视频 | 国产亚洲片 | 国产视频精品免费播放 | 在线视频1卡二卡三卡 | 伊人午夜视频 | 国产欧美精品一区二区三区 | 三级视频国产 | 久久久国产一区二区 | 亚洲精品在线观看的 | 欧美亚洲成人xxx | 涩涩网站免费 | 免费在线观看日韩视频 | 超碰人人超 | 国产成人在线综合 | 贫乳av女优大全 | 久艹在线免费观看 | 国产97色在线 | 精品超碰 | 亚洲蜜桃av | 国产在线精品一区二区三区 | 色视频网址 | 日韩精品2区 | 超碰在线免费97 | 欧美精品v国产精品v日韩精品 | 成人在线免费小视频 | 国产日韩在线播放 | 色偷偷网站视频 | 日日夜夜国产 | 国产精品久久久久久久久久久免费 | 亚洲电影院 | 91精品国产麻豆国产自产影视 | 一级黄色免费 | 亚洲精品字幕在线 | 国产一级做a| 狠狠色丁香久久婷婷综合五月 | 日韩免费在线看 | 亚洲伊人天堂 | 国产精品久久久久婷婷二区次 | 日本精品在线视频 | 国产成人a亚洲精品 | 尤物一区二区三区 | 69欧美视频 | 天天色天天射天天干 | 麻豆视频在线 | 天天干天天干天天 | 91高清完整版在线观看 | 国产成人亚洲在线观看 | 狠狠色丁香久久婷婷综合_中 | 黄色影院在线观看 | 日韩精品一卡 | 日韩精品亚洲专区在线观看 | 免费观看国产成人 | 99精品视频在线播放观看 | 免费观看一级成人毛片 | 免费观看www小视频的软件 | 在线观看精品视频 | 麻豆久久久久久久 | 婷婷中文在线 | 中文字幕久久精品亚洲乱码 | 在线观看国产福利片 | 五月天中文字幕mv在线 | 亚洲在线网址 | 久久精品这里热有精品 | 午夜精品久久久久久久久久久久久久 | av亚洲产国偷v产偷v自拍小说 | 国产视频一区在线播放 | 国产亚州av | 欧美一级特黄aaaaaa大片在线观看 | 337p日本欧洲亚洲大胆裸体艺术 | 成人av观看| 国产短视频在线播放 | 久久精品二区 | 欧美成人播放 | 香蕉视频网址 | 六月色丁香 | 狠狠狠色丁香综合久久天下网 | 国产少妇在线观看 | 中文字幕在线观看一区 | 在线观看av麻豆 | 久久精品一区二区三区国产主播 | 午夜久久久久久久久久影院 | 日日爽天天 | 亚洲视频大全 | 成年人免费在线观看 | 国产精品成久久久久 | 久草精品视频在线看网站免费 | 国产精品美女久久久 | 国产成人av网站 | 国产一区观看 | 在线视频成人 | 日韩国产精品久久 | 干干日日| 色狠狠综合天天综合综合 | 日韩电影黄色 | 日韩试看 | 久久黄色网页 | 国产成人亚洲在线观看 | 中文字幕字幕中文 | 日韩av二区| 亚洲在线观看av | 一级片免费视频 | 天天爽天天摸 | 欧美色图狠狠干 | 在线一级片 | 中国一区二区视频 | 中文成人字幕 | 视频在线日韩 | 视频国产精品 | 狠狠色狠狠色综合系列 | 国产最新视频在线观看 | 天天性天天草 | 亚洲精品在线播放视频 | 美女免费黄网站 | 夜夜操天天干 | 亚洲激情校园春色 | 干天天 | 人人澡人人爽欧一区 | 色 免费观看 | 九色91在线视频 | 午夜电影中文字幕 | 91福利区一区二区三区 | 免费网站在线观看人 | 久草在线资源观看 | www.亚洲精品在线 | 亚洲精品乱码久久久久久蜜桃不爽 | 8090yy亚洲精品久久 | 中文字幕在线观看一区二区三区 | www.色爱| 九色精品| 极品嫩模被强到高潮呻吟91 | 午夜在线资源 | 日韩欧美有码在线 | 天天做天天爱天天爽综合网 | 国产精品 国内视频 | 欧美久久久一区二区三区 | 中文字幕在线观看第二页 | 免费在线观看av的网站 | 天天操伊人 | 中文字幕av在线免费 | 国产精品久久伊人 | 久久久久久久久久伊人 | 成人在线黄色电影 | 麻豆免费视频观看 | 最新日韩在线观看 | 麻豆传媒精品 | 中文 一区二区 | 亚洲欧洲精品一区二区 | 国产色婷婷在线 | 久久久在线视频 | 91在线播放综合 | 91久久人澡人人添人人爽欧美 | 久久免费视频8 | 久久久国产精品人人片99精片欧美一 | 精品久久久久久久久久久院品网 | 在线观看中文字幕视频 | 欧美一级免费高清 | 国产黄色在线网站 | 99久久精品国产欧美主题曲 | 国产精品麻豆视频 | 亚洲在线网址 | 天天干天天天天 | 天天操夜夜想 | 亚洲成a人片77777潘金莲 | 在线视频区 | av福利在线 | 久久久久久久久久久久国产精品 | 国产精品手机看片 | 国产精品久久久久久久久久免费 | 免费h精品视频在线播放 | 91亚洲精品久久久中文字幕 | 最新超碰| 最近在线中文字幕 | 99热这里有 | 久草综合在线 | 中国精品一区二区 | 五月婷婷影视 | 久久av福利 | 日日夜夜添 | 91av手机在线观看 | 国产精品对白一区二区三区 | 日韩在线视频播放 | 日日夜夜亚洲 | 欧美日韩国产精品一区二区 | 99视频免费播放 | 国产精品美女久久久免费 | 色综合天天综合 | 国产精品一区二区三区久久 | 西西大胆免费视频 | 国产露脸91国语对白 | 日本二区三区在线 | 国产一区免费视频 | 精品福利国产 | 国产真实在线 | 91黄色影视 | 国产亚洲精品成人av久久ww | 成人综合婷婷国产精品久久免费 | 欧美性性网 | 黄色精品网站 | 国产精国产精品 | 天天曰天天干 | 五月婷婷丁香综合 | 在线看片视频 | 嫩嫩影院理论片 | 久久国精品 | 色一色在线 | 国产成人av电影 | 日本精品一区二区 | 九九热精品视频在线观看 | 亚洲一区在线看 | 中文字幕av日韩 | 在线欧美小视频 | 欧美成人猛片 | 久久久久久麻豆 | 精品国产久| 亚洲无吗视频在线 | 亚洲国产精品女人久久久 | 天天射天天色天天干 | 免费手机黄色网址 | 国产高清福利在线 | 精品99在线视频 | 99久久精品午夜一区二区小说 | 国产综合香蕉五月婷在线 | 国产精品s色 | 免费日韩一区二区 | 国产精品字幕 | 十八岁以下禁止观看的1000个网站 | 2022久久国产露脸精品国产 | 中文字幕4 | 亚洲综合国产精品 | 日日操网站 | 国产视频精品久久 | 婷婷久久五月天 | 精品亚洲国产视频 | 日韩高清在线不卡 | 色噜噜狠狠色综合中国 | 97综合视频 | 国产精品久久久久久久电影 | 园产精品久久久久久久7电影 | 国产午夜小视频 | 中文字幕资源网 国产 | 激情综合色图 | 国产精品一区二区白浆 | 成人国产一区二区 | 国产精品麻豆三级一区视频 | 亚洲激情婷婷 | 99九九视频 | 欧美国产91 | 日日干视频 | 国产美女免费视频 | www,黄视频 | 成人黄大片视频在线观看 | 久久久免费毛片 | 日韩电影在线观看中文字幕 | 久久天天躁狠狠躁亚洲综合公司 | 亚洲一区二区三区精品在线观看 | 久久久五月婷婷 | 日韩中文在线播放 | 亚洲精品久久久久中文字幕m男 | 久久亚洲视频 | 国产午夜三级一区二区三 | 91免费日韩 | 鲁一鲁影院 | 91香蕉视频在线 | 97av视频在线| 亚洲三级在线播放 | 人人超碰免费 | 久章草在线 | 国产精品18久久久久久久久 | 精品国产乱码久久 | 91av原创| 亚洲国产无 | 99久久久成人国产精品 | 日韩中文字幕亚洲一区二区va在线 | 久久精品99国产国产精 | a特级毛片 | 国产在线 一区二区三区 | 国产一区视频在线播放 | 西西444www大胆无视频 | 亚洲电影久久 | 欧美久久影院 | а中文在线天堂 | 五月激情婷婷丁香 | 天天想夜夜操 | 成年人黄色免费网站 | 国产拍揄自揄精品视频麻豆 | 手机看片99| 久久精品网站视频 | 国语自产偷拍精品视频偷 | 国产精品成人av在线 | 天天操天天操天天操天天操天天操 | 久久精品中文字幕少妇 | 伊人久久av| 国产美腿白丝袜足在线av | 久久久久久久久久免费视频 | 黄色小网站在线观看 | 久久久久国产成人免费精品免费 | 午夜av影院 | 日韩精品你懂的 | av大片免费在线观看 | 手机色站 | 综合亚洲视频 | 韩国精品一区二区三区六区色诱 | 国产精品video | 午夜精品福利一区二区 | 久久一区二区三区超碰国产精品 | 中文字幕在线有码 | 国产在线观看你懂得 | 欧美日韩精品在线免费观看 | 国产黄色免费观看 | 成人中文字幕av | 日韩一区二区三区在线看 | 精品一区二区在线观看 | 91视频在线看 | 精品麻豆入口免费 | 久久草草热国产精品直播 | 色婷婷播放 | 久久黄色a级片 | 久久精品中文字幕一区二区三区 | 激情五月色播五月 | 免费看成人片 | 亚洲精品乱码久久久久久蜜桃欧美 | 国产精品麻 | 日韩在线电影一区 | 福利视频精品 | 人人爽人人爱 | 五月婷婷狠狠 | 日韩在线观看高清 | 亚洲草视频 | 97在线观看视频 | 午夜av在线 | www.超碰97.com | 久久免费观看视频 | 日韩综合视频在线观看 | 国产一区欧美在线 | 午夜黄色一级片 | 色偷偷人人澡久久超碰69 | 99精品成人 | 久久深夜福利免费观看 | 69av国产| 国产高清中文字幕 | 天天曰天天干 | 91伊人久久大香线蕉蜜芽人口 | 精品国产一二区 | 久要激情网 | 国产大尺度视频 | 欧美久久久久 | 亚洲天堂网在线视频观看 | 国产一级免费播放 | 可以免费看av| 免费av网址在线观看 | 日韩一区正在播放 | 91欧美在线| 成人av片免费观看app下载 | 亚洲四虎 | 丁香婷婷在线观看 | 九七人人干 | 日本三级吹潮在线 | 91亚洲国产成人久久精品网站 | 亚洲欧美成人 | 国产日韩精品在线 | 在线 高清 中文字幕 | 亚洲精品乱码久久久久久9色 | 久久爱影视i | 色视频网站在线观看一=区 a视频免费在线观看 | 91禁看片| 久久久久免费精品国产小说色大师 | 亚洲国产精品成人女人久久 | 国产小视频在线看 | 久久不卡电影 | 人人狠狠综合久久亚洲婷 | 97视频在线观看网址 | 国产人成免费视频 | 欧美性网站 | 黄色影院在线免费观看 | 日本在线视频网址 | 女人18片毛片90分钟 | 久草在线费播放视频 | 国内精品久久久久影院一蜜桃 | 成人av一区二区在线观看 | 国产成人333kkk | 免费在线观看av网址 | av解说在线观看 | 国产精品不卡在线播放 | 久久这里只有精品久久 | 午夜精品久久一牛影视 | 蜜臀久久99精品久久久久久网站 | 中文字幕专区高清在线观看 | 在线免费观看视频一区二区三区 | 91麻豆产精品久久久久久 | 日韩精品中字 | 午夜.dj高清免费观看视频 | 久久久久国产免费免费 | 亚洲精品久久激情国产片 | 国产精品av久久久久久无 | 天天综合久久综合 | 国产精品久久久久久婷婷天堂 | 日韩精品免费在线 | 亚洲精品人人 | 久草在线免费色站 | 国产亚洲精品久久久久动 | 在线之家免费在线观看电影 | 97在线视 | 欧美热久久 | 免费av网址在线观看 | 免费69视频 | 久久久久成人免费 | 91丝袜美腿| 免费福利小视频 | 国产精品福利午夜在线观看 | 成年人网站免费观看 | 久久精品中文视频 | 久久视频一区 | 97在线视| 久久久久99精品国产片 | 国产99在线免费 | 国产欧美精品一区二区三区 | 97超级碰| 五月婷婷六月丁香在线观看 | 在线观看91av | 久久精品99精品国产香蕉 | 亚洲精品玖玖玖av在线看 | 亚洲国产剧情av | 国产在线观看h | 黄色a级片在线观看 | 久久久精品电影 | 91精品国产一区二区三区 | 91av在线国产| 久久国语露脸国产精品电影 | 最新av电影网址 | 亚洲电影久久 | 精品视频一区在线观看 | 免费日韩 精品中文字幕视频在线 | 精品麻豆| 日韩精品一区二区三区第95 | 国产日韩欧美在线影视 | 久草a视频| 美女黄频在线观看 | 97国产精品视频 | 免费观看全黄做爰大片国产 | 激情五月播播久久久精品 | 精品一区电影 | www色| 96视频免费在线观看 | 精品国产伦一区二区三区免费 | 99精品热视频只有精品10 | 波多野结衣理论片 | 国产欧美最新羞羞视频在线观看 | 国产免费不卡av | 免费日韩视频 | 久久国产经典 | 免费黄色在线播放 | 国产精品第7页 | 免费看的黄色的网站 | 亚洲成人av电影 | 成人a视频片观看免费 | 天天插天天爱 | 在线亚洲小视频 | 91亚洲精品久久久中文字幕 | 亚洲精品在线免费播放 | 日韩免费一区二区三区 | 免费在线国产精品 | 中文字幕乱码在线播放 | 日韩91av| 999超碰| 精品国产乱码久久久久久久 | 久久99精品久久久久久久久久久久 | 五月婷婷一区二区三区 | 日韩视频一 | 午夜国产福利在线 | 久草免费在线视频观看 | 久久精品视频网 | 在线观看国产一区 | 特黄特色特刺激视频免费播放 | 91丨九色丨蝌蚪丨对白 | 久久成人高清视频 | 午夜三级毛片 | 欧美精品久久久久久久久免 | 成人91视频 | 精品一区二区免费 | 激情欧美丁香 | 日本一区二区高清不卡 | 亚洲黄色片一级 | 欧美日韩亚洲在线观看 | 久久免费久久 | 黄色最新网址 | 亚洲激情五月 | 亚洲国产精品va在线看黑人动漫 | 97久久精品午夜一区二区 | 色射爱| av高清免费 | 精品久久久久_ | 久久99久久99精品免视看婷婷 | 国产一区二区日本 | 精品久久视频 | 中文字幕 影院 | 中文字幕在线播放一区二区 | 亚洲影音先锋 | 婷婷精品在线视频 | 91人人射| 天堂av在线免费观看 | 成人在线视频免费观看 | 国产黄色大片 | 亚洲欧美一区二区三区孕妇写真 | 日韩一二三在线 | 色婷婷福利 | 亚洲天天摸日日摸天天欢 | 久久超碰免费 | 操操综合网 | 中文字幕电影在线 | 九九久久免费视频 | 国产日韩欧美视频在线观看 | 天天爽夜夜爽人人爽一区二区 | 综合天堂av久久久久久久 | 天天操天天射天天舔 | 国产小视频在线免费观看 | 狠狠操狠狠干天天操 | avcom在线 | 欧美一级片在线播放 | 在线观看视频h | 97成人在线观看 | 久久精彩视频 | 亚洲国产午夜精品 | 亚洲dvd| 国产精品久久一区二区三区, | 国产精品尤物视频 | 99免费国产| 国产午夜精品一区二区三区在线观看 | 日韩在线高清免费视频 | 永久黄网站色视频免费观看w | 国产拍在线| 亚洲综合成人专区片 | 91香蕉视频黄| 麻豆精品视频在线观看免费 | 国产精品原创av片国产免费 | 字幕网在线观看 | 免费观看成人网 | 亚洲综合欧美精品电影 | 在线天堂8√ | 亚洲97在线 | 成年人视频在线免费播放 | 国产精品一区二区三区四区在线观看 | 免费日韩av电影 | 国产一级黄色免费看 | 啪啪肉肉污av国网站 | 亚州av成人| 精品久久久999 | 欧美一区二区三区在线观看 | 国产视频精品久久 | 色婷婷 亚洲 | 久久伦理网 | 成人国产精品久久久久久亚洲 | 天天夜夜亚洲 | 国产九色视频在线观看 | 日韩av中文在线观看 | 日韩在线免费小视频 | 日日干日日 | 国内久久久 | 五月婷在线播放 | 国产精品手机视频 | 91精品在线视频观看 | av网站手机在线观看 | 免费a视频在线观看 | 五月婷婷深开心 | 婷婷综合网 | 欧美日韩精品免费观看 | 亚洲国产片色 | 欧美日一级片 | 中文一二区 | 蜜臀久久99精品久久久无需会员 | 国产精品毛片久久久 | 色天天综合久久久久综合片 | www.eeuss影院av撸 | 国产麻豆视频在线观看 | www.久久免费视频 | 丝袜美腿在线播放 | 日本久久久亚洲精品 | 二区三区在线视频 | 精品国产aⅴ麻豆 | 亚洲男男gaygayxxxgv | 综合久久久久久久久 | 婷婷激情五月 | 五月婷婷六月丁香 | 高潮毛片无遮挡高清免费 | 日韩精品免费在线视频 | 福利av影院 | 久草视频免费观 | 视频一区在线播放 | av中文字幕网 | 日本久久片 | 中文字幕一区二区三区四区视频 | av片在线观看免费 | 久久久免费在线观看 | 99综合电影在线视频 | 亚洲成人第一区 | 91在线看免费 | 日韩在线免费看 | 国产视频 亚洲精品 | 手机在线永久免费观看av片 | 激情婷婷在线 | 色偷偷888欧美精品久久久 | 在线免费国产 | wwxxx日本| 久久久国产视频 | 四虎成人av| 亚洲综合激情网 | 精品视频在线观看 | 韩国视频一区二区三区 | 免费视频a | 免费成人黄色片 | 天天综合视频在线观看 | 国产精品麻豆欧美日韩ww | 中文字幕一区av | 国产美女免费看 | 日一日干一干 | 欧美精品一区二区性色 | 免费又黄又爽 | 国产精品美女视频网站 | 国产一区二区三区免费观看视频 | 久久久久久亚洲精品 | 免费观看v片在线观看 | 国产在线观看高清视频 | 五月婷婷视频 | 在线观看成人一级片 | 粉嫩高清一区二区三区 | 91亚洲成人 | 亚洲视频电影在线 | 日韩精品一区二区在线观看视频 | 91精品视频导航 | 中文字幕人成一区 | 亚洲综合色站 | 午夜精品久久久久 | 成人性生爱a∨ | 中文字幕在线播出 | 色中色综合 | 国产精品精品国产婷婷这里av | 中文字幕欧美三区 | 中文字幕在线国产 | 丁香久久 | 999国产精品视频 | 在线观看网站黄 | 亚洲精品一区二区三区四区高清 | 国产网红在线观看 | 亚洲综合色播 | 婷婷色综合网 | 亚洲成人一二三 | 日韩二区在线观看 | 免费69视频 | 国产成人精品一区二区三区在线观看 | 欧美精品久久久 | 超碰人人超 | 日韩91在线 | 久久99国产视频 | 91热爆在线观看 | 久久一区91 | 久久成 | 国产亚洲免费观看 | 成人免费视频观看 | 亚洲视屏在线播放 | 91在线操| 91av99| 在线观看深夜福利 | 久久99免费观看 | 麻豆精品传媒视频 | 久久99精品国产99久久 | 六月天综合网 | 夜夜干天天操 | 色偷偷88888欧美精品久久 | 麻豆视频一区二区 | 成人在线观看影院 | 91亚洲精品久久久蜜桃借种 | 99爱这里只有精品 | 日韩在线观看高清 | 一级片黄色片网站 | 久久免费的精品国产v∧ | 国产小视频在线免费观看视频 | 日本女人逼 | 9在线观看免费高清完整版 玖玖爱免费视频 | 一级欧美黄 | 午夜精品电影 | 久久久久久久国产精品影院 | 国产精品美女在线观看 | 中文字幕亚洲欧美日韩 | 97超碰人人在线 | 免费观看成人网 | 久久久www成人免费精品张筱雨 | 国产成人资源 | 国产福利精品在线观看 | 精品国产午夜 | 91亚洲综合 | 免费在线91 | 国产精品专区一 | 国产精品毛片久久久久久久久久99999999 | 日韩 在线观看 | 日韩精品久久久免费观看夜色 | 成年人电影毛片 | 人人插人人费 | 在线观看成人毛片 | 97av影院 | 日韩在线高清视频 | 精品一区 精品二区 | 色小说av | 美女视频黄在线 | 国产精品 欧美 日韩 | 99视频一区 | 久久看片网| www.成人久久 | 99热在| 亚洲精品国产第一综合99久久 | 国产精品2区 | 99精品国产一区二区 | 日韩免费观看一区二区 | 亚洲成aⅴ人在线观看 | 中文一区在线观看 | 91片网 | 黄色免费在线视频 | 国产一区在线观看视频 | 国产婷婷精品av在线 | 久久精品一二区 | 17婷婷久久www | 亚州国产精品久久久 | 国产精品久久久久永久免费看 | 欧美专区国产专区 | 91九色成人 | 人成免费网站 | 久久国产精品99国产精 | 精品成人a区在线观看 | 精品 一区 在线 | 久热电影 | 午夜久久久久久久久久久 | 欧美另类69 | 三级黄免费看 | 黄色亚洲在线 | 最新av网站在线观看 | 日韩三级视频 | 国产精品免费麻豆入口 | 66av99精品福利视频在线 | 日韩av不卡在线播放 | 人人揉人人揉人人揉人人揉97 | 麻豆久久久久 | 99热这里只有精品1 av中文字幕日韩 | 欧美专区亚洲专区 | 中文字幕电影网 | 99久久精品免费看国产免费软件 | 精品中文字幕在线播放 | 性日韩欧美在线视频 | 亚洲综合成人在线 | 毛片网免费 | 精品乱码一区二区三四区 | 福利一区视频 | 天天干一干 | 国产精品免费大片视频 | 国内成人精品2018免费看 | 免费激情在线电影 | 久久男女视频 | 91成人天堂久久成人 | 成人一级在线 | 精品1区二区 | 国产老太婆免费交性大片 | 国产亚洲精品电影 | 4hu视频 | 蜜臀av夜夜澡人人爽人人桃色 |