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

首頁 > 編程 > .NET > 正文

Coolite優化導出Excel文件實現代碼

2024-07-10 13:26:29
字體:
來源:轉載
供稿:網友

1。先來張圖:

導出前數據:

Coolite優化導出Excel文件實現代碼

導出結果:

Coolite優化導出Excel文件實現代碼

設置列寬和屏蔽欄位:

Coolite優化導出Excel文件實現代碼

結果2:

Coolite優化導出Excel文件實現代碼

2.先把腳本文件定義了。

復制代碼 代碼如下:


//Copyright 2009 無憂lwz0721@gmail.com
var gridElse = {
getJsonToHidden: function(hidden, grid, format, title, fileName) {
hidden.setValue(this.getJsonDate(grid, format, title, fileName));
grid.submitData(true);
return true;
},
getJsonDate: function(grid, format, title, fileName) {
if (fileName == null || fileName == "") fileName = title;
var result = {
title: title,
format: format,
fileName: fileName,
dataCount: grid.store.reader.jsonData.length,
columns: '',
jsonDate: ''
};
//獲取分組ID
var groupField;
if (typeof (grid.view.getGroupField) == "undefined")
{ groupField = false; }
else { groupField = grid.view.getGroupField(); }
//設置表頭
var columns = this.getColumns(grid); //.getColumnModel().columns;
var columnCount = columns.length
for (var i = 0; i < columnCount; i++) {
if (columns[i].dataIndex != null && columns[i].dataIndex != "") {
fld = grid.store.fields.get(columns[i].dataIndex);
columns[i].recordFieldType = this.getRecordFieldType(fld);
}
if (groupField && groupField == columns[i].dataIndex)
columns[i].BGroup = true;
}
result.columns = Ext.encode(columns);
//返回數據
if (result.dataCount > 0 && result.dataCount <= 500) {
result.jsonDate = Ext.encode(grid.store.reader.jsonData);
}
else if (result.dataCount == null) result.dataCount = 0;
return Ext.encode(result);
},
getRecordFieldType: function(fld) {
if (fld == null) return "";
switch (fld.type) {
case "int": return "Int";
case "float": return "Float";
case "bool":
case "boolean": return "Boolean";
case "date": return "Date";
case "string": return "String";
default: return "Auto";
}
},
getColumns: function(grid) {
var columns = grid.getColumnModel().columns;
var columnCount = columns.length
for (var i = columnCount - 1; i >= 0; i--) {
if (columns[i].isColumnPlugin) columns.remove(columns[i]);
}
return columns;
}
};


3.調用方法:

復制代碼 代碼如下:


gridElse.getJsonToHidden(#{存儲控件},#{GridPanel控件},'xls','標題','文件名');


4.aspx頁面:
XXX.aspx

復制代碼 代碼如下:


<ext:Hidden runat="server" />
......
<ext:Store runat="server" OnSubmitData="Sdate_SubmitData" >
......
</ext:Store>
......
<ism:GridPanel runat="server" StoreID="Sdate">
......
<ext:Button runat="server" Text="Submit">
<Listeners>
<Click Handler="gridElse.getJsonToHidden(#{HToFile},#{GPData},'xls','標題','文件名');" />
</Listeners>
</ext:Button>


5.cs代碼:
XXX.aspx.cs

復制代碼 代碼如下:


protected void Sdate_SubmitData(object sender, StoreSubmitDataEventArgs e)
{
String json = HToFile.Value.ToString();
if (!String.IsNullOrEmpty(json))
{
ExportDate exportDate = JSON.Deserialize<ExportDate>(json);
if (exportDate.dataCount > 0)
{
if (exportDate.Dates == null || exportDate.Dates.Length < exportDate.dataCount)
{
//如數據超過500條這重新查詢數據導出
}
switch (exportDate.format)
{
case "xls":
GetToExcel(exportDate);
break;
case "pdf":
......
break;
}
}
}
}
public static void GetToExcel(ExportDate exportDate)
{
if (exportDate.Dates == null) { return; }
HttpContext context = HttpContext.Current;
if (context != null)
{
String rowid = "";
StringBuilder sb = new StringBuilder();
int columns = 0;
foreach (GridColumnInfo item in exportDate.GridColumnInfos)
{
if (!item.hidden || item.BGroup)
{
columns++;
}
}
#region 頭部
sb.Append("<?xml version=/"1.0/" encoding=/"utf-8/"?>");
sb.Append("<?mso-application progid=/"Excel.Sheet/"?>");
sb.Append("<Workbook xmlns=/"urn:schemas-microsoft-com:office:spreadsheet/" xmlns:o=/"urn:schemas-microsoft-com:office:office/" xmlns:x=/"urn:schemas-microsoft-com:office:excel/" xmlns:ss=/"urn:schemas-microsoft-com:office:spreadsheet/" xmlns:html=/"http://www.w3.org/TR/REC-html40/">");
sb.Append(" <DocumentProperties xmlns=/"urn:schemas-microsoft-com:office:office/">");
sb.Append(" <Version>12.00</Version>");
sb.Append(" </DocumentProperties>");
sb.Append(" <OfficeDocumentSettings xmlns=/"urn:schemas-microsoft-com:office:office/">");
sb.Append(" <RemovePersonalInformation/>");
sb.Append(" </OfficeDocumentSettings>");
sb.Append(" <ExcelWorkbook xmlns=/"urn:schemas-microsoft-com:office:excel/">");
sb.Append(" <WindowHeight>11640</WindowHeight>");
sb.Append(" <WindowWidth>19200</WindowWidth>");
sb.Append(" <WindowTopX>0</WindowTopX>");
sb.Append(" <WindowTopY>90</WindowTopY>");
sb.Append(" <ProtectStructure>False</ProtectStructure>");
sb.Append(" <ProtectWindows>False</ProtectWindows>");
sb.Append(" </ExcelWorkbook>");
#region 樣式
sb.Append("<Styles>");
sb.Append("<Style ss:ID=/"Default/">");
sb.Append("<Alignment ss:Vertical=/"Top/" ss:WrapText=/"1/" />");
sb.Append("<Font ss:FontName=/"宋體/" ss:Size=/"11/" />");
//sb.Append("<Borders>");
//sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Top/" />");
//sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Bottom/" />");
//sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Left/" />");
//sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Right/" />");
//sb.Append("</Borders>");
sb.Append("<Interior />");
sb.Append("<NumberFormat />");
sb.Append("<Protection />");
sb.Append("</Style>");
sb.Append("<Style ss:ID=/"title/">");
sb.Append("<Borders />");
sb.Append("<Font ss:Size=/"16/" ss:Bold=/"1/" />");
sb.Append("<Alignment ss:WrapText=/"1/" ss:Vertical=/"Center/" ss:Horizontal=/"Center/" />");
sb.Append("<NumberFormat ss:Format=/"@/" />");
sb.Append("</Style>");
sb.Append("<Style ss:ID=/"headercell/">");
sb.Append("<Font ss:Bold=/"1/" ss:Size=/"12/" />");
sb.Append("<Alignment ss:WrapText=/"1/" ss:Horizontal=/"Center/" />");
sb.Append("<Interior ss:Pattern=/"Solid/" ss:Color=/"#F2F2F2/" />");
sb.Append("<Borders>");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Top/" />");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Bottom/" />");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Left/" />");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Right/" />");
sb.Append("</Borders>");
sb.Append("</Style>");
sb.Append("<Style ss:ID=/"even/">");
sb.Append("<Interior ss:Pattern=/"Solid/" />");
sb.Append("<Borders>");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Top/" />");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Bottom/" />");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Left/" />");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Right/" />");
sb.Append("</Borders>");
sb.Append("</Style>");
sb.Append("<Style ss:Parent=/"even/" ss:ID=/"evendate/">");
sb.Append("<NumberFormat ss:Format=/"[ENG][$-409]dd-mmm-yyyy;@/" />");
sb.Append("<Borders>");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Top/" />");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Bottom/" />");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Left/" />");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Right/" />");
sb.Append("</Borders>");
sb.Append("</Style>");
sb.Append("<Style ss:Parent=/"even/" ss:ID=/"evenint/">");
sb.Append("<NumberFormat ss:Format=/"0/" />");
sb.Append("<Borders>");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Top/" />");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Bottom/" />");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Left/" />");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Right/" />");
sb.Append("</Borders>");
sb.Append("</Style>");
sb.Append("<Style ss:Parent=/"even/" ss:ID=/"evenfloat/">");
sb.Append("<NumberFormat ss:Format=/"0.00/" />");
sb.Append("<Borders>");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Top/" />");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Bottom/" />");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Left/" />");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Right/" />");
sb.Append("</Borders>");
sb.Append("</Style>");
sb.Append("<Style ss:ID=/"odd/">");
sb.Append("<Interior ss:Pattern=/"Solid/" />");
sb.Append("<Borders>");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Top/" />");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Bottom/" />");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Left/" />");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Right/" />");
sb.Append("</Borders>");
sb.Append("</Style>");
sb.Append("<Style ss:Parent=/"odd/" ss:ID=/"odddate/">");
sb.Append("<NumberFormat ss:Format=/"[ENG][$-409]dd-mmm-yyyy;@/" />");
sb.Append("<Borders>");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Top/" />");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Bottom/" />");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Left/" />");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Right/" />");
sb.Append("</Borders>");
sb.Append("</Style>");
sb.Append("<Style ss:Parent=/"odd/" ss:ID=/"oddint/">");
sb.Append("<NumberFormat ss:Format=/"0/" />");
sb.Append("<Borders>");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Top/" />");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Bottom/" />");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Left/" />");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Right/" />");
sb.Append("</Borders>");
sb.Append("</Style>");
sb.Append("<Style ss:Parent=/"odd/" ss:ID=/"oddfloat/">");
sb.Append("<NumberFormat ss:Format=/"0.00/" />");
sb.Append("<Borders>");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Top/" />");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Bottom/" />");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Left/" />");
sb.Append("<Border ss:Weight=/"1/" ss:LineStyle=/"Continuous/" ss:Position=/"Right/" />");
sb.Append("</Borders>");
sb.Append("</Style>");
sb.Append("</Styles>");
#endregion
sb.AppendFormat("<Worksheet ss:Name=/"{0}/">", exportDate.title);
sb.AppendFormat("<Table x:FullRows=/"1/" x:FullColumns=/"1/" ss:ExpandedColumnCount=/"{0}/" ss:ExpandedRowCount=/"{1}/">", columns, exportDate.Dates.Length + 2);
#endregion
//表列寬度
int ColumnWidthsZ = 0;
foreach (GridColumnInfo item in exportDate.GridColumnInfos)
{
if (!item.hidden || item.BGroup)
{
ColumnWidthsZ += item.width;
sb.AppendFormat("<Column ss:AutoFitWidth=/"1/" ss:Width=/"{0}/" />", item.width);
}
}
//標題
sb.Append("<Row ss:Height=/"28/">");
sb.AppendFormat("<Cell ss:StyleID=/"title/" ss:MergeAcross=/"{0}/">", columns - 1);
sb.AppendFormat("<Data ss:Type=/"String/">{0}</Data><NamedCell ss:Name=/"Print_Titles/" />", exportDate.title);
sb.Append("</Cell>");
sb.Append("</Row>");
//表頭
sb.Append("<Row ss:AutoFitHeight=/"1/">");
foreach (GridColumnInfo item in exportDate.GridColumnInfos)
{
if (!item.hidden || item.BGroup)
{
sb.AppendFormat("<Cell ss:StyleID=/"headercell/"><Data ss:Type=/"String/">{0}</Data><NamedCell ss:Name=/"Print_Titles/" /></Cell>", item.header);
}
}
sb.Append("</Row>");
//數據
int i = 0;
string cellClass = "";
foreach (Dictionary<string, string> row in exportDate.Dates)
{
i++;
cellClass = ((i & 1) == 0) ? "odd" : "even";
sb.Append("<Row>");
foreach (GridColumnInfo item in exportDate.GridColumnInfos)
{
rowid = item.id;
if (string.IsNullOrEmpty(rowid)) rowid = item.dataIndex;
if (!String.IsNullOrEmpty(rowid) && (!item.hidden || item.BGroup) && row.ContainsKey(rowid))
{
sb.AppendFormat("<Cell ss:StyleID=/"{0}{1}/"><Data ss:Type=/"{2}/">{3}</Data></Cell>",
cellClass, exportDate.GetStyleID(item.recordFieldType), exportDate.GetDataType(item.recordFieldType), row[rowid]);
}
}
sb.Append("</Row>");
}
#region 尾部
sb.Append("</Table>");
sb.Append("<WorksheetOptions>");
sb.Append("<PageSetup>");
sb.Append("<Layout x:CenterHorizontal=/"1/" x:Orientation=/"Landscape/" />");
sb.Append("<Footer x:Data=/"Page &P of &N/" x:Margin=/"0.5/" />");
sb.Append("<PageMargins x:Top=/"0.5/" x:Right=/"0.5/" x:Left=/"0.5/" x:Bottom=/"0.8/" />");
sb.Append("</PageSetup>");
sb.Append("<FitToPage />");
sb.Append("<Print>");
sb.Append("<PrintErrors>Blank</PrintErrors>");
sb.Append("<FitWidth>1</FitWidth>");
sb.Append("<FitHeight>32767</FitHeight>");
sb.Append("<ValidPrinterInfo />");
sb.Append("<VerticalResolution>600</VerticalResolution>");
sb.Append("</Print>");
sb.Append("<Selected />");
sb.Append("<DoNotDisplayGridlines />");
sb.Append("<ProtectObjects>False</ProtectObjects>");
sb.Append("<ProtectScenarios>False</ProtectScenarios>");
sb.Append("</WorksheetOptions>");
sb.Append("</Worksheet></Workbook>");
#endregion
context.Response.Clear();
if (context.Request.Browser.Browser != "IE")
context.Response.AppendHeader("Content-Disposition", String.Format("attachment; filename=/"{0}.xls/"", exportDate.fileName));
else context.Response.AppendHeader("Content-Disposition", String.Format("attachment; filename={0}.xls", System.Web.HttpUtility.UrlEncode(exportDate.fileName)));
context.Response.ContentType = "application/excel";
context.Response.Write(sb.ToString());
context.Response.End();
}
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人激情视频免费在线| 国产欧美精品日韩精品| 亚洲va欧美va国产综合剧情| 国产精品久久久久久久久借妻| 国产精品久久视频| 久热精品视频在线免费观看| 日韩69视频在线观看| 中文字幕久热精品在线视频| 亚洲国产精品高清久久久| 一本色道久久综合狠狠躁篇的优点| 欧美精品久久久久a| 日韩a**站在线观看| 国产精品日韩一区| 日韩中文字幕在线播放| 在线看国产精品| 国产精品视频xxxx| 国产一区二区三区中文| 亚洲日韩第一页| 欧美老女人性视频| 国产91色在线| 中文字幕亚洲欧美日韩在线不卡| 菠萝蜜影院一区二区免费| 国产精品久久久久久一区二区| 亚洲日本欧美中文幕| 午夜精品福利电影| 亚洲综合在线小说| 成人精品视频久久久久| 国产精品毛片a∨一区二区三区|国| 欧美色播在线播放| 精品国产91乱高清在线观看| 国产精品影片在线观看| 亚洲永久免费观看| 国产欧美精品在线| 亚洲第一精品夜夜躁人人躁| 亚洲理论片在线观看| 欧美韩日一区二区| 国产精品视频在线播放| 九九热最新视频//这里只有精品| 日本中文字幕成人| 久久综合久久美利坚合众国| 久久久久久亚洲精品中文字幕| 国产国语刺激对白av不卡| 国产欧美日韩亚洲精品| 成人午夜在线观看| 亚洲精品网站在线播放gif| 久久伊人精品天天| 欧美另类精品xxxx孕妇| 国内精品久久影院| 久久精品在线视频| 热re91久久精品国99热蜜臀| 美日韩在线视频| 精品国产欧美一区二区三区成人| 日韩欧美精品免费在线| 亚洲欧美国产视频| 久久韩国免费视频| 欧美性猛交xxxx免费看久久久| 亚洲精品自在久久| 久久理论片午夜琪琪电影网| 欧美高清videos高潮hd| 在线激情影院一区| 久久97精品久久久久久久不卡| 久久久视频在线| 超碰91人人草人人干| 久久影院免费观看| 69av视频在线播放| 91高清视频免费观看| 91影院在线免费观看视频| 欧美日韩国产成人在线观看| 九九久久精品一区| 日韩激情在线视频| 欧美最猛性xxxxx免费| 久久久久这里只有精品| 亚洲精品自在久久| 精品久久香蕉国产线看观看亚洲| 欧美美最猛性xxxxxx| 日韩av综合中文字幕| 国产精品偷伦视频免费观看国产| 日韩美女视频中文字幕| 97成人精品视频在线观看| 日本久久久a级免费| 在线观看久久av| 成人激情av在线| 亚洲成色777777在线观看影院| 国产成人亚洲综合91精品| 日韩av在线一区二区| 亚洲影院色无极综合| 欧美疯狂做受xxxx高潮| 欧美国产精品人人做人人爱| 成人网址在线观看| 欧美三级欧美成人高清www| 国产精品欧美在线| 成人国内精品久久久久一区| 国产精品69久久久久| 久久男人av资源网站| 亚洲免费人成在线视频观看| 91av视频在线观看| 久久久成人的性感天堂| 国产成人aa精品一区在线播放| 国产精品吊钟奶在线| 亚洲成年人影院在线| 久久久天堂国产精品女人| 日韩中文av在线| 久久精品国产成人| 亚洲精品日韩丝袜精品| 久久久久久久国产精品视频| 久久视频这里只有精品| 91在线视频精品| 国产在线精品成人一区二区三区| 夜夜嗨av一区二区三区四区| 日本久久久久久久久久久| 欧美中文在线视频| 国产精品久久久久久久午夜| 国产成人亚洲综合| 久久国产精品99国产精| 亚洲激情第一页| 久久99久久99精品免观看粉嫩| 欧美裸体xxxx极品少妇软件| 久久精品国产精品| 精品毛片三在线观看| 亚洲精品一区中文字幕乱码| 日日噜噜噜夜夜爽亚洲精品| 欧美综合国产精品久久丁香| 国产精品va在线播放| 国产精品黄色影片导航在线观看| 欧美黑人狂野猛交老妇| 亚洲国产另类 国产精品国产免费| 精品伊人久久97| 亚洲精品一区二区三区婷婷月| 日韩美女免费观看| 亚洲精品国产综合久久| 91精品久久久久久久久久| 欧美日韩一二三四五区| xxav国产精品美女主播| 国产成人精品久久久| 亚洲视频一区二区三区| 欧美日韩国产在线播放| 国产一区二区欧美日韩| 亚洲精品美女在线观看播放| 亚洲大尺度美女在线| 热久久免费国产视频| 性欧美在线看片a免费观看| 91免费观看网站| 久久夜精品va视频免费观看| 久久综合88中文色鬼| 国产视频丨精品|在线观看| 成人精品福利视频| 亚洲精选中文字幕| 国产成人一区二区三区电影| 欧美成人网在线| 91a在线视频| 精品女同一区二区三区在线播放| 欧美性生活大片免费观看网址| 久青草国产97香蕉在线视频| 精品国产欧美成人夜夜嗨| 日韩最新中文字幕电影免费看| 欧美成人手机在线| 成人性生交xxxxx网站| 中文字幕在线看视频国产欧美在线看完整| 欧美视频免费在线观看| 亚洲欧美制服丝袜| 日韩福利在线播放| www高清在线视频日韩欧美| 国产精国产精品| 欧美性生交大片免网|