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

首頁(yè) > 編程 > C# > 正文

C# WORD操作實(shí)現(xiàn)代碼

2019-10-29 21:48:31
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
在當(dāng)前項(xiàng)目開(kāi)發(fā)過(guò)程中,客戶有根據(jù)數(shù)據(jù)庫(kù)數(shù)據(jù)生成WORD文檔的需求,在和同事溝通的過(guò)程中,找到了兩個(gè)解決方案
 
 
1.先通過(guò)程序生成報(bào)表樣式的HTML頁(yè)面,然后修改HTML頁(yè)面的后綴名為DOC。 
2.定制WORD文檔的模板文件,在C#中操作WORD模板,生成新的WORD文檔。 
第一方案簡(jiǎn)單,只需要改動(dòng)文件的擴(kuò)展名就行了,但是也存在了一些問(wèn)題,譬如生成的WORD文檔樣式的丟失。這樣對(duì)于客戶來(lái)說(shuō)可能是一個(gè)無(wú)法通過(guò)的方案。第二方案比較復(fù)雜,需要調(diào)用OFFICE的WORD組件通過(guò)C#來(lái)操作WORD,進(jìn)而生成WORD。此方法類似于我們?cè)赾#中的后臺(tái)拼接數(shù)據(jù)。雖然麻煩,但是能夠靈活定制,只不過(guò)是操作WORD對(duì)象而已。 
經(jīng)過(guò)再三考慮:決定用第二種方法來(lái)生成WORD報(bào)告文檔。 
通過(guò)自己的實(shí)踐,這個(gè)需求總算是搞定了,在實(shí)際開(kāi)發(fā)的過(guò)程中,遇到了這樣那樣的問(wèn)題,還好,通過(guò)不斷的查找網(wǎng)絡(luò)資源,結(jié)合實(shí)際開(kāi)發(fā)中的情況,問(wèn)題都得到了解決。現(xiàn)將本人在開(kāi)發(fā)過(guò)程中的一些理解與經(jīng)驗(yàn)總結(jié)一下: 
在VS2008平臺(tái)下,引用.net-Microsoft.Office.Interop.Word.12,這樣就可以在程序用操作WORD對(duì)象了。 
通過(guò)簡(jiǎn)單執(zhí)行,報(bào)了80070005錯(cuò)誤,這個(gè)錯(cuò)誤是因?yàn)闄?quán)限不夠,需要在DCOM配置中更改.net和IIS用戶的操作權(quán)限,具體修改過(guò)程如下: 解決方法一: 
1.控制面板-》管理工具-》組件服務(wù)-》計(jì)算機(jī)-》我的電腦-》DCom配置-》找到Microsoft Word文檔之后,單擊屬性打開(kāi)此應(yīng) 用程序的屬性對(duì)話框。 
2.單擊標(biāo)識(shí)選項(xiàng)卡,然后選擇交互式用戶。 
3.單擊"安全"選項(xiàng)卡,分別在"啟動(dòng)和激活權(quán)限"和"訪問(wèn)權(quán)限"組中選中"自定義",然后自定義->編輯->添加ASP.NET賬戶和IUSER_計(jì)算機(jī) 名。 
4. 確保允許每個(gè)用戶訪問(wèn),然后單擊確定。 
5. 單擊確定關(guān)閉 DCOMCNFG。 
如果上述方法不能解決問(wèn)題,就應(yīng)該是權(quán)限問(wèn)題,請(qǐng)嘗試用下面的方法: 
在web.config中使用身份模擬,在<system.web>節(jié)中加入 <identity impersonate="true" userName="你的用戶名 " password="密碼 "/> 
</system.web> 
解決了上述問(wèn)題,開(kāi)始考慮如何創(chuàng)建WORD模板文件,WORD的模板文件其實(shí)就是通過(guò)書(shū)簽來(lái)添加內(nèi)容的。也就是通過(guò)在WORD文檔中創(chuàng)建書(shū)簽,然后在程序中獲取模板文件的所有書(shū)簽,通過(guò)給書(shū)簽賦值來(lái)進(jìn)行文檔生成的。 
在程序中的操作流程如下: 
聲明WORD程序的對(duì)象 → 聲明一個(gè)WORD文檔對(duì)象 → 獲取當(dāng)前的操作文檔對(duì)象 → 獲取文檔所有的書(shū)簽 → 將數(shù)據(jù)庫(kù)數(shù)據(jù)賦值到對(duì)應(yīng)的書(shū)簽 → 將文檔另存為指定的文件夾下. 
下面將針對(duì)農(nóng)業(yè)植物測(cè)試報(bào)告來(lái)分析具體的代碼實(shí)現(xiàn): 
復(fù)制代碼代碼如下:

//生成WORD程序?qū)ο蠛蚖ORD文檔對(duì)象 
Microsoft.Office.Interop.Word.Application appWord = new Application(); 
Microsoft.Office.Interop.Word.Document doc = new Document(); 
object oMissing = System.Reflection.Missing.Value;//這個(gè)是什么東西,我始終沒(méi)搞明白-_- 
//打開(kāi)模板文檔,并指定doc的文檔類型 
object objTemplate = Server.MapPath(p_TemplatePath); 
object objDocType = WdDocumentType.wdTypeDocument; 
doc = (Document)appWord.Documents.Add(ref objTemplate, ref objFalse, ref objDocType, ref objTrue); 
//獲取模板中所有的書(shū)簽 
Bookmarks odf = doc.Bookmarks; 
string[] testTableremarks = { "ApplyNo", "AuditingDate", "Auditor", "CheckDate", "Checker"}; 
string[] testTablevalues = { "ApplyNo", "AuditingDate", "Auditor", "CheckDate", "Checker",}; 
//循環(huán)所有的書(shū)簽,并給書(shū)簽賦值 
for (int oIndex = 0; oIndex < testTableremarks.Length; oIndex++) 

obDD_Name = WD + testTableremarks[oIndex]; 
doc.Bookmarks.get_Item(ref obDD_Name).Range.Text = p_TestReportTable.Rows[0][testTablevalues [oIndex]].ToString();//此處Range也是WORD中很重要的一個(gè)對(duì)象,就是當(dāng)前操作參數(shù)所在的區(qū)域 

//第四步 生成word,將當(dāng)前的文檔對(duì)象另存為指定的路徑,然后關(guān)閉doc對(duì)象。關(guān)閉應(yīng)用程序 
object filename = Server.MapPath(p_SavePath) + "//Testing_" + DateTime.Now.ToShortDateString() + ".doc"; 
object miss = System.Reflection.Missing.Value; 
doc.SaveAs(ref filename, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss); 
object missingValue = Type.Missing; 
object doNotSaveChanges = WdSaveOptions.wdDoNotSaveChanges; 
doc.Close(ref doNotSaveChanges, ref missingValue, ref missingValue); 
appWord.Application.Quit(ref miss, ref miss, ref miss); 
doc = null; 
appWord = null; 
this.Hid_ShowMessage.Value = "生成成功!";

上述代碼就是一個(gè)通過(guò)模板文件生成WORD的過(guò)程。其實(shí)也就是一個(gè)替換書(shū)簽內(nèi)容的過(guò)程。 
在開(kāi)發(fā)的過(guò)程中,有些數(shù)據(jù)是動(dòng)態(tài)增加的,假如我要向一個(gè)表格中動(dòng)態(tài)的添加幾行數(shù)據(jù),就無(wú)法用替換書(shū)簽的方式來(lái)進(jìn)行操作,需要通過(guò)程序在文檔頁(yè)面的表格中添加行。 
向表格中添加行,有兩種操作形式:一種是在WORD模板中已經(jīng)存在了一個(gè)表格。一種是我們?cè)诔绦蛑兄苯犹砑右粋€(gè)表格對(duì)象。 
第一種情況下,需要注意:在WORD模板中要操作的表格中,不能有縱向合并的單元格,不然程序無(wú)法獲取到當(dāng)前要操作對(duì)象導(dǎo)致程序報(bào)錯(cuò).單元格的合并,我們可以在程序中控制。 
第二種情況下就需要我們通過(guò)程序去直接添加表格了。 
生成表格的代碼具體如下: 
1.獲取文檔中已存在的表格: 
Microsoft.Office.Interop.Word.Table characterTable = doc.Tables[2];//在document對(duì)象的集合操作中,起始點(diǎn)是從1開(kāi)始,并不是從0開(kāi)始的,此處需要注意。 
2.在文檔中直接生成表格,首先要獲取插入表格的位置,然后添加表格對(duì)象: 
object oEndOfDoc = "//endofdoc";//WORD中預(yù)定義的書(shū)簽,還有很多,此處就不一一列舉。 
object oMissing = System.Reflection.Missing.Value; 
Range wrdRng = doc.Bookmarks.get_Item(ref oEndOfDoc).Range;//獲取當(dāng)前文檔的末尾位置。 
wrdRng.InsertAfter(" ");//插入一行,此處不能用 wrdRng.InsertAfter(""),如果用這個(gè),就不能換行,我也不知道為什么。 
復(fù)制代碼代碼如下:

object oCollapseEnd = Microsoft.Office.Interop.Word.WdCollapseDirection.wdCollapseEnd; 
object oPageBreak = Microsoft.Office.Interop.Word.WdBreakType.wdPageBreak;//分頁(yè)符 
wrdRng.Collapse(ref oCollapseEnd); 
wrdRng.InsertBreak(ref oPageBreak);//插入了一頁(yè) 
wrdRng.Collapse(ref oCollapseEnd); 
wrdRng.InsertAfter("圖片信息"); 
wrdRng.Font.Size = 20;//指定操作對(duì)象的文字大小 
wrdRng.Font.Bold = 1;//指定操作對(duì)象的粗體:1為粗體,0為正常 
wrdRng.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;//指定操作區(qū)域的文字布局:居中對(duì)齊 
//上述代碼的意思是:找到當(dāng)前的末尾位置,然后插入一個(gè)分頁(yè)符,相當(dāng)于跳到了一個(gè)新頁(yè),在這個(gè)新頁(yè)的頂端寫(xiě)入文字“圖片信息”,并指定文字大小為20,粗體居中顯示。 
wrdRng = doc.Bookmarks.get_Item(ref oEndOfDoc).Range; 
wrdRng.InsertAfter(" "); 
wrdRng = doc.Bookmarks.get_Item(ref oEndOfDoc).Range; 
wrdRng.InsertParagraphAfter();//插入一個(gè)段落,在此段落上插入一個(gè)2行一列的表格。 
Microsoft.Office.Interop.Word.Table newTable = doc.Tables.Add(wrdRng, 2, 1, ref oMissing, ref oMissing);

我們還可以對(duì)表格進(jìn)行格式設(shè)置,此處我們就不在一一列舉。 
3.下面我們分析一下對(duì)表格的單元格的操作:合并,拆分。這個(gè)就需要我們根據(jù)實(shí)際表格來(lái)進(jìn)行操作: 
//獲取具體的某個(gè)單元格(1,1),獲取第一行第一列的單元格 
Cell cell = doc.Tables[1].Cell(1,1); 
cell.Range.Text="Text";//指定當(dāng)前單元格的內(nèi)容為T(mén)ext 
在Table的操作中,添加新行: 
object beforeRow = doc.Tables[1].Rows[2];//此行是先獲取到第二行 
doc.Tables[1].Rows.Add(ref beforeRow);//效果類似于在WORD中此表格的第二行上進(jìn)行【插入行】操作,插入的新行將會(huì)插入到當(dāng)前行的上一行中,格式也是和此行一致的。 
//合并單元格:感覺(jué)在此處合并單元格挺傻瓜的,你只需要指定你要合并的起始單元格和結(jié)束單元格,然后通過(guò)Merge操作就行了 
Cell cell = doc.Tables[1].Cell(iRow, 2);//列合并 
cell.Merge(doc.Tables[1].Cell(iRow, 6)); 
Cell cell1 = doc.Tables[1].Cell(iRow - 1, 1);//行合并 
cell1.Merge(doc.Tables[1].Cell(iRow + 1, 1)); 
上述操作就是在此程序中用到的一些知識(shí)點(diǎn),還有好多的東西需要去熟悉、理解。 
另外,在程序的測(cè)試過(guò)程中發(fā)現(xiàn),當(dāng)執(zhí)行一次文檔生成后,在資源管理器中始終有winword.exe進(jìn)程殺不掉,目前的解決辦法是:直接殺進(jìn)程,代碼如下: 
復(fù)制代碼代碼如下:

protected void killAllProcess() // 殺掉所有winword.exe進(jìn)程 

System.Diagnostics.Process[] myPs; 
myPs = System.Diagnostics.Process.GetProcesses(); 
foreach (System.Diagnostics.Process p in myPs) 

if (p.Id != 0) 

string myS = "WINWORD.EXE" + p.ProcessName + " ID:" + p.Id.ToString(); 
try 

if (p.Modules != null) 
if (p.Modules.Count > 0) 

System.Diagnostics.ProcessModule pm = p.Modules[0]; 
myS += "/n Modules[0].FileName:" + pm.FileName; 
myS += "/n Modules[0].ModuleName:" + pm.ModuleName; 
myS += "/n Modules[0].FileVersionInfo:/n" + pm.FileVersionInfo.ToString(); 
if (pm.ModuleName.ToLower() == "winword.exe") 
p.Kill(); 


catch 
{ } 
finally 






目前為止,一個(gè)WORD文檔就生成了。上述為我在這個(gè)程序開(kāi)發(fā)中遇到的問(wèn)題和解決方法,可能有好多地方都是考慮不全的,如果在程序開(kāi)發(fā)中對(duì)WORD的操作有新的認(rèn)識(shí)的話,歡迎和我溝通交流,彼此提高! 
下邊是在網(wǎng)上一些比較好的摘抄: 
創(chuàng)建新Word 
復(fù)制代碼代碼如下:

object oMissing = System.Reflection.Missing.Value; 
Word._Application oWord; 
Word._Document oDoc; 
oWord = new Word.Application(); 
oWord.Visible = true; 
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing, 
ref oMissing, ref oMissing); 

打開(kāi)文檔: 
復(fù)制代碼代碼如下:

object oMissing = System.Reflection.Missing.Value; 
Word._Application oWord; 
Word._Document oDoc; 
oWord = new Word.Application(); 
oWord.Visible = true; 
object fileName = @"E:CCCXCXXTestDoc.doc"; 
oDoc = oWord.Documents.Open(ref fileName, 
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, 
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, 
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing); 

導(dǎo)入模板 
復(fù)制代碼代碼如下:

object oMissing = System.Reflection.Missing.Value; 
Word._Application oWord; 
Word._Document oDoc; 
oWord = new Word.Application(); 
oWord.Visible = true; 
object fileName = @"E:XXXCCXTest.doc"; 
oDoc = oWord.Documents.Add(ref fileName, ref oMissing, 
ref oMissing, ref oMissing); 

.添加新表 
復(fù)制代碼代碼如下:

object oMissing = System.Reflection.Missing.Value; 
Word._Application oWord; 
Word._Document oDoc; 
oWord = new Word.Application(); 
oWord.Visible = true; 
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing, 
ref oMissing, ref oMissing); 
object start = 0; 
object end = 0; 
Word.Range tableLocation = oDoc.Range(ref start, ref end); 
oDoc.Tables.Add(tableLocation, 3, 4, ref oMissing, ref oMissing); 

.表插入行 
復(fù)制代碼代碼如下:

object oMissing = System.Reflection.Missing.Value; 
Word._Application oWord; 
Word._Document oDoc; 
oWord = new Word.Application(); 
oWord.Visible = true; 
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing, 
ref oMissing, ref oMissing); 
object start = 0; 
object end = 0; 
Word.Range tableLocation = oDoc.Range(ref start, ref end); 
oDoc.Tables.Add(tableLocation, 3, 4, ref oMissing, ref oMissing); 
Word.Table newTable = oDoc.Tables[1]; 
object beforeRow = newTable.Rows[1]; 
newTable.Rows.Add(ref beforeRow); 

.單元格合并 
復(fù)制代碼代碼如下:

object oMissing = System.Reflection.Missing.Value; 
Word._Application oWord; 
Word._Document oDoc; 
oWord = new Word.Application(); 
oWord.Visible = true; 
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing, 
ref oMissing, ref oMissing); 
object start = 0; 
object end = 0; 
Word.Range tableLocation = oDoc.Range(ref start, ref end); 
oDoc.Tables.Add(tableLocation, 3, 4, ref oMissing, ref oMissing); 
Word.Table newTable = oDoc.Tables[1]; 
object beforeRow = newTable.Rows[1]; 
newTable.Rows.Add(ref beforeRow); 
Word.Cell cell = newTable.Cell(1, 1); 
cell.Merge(newTable.Cell(1, 2)); 

.單元格分離 
復(fù)制代碼代碼如下:

object oMissing = System.Reflection.Missing.Value; 
Word._Application oWord; 
Word._Document oDoc; 
oWord = new Word.Application(); 
oWord.Visible = true; 
oDoc = oWord.Documents.Add( oMissing, 
ref oMissing, ref oMissing); 
object start = 0; 
object end = 0; 
Word.Range tableLocation = oDoc.Range(ref start, ref end); 
oDoc.Tables.Add(tableLocation, 3, 4, ref oMissing, ref oMissing); 
Word.Table newTable = oDoc.Tables[1]; 
object beforeRow = newTable.Rows[1]; 
newTable.Rows.Add(ref beforeRow); 
Word.Cell cell = newTable.Cell(1, 1); 
cell.Merge(newTable.Cell(1, 2)); 
object Rownum = 2; 
object Columnnum = 2; 
cell.Split(ref Rownum, ref Columnnum); 

通過(guò)段落控制插入 
復(fù)制代碼代碼如下:

object oMissing = System.Reflection.Missing.Value; 
object oEndOfDoc = "/endofdoc"; /**//* endofdoc is a predefined bookmark */ 
//Start Word and create a new document. 
Word._Application oWord; 
Word._Document oDoc; 
oWord = new Word.Application(); 
oWord.Visible = true; 
oDoc = oWord.Documents.Add(ref oMissing, ref oMissing, 
ref oMissing, ref oMissing); 
//Insert a paragraph at the beginning of the document. 
Word.Paragraph oPara1; 
oPara1 = oDoc.Content.Paragraphs.Add(ref oMissing); 
oPara1.Range.Text = "Heading 1"; 
oPara1.Range.Font.Bold = 1; 
oPara1.Format.SpaceAfter = 24; //24 pt spacing after paragraph. 
oPara1.Range.InsertParagraphAfter(); 

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
激情视频综合网| 草久视频在线观看| 天使と恶魔の榨精在线播放| 久久一区二区精品| 麻豆网站免费观看| 成人性生交大片免费| 天天综合天天做| 成人激情视频在线观看| 福利一区福利二区微拍刺激| 在线免费黄色网| 中文字幕视频一区二区在线有码| 搞黄网站免费观看| 懂色av粉嫩av蜜臀av一区二区三区| 国产乱子伦一区二区三区国色天香| 亚洲国产www| 国产成人福利网站| 神马久久精品综合| 国产肥白大熟妇bbbb视频| 三区精品视频| 动漫美女无遮挡免费| av7777777| 国产一级一区二区| 毛片精品免费在线观看| 日韩免费av| 国产精品嫩草99a| 亚洲欧美在线成人| 欧美猛交xxxxx| 欧美最猛黑人xxxx黑人猛叫黄| 中文字幕2019第三页| 亚洲av无码一区二区三区观看| 久久综合久久综合久久| 久久riav二区三区| 欧美r片在线| 999精品视频在线| 激情文学综合插| 国产熟女精品视频| 丁香六月色婷婷| 人妻内射一区二区在线视频| 熟女av一区二区| 麻豆久久久av免费| 国产精品va在线播放我和闺蜜| 日韩欧美在线视频免费观看| 特级西西444www大精品视频免费看| www.com欧美| 99精品视频免费| 欧美精品一区二区三区很污很色的| 99在线精品视频免费观看20| 亚洲免费视频观看| 成人手机在线| 国产东北露脸精品视频| 久久久蜜桃一区二区| 日本在线成人一区二区| 麻豆9191精品国产| 欧美日韩成人在线一区| 青青a在线精品免费观看| 国产在线播放一区二区| www.天堂av.com| 国产亚洲美女精品久久久| 高清一区二区三区四区五区| 免费a级毛片在线播放| 国产盗摄在线视频网站| 国产精品视频男人的天堂| 99精品国产热久久91蜜凸| 日韩中文影院| 日韩三级在线免费观看| a黄色片在线观看| 亚洲视频欧洲视频| 最近中文字幕mv2018在线高清| 好吊色在线视频| 久久蜜桃一区二区| 91社区在线观看播放| 人妻少妇精品视频一区二区三区| 久久99国产精品久久99小说| 视频一区二区三区四区五区| 国产精品美女久久久久人| 日韩精品免费一区二区三区竹菊| 欧美经典一区二区三区| 国产中文在线视频| www.久久国产| 免费在线观看羞羞视频| 久草在线免费资源| 国内精品国产三级国产99| 国产精品成av人在线视午夜片| 老鸭窝一区二区久久精品| 人妻少妇被粗大爽9797pw| 91高潮大合集爽到抽搐| 亚洲六月丁香色婷婷综合久久| 国内精彩免费自拍视频在线观看网址| 国产中文字字幕乱码无限| 久久精品成人欧美大片免费| 国产精品999.| 国产精品羞羞答答在线| 亚洲精品国产一区| 国产精品传媒麻豆hd| 亚洲自拍偷拍视频| 中文字幕在线观看高清| 精品国产一区二区三区日日嗨| 欧美丝袜足交| 日韩a级大片| 亚洲国产精品综合久久久| 国产成人综合av| 亚洲综合欧美色图| 亚洲xxxxxx| 美女流白浆视频| 成人免费看aa片| 国产视频91在线| 免费黄网在线观看| 国产麻豆入在线观看| 久久99国产综合精品女同| 久久青青草原亚洲av无码麻豆| 黄色av网站在线播放| 国产精品久久久久9999| 国产一区白浆| 国产一级片免费看| 中文字幕国产高清| 成年人网站大全| 天天干,夜夜爽| 日韩片电影在线免费观看| 北条麻妃在线观看| 精品一区二区久久久久久久网站| 日本高清www| 99精品久久久久| 日韩欧美一区二区三区不卡视频| 亚洲欧洲日韩女同| 亚洲综合在线视频| 91欧美日韩| www.国产精品.com| 亚洲xxxx天美| 电影一区二区| 4k岛国日韩精品**专区| 一区二区三视频| 精品一区二区三区四区在线| 亚洲va在线va天堂va偷拍| 天美传媒免费在线观看| 国产91精品久久久久| 中文字幕亚洲精品视频| 国产在线视视频有精品| 亚洲中文字幕久久精品无码喷水| 麻豆一区二区三区视频| 亚洲av无码一区二区三区人| 2018中文字幕在线| 福利小视频在线观看| 久草在线网址| 超碰成人免费| 不卡av影片| 濑亚美莉大战黑人中文字幕| 黄色成人影院| 国产亚洲第一伦理第一区| 成人黄色免费网| 国产内射老熟女aaaa| 国产综合在线视频| 销魂美女一区二区| 天堂a中文在线| 五月婷婷六月婷婷| 精品久久香蕉国产线看观看亚洲| 日本精品久久久久影院| 亚洲av永久纯肉无码精品动漫| 国内精品国语自产拍在线观看| 欧美午夜片在线免费观看| 麻豆精品精品国产自在97香蕉| 国产人妻一区二区| 教室别恋欧美无删减版| 久久综合九色综合欧美狠狠| 成人短视频在线看| 色婷婷国产精品久久包臀| 成人不卡免费视频| 国产精品久久久久久久app| 国产乱码久久久| 免费一级欧美片在线观看| 777午夜精品视频在线播放| 日本中文一区二区三区| 久久久人人人| 中文在线最新版地址| 中国特级黄色大片| 亚洲一区二区三区观看| 毛片av免费在线观看| 免费在线超碰| 午夜天堂在线视频| 国产乱妇无码大片在线观看| 波多野结衣视频在线观看| 色姑娘资源站| 国产高清视频免费最新在线| 中文字幕av资源| 超清av在线| 亚洲国产婷婷| 好吊色欧美一区二区三区视频| 国产毛片毛片毛片毛片毛片毛片| 午夜精品短视频| 色综合久综合久久综合久鬼88| 丝袜老师在线| 亚洲精品国产精品乱码不99| 亚洲激情在线观看| 欧美激情综合色| 樱桃成人精品视频在线播放| 亚欧视频在线观看| 精品视频免费看| 99久久伊人| 人妻一区二区视频| 麻豆av在线| 欧美国产国产综合| 一级黄色大片视频| 高清视频在线观看三级| 9797在线看片亚洲精品| 一卡二卡三卡在线观看| 青青草娱乐视频| 国产综合婷婷| av成人免费看| 十九岁完整版在线观看好看云免费| 久久精品欧美一区二区三区不卡| 黄色成人在线网址| av av在线| 免费看日本黄色片| 亲子伦视频一区二区三区| 一区二区成人在线视频| 精品人妻一区二区三区四区在线| 亚洲 欧美 日韩 在线| 天堂在线一区二区| 熟女少妇内射日韩亚洲| 午夜精品久久久久久久无码| 99在线观看免费视频精品观看| 色综合成人av| 欧美日韩一区 二区 三区 久久精品| 国产精品网站入口| 日韩欧美亚洲日产国产| 高清视频在线www色| 日韩一区二区福利| 天天干中文字幕| proumb性欧美在线观看| 黄色小视频在线看| 亚洲色在线视频| 国产欧美va欧美不卡在线| 最新天堂资源在线| 久久午夜夜伦鲁鲁片| 亚洲日韩欧美一区二区在线| 91麻豆精品国产综合久久久久久| 精品国产99久久久久久| 午夜精品久久久久久久99| 日韩资源在线观看| 亚洲精品蜜桃久久久久久| 欧美在线3区| 99久久国产宗和精品1上映| 国产不卡在线观看视频| 色噜噜噜噜噜噜| 久久国产精品影院| 欧美一级bbbbb性bbbb喷潮片| 国产三级视频在线播放线观看| 一级少妇精品久久久久久久| 欧美三级网色| 日韩中文字幕亚洲一区二区va在线| 在线看片黄色| 国产麻豆精品入口在线观看| 欧美va亚洲va香蕉在线| 欧美xxxx黑人又粗又长精品| 亚洲三级免费看| 日韩av一级片| 久久久在线视频| 一个人在线视频免费观看www| 亚洲男人的天堂成人| 国产性天天综合网| 欧美激情a∨在线视频播放| 国产二区三区在线| 网友自拍一区| xx欧美撒尿嘘撒尿xx| 亚洲一区精彩视频| www亚洲人| 日韩二区三区| 精品视频在线一区| 激情五月少妇a| 国产日韩av高清| 麻豆精品一区| 国内自拍中文字幕| 国产亚洲精品成人| 在线精品国产亚洲| 欧美日韩在线一区二区| 男人久久精品| 久久久久久网站| 久久一留热品黄| 国内精品免费视频| 天堂资源在线播放| 久久人人爽av| 亚洲最新永久在线观看| 国产精品115| 婷婷久久久久久| 911美女片黄在线观看游戏| 亚洲私拍自拍| 小泽玛利亚一区二区免费| 精品久久久久久无| 香蕉视频在线免费看| 欧美色图一区| 免费观看国产精品| 99久热在线精品996热是什么| 婷婷国产成人精品视频| 天堂网av2014| 亚洲欧美在线视频| 青青草原综合久久大伊人精品优势| 国产青草视频在线观看视频| 中文字幕av一区二区三区免费看| 又嫩又硬又黄又爽的视频| 国产成人一区二区精品非洲| 国产精品稀缺呦系列在线| 全国精品久久少妇| 美女视频黄免费的久久| 国产成人精品免费视频大全软件| 国产亚洲久久| 久久国产精品无码一级毛片| 五十路六十路七十路熟婆| 国产一区观看| 韩剧1988在线观看免费完整版| 中文精品在线| 男人女人拔萝卜视频| 久久性爱视频网站| 国产精品日韩二区| 国产午夜精品视频免费不卡69堂| 在线播放日韩专区| 国产色婷婷亚洲99精品小说| 亚洲女人天堂网| 试看120秒一区二区三区| 91高清视频在线| 欧美大肚乱孕交hd孕妇| 午夜免费一级片| av手机免费在线观看| 亚洲图片小说视频| 国产原创popny丨九色| 99re8在线精品视频免费播放| 日韩毛片一区二区三区| 国产精品sss在线观看av| 疯狂试爱三2浴室激情视频| 亚洲韩国一区二区三区|