亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#實現幾十萬級數據導出Excel及Excel各種操作實例

2019-10-29 21:14:22
字體:
來源:轉載
供稿:網友

先上導出代碼  

  /// <summary>       /// 導出速度最快       /// </summary>       /// <param name="list"><列名,數據></param>       /// <param name="filepath"></param>       /// <returns></returns>       public bool NewExport(List<DictionaryEntry> list, string filepath)       {         bool bSuccess = true;         Microsoft.Office.Interop.Excel.Application appexcel = new Microsoft.Office.Interop.Excel.Application();         System.Reflection.Missing miss = System.Reflection.Missing.Value;         appexcel = new Microsoft.Office.Interop.Excel.Application();         Microsoft.Office.Interop.Excel.Workbook workbookdata = null;         Microsoft.Office.Interop.Excel.Worksheet worksheetdata = null;         Microsoft.Office.Interop.Excel.Range rangedata;            workbookdata = appexcel.Workbooks.Add();            //設置對象不可見         appexcel.Visible = false;         appexcel.DisplayAlerts = false;         try         {           foreach (var lv in list)           {             var keys = lv.Key as List<string>;             var values = lv.Value as List<IList<object>>;             worksheetdata = (Microsoft.Office.Interop.Excel.Worksheet)workbookdata.Worksheets.Add(miss, workbookdata.ActiveSheet);                for (int i = 0; i < keys.Count-1; i++)             {               //給工作表賦名稱               worksheetdata.Name = keys[0];//列名的第一個數據位表名               worksheetdata.Cells[1, i + 1] = keys[i+1];             }                //因為第一行已經寫了表頭,所以所有數據都應該從a2開始             rangedata = worksheetdata.get_Range("a2", miss);             Microsoft.Office.Interop.Excel.Range xlrang = null;                //irowcount為實際行數,最大行             int irowcount = values.Count;             int iparstedrow = 0, icurrsize = 0;                //ieachsize為每次寫行的數值,可以自己設置             int ieachsize = 10000;                //icolumnaccount為實際列數,最大列數             int icolumnaccount = keys.Count-1;                //在內存中聲明一個ieachsize×icolumnaccount的數組,ieachsize是每次最大存儲的行數,icolumnaccount就是存儲的實際列數             object[,] objval = new object[ieachsize, icolumnaccount];             icurrsize = ieachsize;                while (iparstedrow < irowcount)             {               if ((irowcount - iparstedrow) < ieachsize)                 icurrsize = irowcount - iparstedrow;                  //用for循環給數組賦值               for (int i = 0; i < icurrsize; i++)               {                 for (int j = 0; j < icolumnaccount; j++)                 {                   var v = values[i + iparstedrow][j];                   objval[i, j] = v != null ? v.ToString() : "";                 }               }               string X = "A" + ((int)(iparstedrow + 2)).ToString();               string col = "";               if (icolumnaccount <= 26)               {                 col = ((char)('A' + icolumnaccount - 1)).ToString() + ((int)(iparstedrow + icurrsize + 1)).ToString();               }               else               {                 col = ((char)('A' + (icolumnaccount / 26 - 1))).ToString() + ((char)('A' + (icolumnaccount % 26 - 1))).ToString() + ((int)(iparstedrow + icurrsize + 1)).ToString();               }               xlrang = worksheetdata.get_Range(X, col);               xlrang.NumberFormat = "@";               // 調用range的value2屬性,把內存中的值賦給excel               xlrang.Value2 = objval;               iparstedrow = iparstedrow + icurrsize;             }           }           ((Microsoft.Office.Interop.Excel.Worksheet)workbookdata.Worksheets["Sheet1"]).Delete();           ((Microsoft.Office.Interop.Excel.Worksheet)workbookdata.Worksheets["Sheet2"]).Delete();           ((Microsoft.Office.Interop.Excel.Worksheet)workbookdata.Worksheets["Sheet3"]).Delete();           //保存工作表           workbookdata.SaveAs(filepath, miss, miss, miss, miss, miss, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, miss, miss, miss);           workbookdata.Close(false, miss, miss);           appexcel.Workbooks.Close();           appexcel.Quit();              System.Runtime.InteropServices.Marshal.ReleaseComObject(workbookdata);           System.Runtime.InteropServices.Marshal.ReleaseComObject(appexcel.Workbooks);           System.Runtime.InteropServices.Marshal.ReleaseComObject(appexcel);           GC.Collect();         }         catch (Exception ex)         {           ErrorMsg = ex.Message;           bSuccess = false;         }         finally         {           if (appexcel != null)           {             ExcelImportHelper.KillSpecialExcel(appexcel);           }         }         return bSuccess;       }
range.NumberFormatLocal = "@";   //設置單元格格式為文本     range = (Range)worksheet.get_Range("A1", "E1");   //獲取Excel多個單元格區域:本例做為Excel表頭     range.Merge(0);   //單元格合并動作     worksheet.Cells[1, 1] = "Excel單元格賦值";   //Excel單元格賦值     range.Font.Size = 15;   //設置字體大小     range.Font.Underline=true;   //設置字體是否有下劃線     range.Font.Name="黑體";    設置字體的種類     range.HorizontalAlignment=XlHAlign.xlHAlignCenter;   //設置字體在單元格內的對其方式     range.ColumnWidth=15;   //設置單元格的寬度     range.Cells.Interior.Color=System.Drawing.Color.FromArgb(255,204,153).ToArgb();   //設置單元格的背景色     range.Borders.LineStyle=1;   //設置單元格邊框的粗細     range.BorderAround(XlLineStyle.xlContinuous,XlBorderWeight.xlThick,XlColorIndex.xlColorIndexAutomatic,System.Drawing.Color.Black.ToArgb());   //給單元格加邊框     range.Borders.get_Item(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeTop).LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlLineStyleNone; //設置單元格上邊框為無邊框     range.EntireColumn.AutoFit();   //自動調整列寬     Range.HorizontalAlignment= xlCenter;   // 文本水平居中方式     Range.VerticalAlignment= xlCenter   //文本垂直居中方式     Range.WrapText=true;   //文本自動換行     Range.Interior.ColorIndex=39;   //填充顏色為淡紫色     Range.Font.Color=clBlue;   //字體顏色     xlsApp.DisplayAlerts=false;  //對Excel的操作 不彈出提示信息 ApplicationClass xlsApp = new ApplicationClass(); // 1. 創建Excel應用程序對象的一個實例,相當于我們從開始菜單打開Excel應用程序。 if (xlsApp == null) { //對此實例進行驗證,如果為null則表示運行此代碼的機器可能未安裝Excel } 

1. 打開現有的Excel文件  

Workbook workbook = xlsApp.Workbooks.Open(excelFilePath, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); Worksheet mySheet = workbook.Sheets[1] as Worksheet; //第一個sheet頁 mySheet.Name = "testsheet"; //這里修改sheet名稱 

2.復制sheet頁  

mySheet.Copy(Type.Missing, workbook.Sheets[1]);//復制mySheet成一個新的sheet頁,復制完后的名稱是mySheet頁名稱后加一個(2),這里就是testsheet(2),復制完后,Worksheet的數量增加一個

注意 這里Copy方法的兩個參數,指是的復制出來新的sheet頁是在指定sheet頁的前面還是后面,上面的例子就是指復制的sheet頁在第一個sheet頁的后面。 

3.刪除sheet頁  

xlsApp.DisplayAlerts = false; //如果想刪除某個sheet頁,首先要將此項設為fasle。 (xlsApp.ActiveWorkbook.Sheets[1] as Worksheet).Delete(); 

4.選中sheet頁  

 

復制代碼 代碼如下:

(xlsApp.ActiveWorkbook.Sheets[1] as Worksheet).Select(Type.Missing); //選中某個sheet頁 
  

 

5.另存excel文件  

workbook.Saved = true; workbook.SaveCopyAs(filepath); 

6.釋放excel資源  

workbook.Close(true, Type.Missing, Type.Missing); workbook = null; xlsApp.Quit(); xlsApp = null;

方法2:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using Microsoft.Office.Interop.Excel;using System.Data;namespace ExcelTest{  public class ExcelUtil  {    System.Data.DataTable table11 = new System.Data.DataTable();    public void ExportToExcel(System.Data.DataTable table, string saveFileName)    {      bool fileSaved = false;      //ExcelApp xlApp = new ExcelApp();      Application xlApp = new Application();      if (xlApp == null)      {        return;      }      Workbooks workbooks = xlApp.Workbooks;      Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet);      Worksheet worksheet = (Worksheet)workbook.Worksheets[1];//取得sheet1      long rows = table.Rows.Count;      /*下邊注釋的兩行代碼當數據行數超過行時,出現異常:異常來自HRESULT:0x800A03EC。因為:Excel 2003每個sheet只支持最大行數據      //Range fchR = worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[table.Rows.Count+2, gridview.Columns.View.VisibleColumns.Count+1]);      //fchR.Value2 = datas;*/      if (rows > 65535)      {        long pageRows = 60000;//定義每頁顯示的行數,行數必須小于        int scount = (int)(rows / pageRows);        if (scount * pageRows < table.Rows.Count)//當總行數不被pageRows整除時,經過四舍五入可能頁數不準        {          scount = scount + 1;        }        for (int sc = 1; sc <= scount; sc++)        {          if (sc > 1)          {            object missing = System.Reflection.Missing.Value;            worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets.Add(            missing, missing, missing, missing);//添加一個sheet          }          else          {            worksheet = (Worksheet)workbook.Worksheets[sc];//取得sheet1          }          string[,] datas = new string[pageRows + 1, table.Columns.Count+ 1];for (int i = 0; i < table.Columns.Count; i++) //寫入字段          {            datas[0, i] = table.Columns[i].Caption;          }          Range range = worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[1, table.Columns.Count]);          range.Interior.ColorIndex = 15;//15代表灰色          range.Font.Bold = true;          range.Font.Size = 9;          int init = int.Parse(((sc - 1) * pageRows).ToString());          int r = 0;          int index = 0;          int result;          if (pageRows * sc >= table.Rows.Count)          {            result = table.Rows.Count;          }          else          {            result = int.Parse((pageRows * sc).ToString());          }          for (r = init; r < result; r++)          {            index = index + 1;            for (int i = 0; i < table.Columns.Count; i++)            {              if (table.Columns[i].DataType == typeof(string) || table.Columns[i].DataType == typeof(Decimal) || table.Columns[i].DataType == typeof(DateTime))              {                object obj = table.Rows[r][table.Columns[i].ColumnName];                datas[index, i] = obj == null ? "" : "'" + obj.ToString().Trim();//在obj.ToString()前加單引號是為了防止自動轉化格式              }            }          }          Range fchR = worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[index + 2, table.Columns.Count + 1]);          fchR.Value2 = datas;          worksheet.Columns.EntireColumn.AutoFit();//列寬自適應。          range = worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[index + 1, table.Columns.Count]);          //15代表灰色          range.Font.Size = 9;          range.RowHeight = 14.25;          range.Borders.LineStyle = 1;          range.HorizontalAlignment = 1;        }      }      else      {        string[,] datas = new string[table.Rows.Count + 2, table.Columns.Count + 1];        for (int i = 0; i < table.Columns.Count; i++) //寫入字段             {          datas[0, i] = table.Columns[i].Caption;        }        Range range = worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[1, table.Columns.Count]);        range.Interior.ColorIndex = 15;//15代表灰色        range.Font.Bold = true;        range.Font.Size = 9;        int r = 0;        for (r = 0; r < table.Rows.Count; r++)        {          for (int i = 0; i < table.Columns.Count; i++)          {            if (table.Columns[i].DataType == typeof(string) || table.Columns[i].DataType == typeof(Decimal) || table.Columns[i].DataType == typeof(DateTime))            {              object obj = table.Rows[r][table.Columns[i].ColumnName];              datas[r + 1, i] = obj == null ? "" : "'" + obj.ToString().Trim();//在obj.ToString()前加單引號是為了防止自動轉化格式            }          }          //System.Windows.Forms.Application.DoEvents();}        Range fchR = worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[table.Rows.Count + 2, table.Columns.Count + 1]);        fchR.Value2 = datas;                worksheet.Columns.EntireColumn.AutoFit();//列寬自適應。        range = worksheet.get_Range(worksheet.Cells[1, 1], worksheet.Cells[table.Rows.Count + 1, table.Columns.Count]);        //15代表灰色        range.Font.Size = 9;        range.RowHeight = 14.25;        range.Borders.LineStyle = 1;        range.HorizontalAlignment = 1;      }      if (saveFileName != "")      {        try        {          workbook.Saved = true;          workbook.SaveCopyAs(saveFileName);          fileSaved = true;        }        catch (Exception ex)        {          fileSaved = false;        }      }      else      {        fileSaved = false;      }      xlApp.Quit();      GC.Collect();//強行銷毀       }  }}

方法3:

先去官網:http://npoi.codeplex.com/下載需要引入dll(可以選擇.net2.0或者.net4.0的dll),然后在網站中添加引用。

導出代碼:

NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();NPOI.SS.UserModel.ISheet sheet = book.CreateSheet("test_01");// 第一列NPOI.SS.UserModel.IRow row = sheet.CreateRow(0);row.CreateCell(0).SetCellValue("第一列第一行");// 第二列NPOI.SS.UserModel.IRow row2 = sheet.CreateRow(1);row2.CreateCell(0).SetCellValue("第二列第一行");// ...// 寫入到客戶端 System.IO.MemoryStream ms = new System.IO.MemoryStream();book.Write(ms);Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.xls", DateTime.Now.ToString("yyyyMMddHHmmssfff")));Response.BinaryWrite(ms.ToArray());book = null;ms.Close();ms.Dispose();

導入代碼:

HSSFWorkbook hssfworkbook; #region public DataTable ImportExcelFile(string filePath) {   #region//初始化信息   try   {     using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))     {       hssfworkbook = new HSSFWorkbook(file);     }   }   catch (Exception e)   {     throw e;   }   #endregion    NPOI.SS.UserModel.Sheet sheet = hssfworkbook.GetSheetAt(0);   System.Collections.IEnumerator rows = sheet.GetRowEnumerator();   DataTable dt = new DataTable();   for (int j = 0; j < (sheet.GetRow(0).LastCellNum); j++)   {     dt.Columns.Add(Convert.ToChar(((int)'A') + j).ToString());   }   while (rows.MoveNext())   {     HSSFRow row = (HSSFRow)rows.Current;     DataRow dr = dt.NewRow();     for (int i = 0; i < row.LastCellNum; i++)     {       NPOI.SS.UserModel.Cell cell = row.GetCell(i);       if (cell == null)       {         dr[i] = null;       }       else       {         dr[i] = cell.ToString();       }     }     dt.Rows.Add(dr);   }   return dt; } #endregion

用法:

首先建立一個空白的工作簿用作測試,并在其中建立空白工作表,在表中建立空白行,在行中建立單元格,并填入內容:

//建立空白工作簿IWorkbook workbook = new HSSFWorkbook();//在工作簿中:建立空白工作表ISheet sheet = workbook.CreateSheet();//在工作表中:建立行,參數為行號,從0計IRow row = sheet.CreateRow(0);//在行中:建立單元格,參數為列號,從0計ICell cell = row.CreateCell(0);//設置單元格內容cell.SetCellValue("實習鑒定表");

設置單元格樣式:設置單元格樣式時需要注意,務必創建一個新的樣式對象進行設置,否則會將工作表所有單元格的樣式一同設置,它們應該共享的是一個樣式對象:

ICellStyle style = workbook.CreateCellStyle();//設置單元格的樣式:水平對齊居中style.Alignment = HorizontalAlignment.CENTER;//新建一個字體樣式對象IFont font = workbook.CreateFont();//設置字體加粗樣式font.Boldweight = short.MaxValue;//使用SetFont方法將字體樣式添加到單元格樣式中 style.SetFont(font);//將新的樣式賦給單元格cell.CellStyle = style;

設置單元格寬高:

設置單元格的高度實際是設置其所在行高,所以要在單元格所在行上設置行高,行高設置數值好像是像素點的1/20,所以*20以便達到設置效果;

設置單元格的寬度實際上是設置其所在列寬,所以要在單元格所在列上設置(列的設置在工作表上),寬度數值好像是字符的1/256,所以*256以便達到設置效果。

//設置單元格的高度row.Height = 30 * 20;//設置單元格的寬度sheet.SetColumnWidth(0, 30 * 256);

合并單元格:合并單元格實際上是聲明一個區域,該區域中的單元格將進行合并,合并后的內容與樣式以該區域最左上角的單元格為準。

//設置一個合并單元格區域,使用上下左右定義CellRangeAddress區域//CellRangeAddress四個參數為:起始行,結束行,起始列,結束列sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 10));

 添加公式:使用Cell的CellFormula來設置公式,是一個字符串,公式前不需要加=號。

//通過Cell的CellFormula向單元格中寫入公式//注:直接寫公式內容即可,不需要在最前加'='ICell cell2 = sheet.CreateRow(1).CreateCell(0);cell2.CellFormula = "HYPERLINK(/"測試圖片.jpg/",/"測試圖片.jpg/")";

 將工作簿寫入文件查看效果:

//將工作簿寫入文件using (FileStream fs = new FileStream("生成效果.xls", FileMode.Create, FileAccess.Write)){ workbook.Write(fs);}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久久久久久av| 欧美激情精品久久久久久免费印度| 亚洲自拍高清视频网站| 亚洲精品中文字幕女同| 亚洲成人精品久久久| 日韩欧美有码在线| 色悠久久久久综合先锋影音下载| 欧美中文字幕视频| 亚洲自拍小视频免费观看| 欧美第一黄网免费网站| 国产一区二区三区在线播放免费观看| 国产精品96久久久久久| 51视频国产精品一区二区| 秋霞成人午夜鲁丝一区二区三区| 中文字幕精品av| 欧美天天综合色影久久精品| 日韩av一区在线观看| 亚洲一区二区三区视频| 狠狠色狠狠色综合日日小说| 亚洲第一页中文字幕| 久久久久久中文字幕| 国产在线精品成人一区二区三区| 国产精品视频成人| 久久777国产线看观看精品| 日韩激情在线视频| 日韩免费视频在线观看| 欧美久久久精品| 久久九九热免费视频| 国产精品入口日韩视频大尺度| 欧美成人免费一级人片100| 国产精品色视频| 日本sm极度另类视频| 中文字幕日本精品| 国产精品一区av| 国产999在线观看| 成人激情电影一区二区| 国产成人涩涩涩视频在线观看| 欧美性高跟鞋xxxxhd| 国产精品99导航| 成人亚洲欧美一区二区三区| 91欧美精品午夜性色福利在线| 中文字幕精品av| 亚洲国产欧美一区二区丝袜黑人| 成人网中文字幕| 国外日韩电影在线观看| 精品久久久久久久久久久久久久| 成人网在线观看| 91国产中文字幕| 日韩日本欧美亚洲| 91tv亚洲精品香蕉国产一区7ujn| 日韩精品在线视频观看| 欧美成人免费大片| 久久久av亚洲男天堂| 中文字幕日韩欧美在线视频| 亚洲91精品在线观看| 欧美视频裸体精品| 91sa在线看| 亚洲免费影视第一页| 亚洲va欧美va国产综合久久| 91在线视频精品| 亚洲欧美日韩一区二区在线| 色樱桃影院亚洲精品影院| 亚洲欧美中文另类| 日韩av免费在线播放| 91av中文字幕| 国产精品jizz在线观看麻豆| 欧美激情极品视频| 亚洲精品v天堂中文字幕| 久久夜精品va视频免费观看| 这里精品视频免费| 777午夜精品福利在线观看| 日韩av在线直播| 88国产精品欧美一区二区三区| 热久久99这里有精品| 国产精品欧美日韩一区二区| 欧美理论电影在线观看| 亚洲精品电影在线观看| 精品夜色国产国偷在线| 日韩精品免费观看| 成人精品久久一区二区三区| 国产视频在线观看一区二区| 97久久国产精品| 国产精品久久二区| 成人免费网站在线| 色综合色综合久久综合频道88| 91在线观看免费观看| 91伊人影院在线播放| 欧美成人午夜免费视在线看片| 精品国产一区二区三区久久久| 亚洲电影免费在线观看| 日av在线播放中文不卡| 日韩在线视频网站| 亚洲精品动漫100p| 欧美一区二区色| 国产精品jvid在线观看蜜臀| 日韩av综合中文字幕| 国产精品视频资源| 久久免费视频在线| 国产日韩精品在线播放| 日韩欧美成人免费视频| 成人免费看吃奶视频网站| 最近2019好看的中文字幕免费| 久久99国产综合精品女同| 成人有码视频在线播放| 一本大道亚洲视频| 亚洲图片在线综合| 国产日韩欧美综合| 国产精彩精品视频| 91禁外国网站| 国产欧美中文字幕| 国产视频丨精品|在线观看| 色婷婷亚洲mv天堂mv在影片| 亚洲欧美日韩一区二区在线| 亚洲专区在线视频| 国产亚洲欧美aaaa| 国产视频精品免费播放| 欧美日韩国产限制| 亚洲欧美国产一本综合首页| 精品久久香蕉国产线看观看gif| 欧美成人精品一区| 国产精品一区二区三区免费视频| 国产精品成av人在线视午夜片| 国产视频精品一区二区三区| 成人网址在线观看| 亚洲人成欧美中文字幕| 久久久国产一区二区| 日韩欧美成人区| 国产精品私拍pans大尺度在线| 中文字幕日韩精品在线观看| 国产精品草莓在线免费观看| 一区二区三区精品99久久| 一本色道久久综合狠狠躁篇的优点| 91在线免费视频| 久久精品电影网站| 国产美女精品视频| 尤物九九久久国产精品的特点| 亚洲天堂成人在线视频| 欧美人与性动交a欧美精品| 欧美野外猛男的大粗鳮| 日韩精品在线观看一区二区| 日韩经典一区二区三区| 成人久久精品视频| 国产剧情日韩欧美| 91精品国产91久久久久久久久| 日韩精品极品毛片系列视频| 中文字幕欧美日韩在线| 欧美在线一级va免费观看| 欧美精品一二区| 亚洲国产99精品国自产| 91精品国产网站| 91精品久久久久久久久久| 国产精品入口日韩视频大尺度| 日韩精品久久久久| 黄色成人在线免费| 亚洲国产另类 国产精品国产免费| 日韩欧美在线视频日韩欧美在线视频| 亚洲欧美另类中文字幕| 91老司机精品视频| 国产精品成人aaaaa网站| 成人精品一区二区三区电影免费| 日本久久久久久久久久久| 久久亚洲精品成人| 亚洲精品98久久久久久中文字幕| 欧美疯狂xxxx大交乱88av|