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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

VC操作word和excel文件,查询与读写[依赖office环境]

發布時間:2023/12/20 c/c++ 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VC操作word和excel文件,查询与读写[依赖office环境] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2016-07-26 10:15AM?田海濤>>記錄>>合肥工業大學

由于孟師兄的碗扣式支架建模系統需求,須在程序中加入office相關處理,具體為讀取excel文件與生成word文件

Excel讀取未采用第三方封裝類,直接使用com動態鏈接庫調用Windows中的excel.application,word采用網上的第三方封裝類,但是封裝類并不那么健全,自己又添加了幾個實用的或者是自己需要的函數,包括添加字段,調整字體,調整段落格式,插入表格,表格中插入文字,合并表格,調整表格列寬這些函數,原本的封裝類中的函數基本沒用到,不過好在原作者已經將com庫的初始化及掃尾清理工作健全,省去了很多麻煩,現留下源碼以備不時之需。

ms提供的庫函數接口和以前的VBA代碼非常類似,因此自己添加函數時很大程度依賴對office操作過程錄制宏來獲取相應的VBA執行代碼,再將VBA代碼進一步改寫到c/c++平臺上,添加函數時msoffice提供的庫函數中的很多函數參數對應的數值分別代表什么意義并不清楚,舉個例子:

假如使用一個庫函數來對word或excel文件中添加一段話,這時庫函數AddParagraph可以直接調用添加,但是如何控制這段文字是左對齊還是右對齊還是居中,就需要一個參數來控制,而這個參數分別是用1,2,3對應左,中,右,但是通過錄制office的VBA代碼看到左中右分別為xLeft,xCenter,xRight,這三個宏定義是VBA中的宏定義,在c語言的庫中并不是這樣定義,或者壓根就沒有定義,因此我們可以通過在office中改寫VBA代碼將xLeft,xCenter,xRight三個宏定義的以整數的形式寫到一個字符串里,將該字符串打印在word中就可以看到這三個宏定義分別是對應那幾個數字,c庫函數中的參數與VB庫中對應函數的參數相比是沒什么改變的,因此我們可以在VC代碼中自己定義相應的xLeft,xCenter,xRight宏定義,就解決了函數參數不明的問題。


以下為office服務宏定義,可從office文檔中// / 錄制相關動作的宏定義獲知需要哪些宏定義值,并通過改寫vba代碼寫出所需宏值/// #define xlAscending (long) 1 #define xlDescending (long) 2 #define vOpt COleVariant((long) DISP_E_PARAMNOTFOUND,VT_ERROR) #define xlHeader (long) 1 // 選取的區域有標題 #define xlNoHeader (long) 2 // 選取的區域無標題,一定要正確確定是否有標題,否則排序可能不成功 #define xlMatchCase COleVariant((long) 1) #define xlIgnoreCase COleVariant((long) 0) #define xlTopToBottom (long) 1 // 垂直方向進行排序 #define xlLeftToRight (long) 2 // 水平方向進行排序 #define xlPinYin (long) 1 // this is thedefault // 按字符的中文拼音進行排序 #define xlStroke (long) 2 // 按每個字符中的筆畫數進行排序 以上為office服務宏定義/
?

以上excel所需類包含在excel.h,excel.cpp中,可直接從offfice目錄中導入(*:\ProgramFiles (x86)\Microsoft Office\Office14\EXCEL.EXE)

void InputExcel() //讀取excel{CFileDialog file(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,_T("EXCEL文件t(*.xls;*.xlsx)|*.xls;*.xlsx||"),AfxGetMainWnd());file.m_ofn.lpstrTitle = _T("導入位移文件...");if(file.DoModal()!=IDOK){ AfxMessageBox("選擇窗口打開失敗");return;}CString strFile=file.GetPathName();m_Path.SetWindowText(strFile);int i=0,j=0,k=0;CString tempstr = "";vector < CString > CellsVal(20);CellsVal.resize(20);_ApplicationE app;_Workbook book;_Worksheet sheet;Workbooks books;Worksheets sheets;Range range;LPDISPATCH lpDisp;COleVariant vResult;COleVariant covTrue((short)TRUE);COleVariant covFalse((short)FALSE);COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); //創建Excel服務器(啟動Excel)if(!app.CreateDispatch("Excel.Application")){AfxMessageBox("無法啟動Excel服務器!");return;}app.SetVisible(FALSE); //使Excel不可見 books.AttachDispatch(app.GetWorkbooks());lpDisp = books.Open(strFile, //打開所需excel文件covOptional, covFalse, covOptional, covOptional, covOptional,covOptional, covOptional, covOptional, covOptional, covOptional,covOptional, covOptional, covOptional, covOptional);//得到Workbookbook.AttachDispatch(lpDisp);//得到Worksheetssheets.AttachDispatch(book.GetWorksheets());////如果有單元格正處于編輯狀態中,此操作不能返回,會一直等待lpDisp=sheets.GetItem(COleVariant(short(1)));//獲取第一個sheet作為操作對象sheet.AttachDispatch(lpDisp);//讀取已經使用區域的信息,包括已經使用的行數、列數、起始行、起始列Range usedRange;usedRange.AttachDispatch(sheet.GetUsedRange());range.AttachDispatch(usedRange.GetRows());long RowNum=range.GetCount(); //已經使用的行數range.ReleaseDispatch();range.AttachDispatch(usedRange.GetColumns()); long ColNum=range.GetCount()-1; //獲取有效列數目,獲取結果總比實際多1CString EndCellCode = "";EndCellCode.Format("%s%d",TranslateColName(ColNum),RowNum);// TranslateColName()函數用于將col號碼由數字轉換為26進制字母組合VARIANT key1; //定義變量容納排序關鍵列 V_VT(&key1) = VT_DISPATCH; // 排序時,關鍵字的vt設置為VT_DISPATCHV_DISPATCH(&key1) = sheet.GetRange(COleVariant("H1"),COleVariant("H1")); // 設置按哪個關鍵字進行排序 選擇單元意為:按此列(或行)為主關鍵字進行排序 Range iRange = sheet.GetRange(COleVariant("C3"),COleVariant(EndCellCode));//設置排序范圍為C3到表格末尾iRange.Sort(key1, xlAscending, vOpt, vOpt, xlAscending, vOpt,xlAscending,xlNoHeader,vOpt,xlIgnoreCase,xlTopToBottom,xlPinYin,0,0,0); //設置排序 無標題時一定要設置為xlNoHeader 否則不起作用,這里參數為宏定義,具體定義值通過office宏錄制可以獲取,方法參照VBA語言格式,Selection.TypeText Val=Str(xlNoHeader)即可將xlNoHeader值顯示出來,其他宏定義量同理得到。CString tempSCell = "";CString tempECell = "";tempSCell.Format("C3");tempECell.Format("C4");lpDisp = sheet.GetRange(COleVariant(tempSCell), COleVariant(tempECell));iRange.AttachDispatch(lpDisp);VARIANT varRead = iRange.GetValue2();COleSafeArray olesaRead(varRead);GetValFromArry(&olesaRead,&CellsVal);olesaRead.Detach();CString minHcodeCVal0 = CellsVal[0];tempSCell.Format("C%d",RowNum);tempECell.Format("C%d",RowNum+1);lpDisp = sheet.GetRange(COleVariant(tempSCell), COleVariant(tempECell));iRange.AttachDispatch(lpDisp);olesaRead.Clear();varRead = iRange.GetValue2();olesaRead.Attach(varRead);GetValFromArry(&olesaRead,&CellsVal);//自定義GetValFromArry()函數獲取指定格子的數據,傳入CellsVal中,CString maxHcodeCVal0 = CellsVal[0]; /V_DISPATCH(&key1) = sheet.GetRange(COleVariant("I1"),COleVariant("I1")); // 設置按哪個關鍵字進行排序 選擇單元意為:按此列(或行)為主關鍵字進行排序 //range=sheet.GetRange(COleVariant(L"A1"),COleVariant(CellName)); // 選擇對哪些區域內的單元格進行排序iRange = sheet.GetRange(COleVariant("C3"),COleVariant(EndCellCode));iRange.Sort(key1, xlAscending, vOpt, vOpt, xlAscending, vOpt,xlAscending,xlNoHeader,vOpt,xlIgnoreCase,xlTopToBottom,xlPinYin,0,0,0); //設置排序 無標題時一定要設置為xlNoHeader 否則不起作用tempSCell.Format("C3");tempECell.Format("C4");lpDisp = sheet.GetRange(COleVariant(tempSCell), COleVariant(tempECell));iRange.AttachDispatch(lpDisp);varRead = iRange.GetValue2();olesaRead.Attach(varRead);GetValFromArry(&olesaRead,&CellsVal);olesaRead.Detach();CString minIcodeCVal0 = CellsVal[0];//AfxMessageBox(minJcodeCVal);tempSCell.Format("C%d",RowNum);tempECell.Format("C%d",RowNum+1);lpDisp = sheet.GetRange(COleVariant(tempSCell), COleVariant(tempECell));iRange.AttachDispatch(lpDisp);olesaRead.Clear();varRead = iRange.GetValue2();olesaRead.Attach(varRead);GetValFromArry(&olesaRead,&CellsVal);CString maxIcodeCVal0 = CellsVal[0]; ///V_DISPATCH(&key1) = sheet.GetRange(COleVariant("J1"),COleVariant("J1")); // 設置按哪個關鍵字進行排序 選擇單元意為:按此列(或行)為主關鍵字進行排序 //range=sheet.GetRange(COleVariant(L"A1"),COleVariant(CellName));// 選擇對哪些區域內的單元格進行排序iRange = sheet.GetRange(COleVariant("C3"),COleVariant(EndCellCode));iRange.Sort(key1, xlAscending, vOpt, vOpt, xlAscending, vOpt,xlAscending,xlNoHeader,vOpt,xlIgnoreCase,xlTopToBottom,xlPinYin,0,0,0);//設置排序 無標題時一定要設置為xlNoHeader 否則不起作用tempSCell.Format("C3");tempECell.Format("C4");lpDisp = sheet.GetRange(COleVariant(tempSCell), COleVariant(tempECell));iRange.AttachDispatch(lpDisp);varRead = iRange.GetValue2();olesaRead.Attach(varRead);GetValFromArry(&olesaRead,&CellsVal);olesaRead.Detach();CString minJcodeCVal0 = CellsVal[0];//AfxMessageBox(minJcodeCVal);tempSCell.Format("C%d",RowNum);tempECell.Format("C%d",RowNum+1);lpDisp = sheet.GetRange(COleVariant(tempSCell), COleVariant(tempECell));iRange.AttachDispatch(lpDisp);olesaRead.Clear();varRead = iRange.GetValue2();olesaRead.Attach(varRead);GetValFromArry(&olesaRead,&CellsVal);CString maxJcodeCVal0 = CellsVal[0];V_DISPATCH(&key1) = sheet.GetRange(COleVariant("C1"),COleVariant("C1"));// 設置按哪個關鍵字進行排序 選擇單元意為:按此列(或行)為主關鍵字進行排序 lpDisp = sheet.GetRange(COleVariant("C3"), COleVariant(EndCellCode));iRange.AttachDispatch(lpDisp);iRange.Sort(key1, xlAscending, vOpt, vOpt, xlAscending, vOpt,xlAscending,xlNoHeader,vOpt,xlIgnoreCase,xlTopToBottom,xlPinYin,0,0,0); //設置排序 無標題時一定要設置為xlNoHeader 否則不起作用 ///GetCVal0.clear();//以下多個vector數組用于儲存excel中讀取的各列數據GetDVal0.clear();GetHVal0.clear();GetIVal0.clear();GetJVal0.clear();GetCVal0.resize(40);GetDVal0.resize(40);GetHVal0.resize(40);GetIVal0.resize(40);GetJVal0.resize(40);ValCount0=0;for(int SRow=3;SRow<=RowNum;SRow++){tempSCell.Format("C%d",SRow);tempECell.Format("C%d",SRow+1);lpDisp = sheet.GetRange(COleVariant(tempSCell), COleVariant(tempECell));iRange.AttachDispatch(lpDisp);varRead = iRange.GetValue2();olesaRead.Attach(varRead);GetValFromArry(&olesaRead,&CellsVal);olesaRead.Detach();//下面語句用于通過讀取每行excel數據并進行判斷,一旦發現有符合篩選條件的數據,//即進行該行的某些列數據的存儲,GetValFromArry用于取得所需格子數據的自定義函數if((minHcodeCVal0 == CellsVal[0])||(maxHcodeCVal0 == CellsVal[0])||(minIcodeCVal0 == CellsVal[0])||(maxIcodeCVal0 == CellsVal[0])||(minJcodeCVal0 == CellsVal[0])||(maxJcodeCVal0 == CellsVal[0])){GetCVal0[ValCount0].Format("%d",atoi(CellsVal[0]));tempSCell.Format("D%d",SRow);tempECell.Format("D%d",SRow+1);lpDisp = sheet.GetRange(COleVariant(tempSCell), COleVariant(tempECell));iRange.AttachDispatch(lpDisp);varRead = iRange.GetValue2();olesaRead.Attach(varRead);GetValFromArry(&olesaRead,&CellsVal);olesaRead.Detach();GetDVal0[ValCount0]=CellsVal[0];tempSCell.Format("H%d",SRow);tempECell.Format("H%d",SRow+1);lpDisp = sheet.GetRange(COleVariant(tempSCell), COleVariant(tempECell));iRange.AttachDispatch(lpDisp);varRead = iRange.GetValue2();olesaRead.Attach(varRead);GetValFromArry(&olesaRead,&CellsVal);olesaRead.Detach();GetHVal0[ValCount0]=CellsVal[0];tempSCell.Format("I%d",SRow);tempECell.Format("I%d",SRow+1);lpDisp = sheet.GetRange(COleVariant(tempSCell), COleVariant(tempECell));iRange.AttachDispatch(lpDisp);varRead = iRange.GetValue2();olesaRead.Attach(varRead);GetValFromArry(&olesaRead,&CellsVal);olesaRead.Detach();GetIVal0[ValCount0] = CellsVal[0];tempSCell.Format("J%d",SRow);tempECell.Format("J%d",SRow+1);lpDisp = sheet.GetRange(COleVariant(tempSCell), COleVariant(tempECell));iRange.AttachDispatch(lpDisp);varRead = iRange.GetValue2();olesaRead.Attach(varRead);GetValFromArry(&olesaRead,&CellsVal);olesaRead.Detach();GetJVal0[ValCount0++] = CellsVal[0];}}//book.Save();//讀取完畢后根據需要決定是否保存,并關閉服務,釋放個com變量book.Close(covFalse,COleVariant(strFile),covOptional);books.Close(); app.Quit();range.ReleaseDispatch();sheet.ReleaseDispatch();sheets.ReleaseDispatch();book.ReleaseDispatch();books.ReleaseDispatch();app.ReleaseDispatch();return; } CString TranslateColName(long ColNum)//列名轉換函數 {char ColumnCode[3]={0};ColumnCode[1]=ColNum%26+'A'-1;if(ColNum>26){ColumnCode[0]=ColNum/26+'A'-1;}else{ColumnCode[0]=ColumnCode[1];ColumnCode[1]=0;}CString result("");result.Format("%s",ColumnCode);return result;}


以上word所需類包含在msword.h,msword.cpp中,可直接從offfice目錄中導入(*:\ProgramFiles (x86)\Microsoft Office\Office14\MSWORD.OLB),msword.cpp文件通過第三方封裝類WordOffice內部使用。程序調用封住類即可,示例如下:

void Outputword() { CFileDialog dlg(FALSE,NULL,"*.doc",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"*.doc",NULL);dlg.m_ofn.lpstrTitle = _T("導出到..."); int rc= dlg.DoModal();if(rc != IDOK){if(rc==IDCANCEL){return;}AfxMessageBox("保存窗口打開失敗!");return;}if(rc == IDOK){CWordOffice m_Word;m_Word.Create();m_Word.AddParagraph("碗扣式滿堂支架監測方案\n\n",22,TRUE,"宋體",1,0);m_Word.AddParagraph("1.應力測點布置方案\n",12,TRUE,"宋體",0,2);m_Word.AddParagraph("根據Midas/Civil有限元分析軟件計算結果,""布置碗扣式滿堂支架應力監測測點布置方案如下所示。\n",12,FALSE,"宋體",0,2);CString tempLastCVal ="";int tempCount = 0;for(i=0;i<ValCount;i++){if(tempLastCVal==GetCVal[i])tempCount++;tempLastCVal=GetCVal[i];}if(ValCount>0){ValCount=ValCount-tempCount;tempLastCVal=GetCVal[0];}m_Word.InsertTable(ValCount*5+1+GradeID*6*5, 5);m_Word.SetTableText(m_Word.m_wdTable,1,1,"序號",12,FALSE,"宋體",1);m_Word.SetTableText(m_Word.m_wdTable,1,2,"單元編號",12,FALSE,"宋體",1);m_Word.SetTableText(m_Word.m_wdTable,1,3,"坐標",12,FALSE,"宋體",1);m_Word.SetTableText(m_Word.m_wdTable,1,4,"荷載階段",12,FALSE,"宋體",1);m_Word.SetTableText(m_Word.m_wdTable,1,5,"應力值(MPa)",12,FALSE,"宋體",1);CString OrderNum = "";for(i=0,j=0;i<ValCount+GradeID*6;i++) {OrderNum.Format("%d",i+1);m_Word.CellsMerge(m_Word.m_wdTable,i*5+2,1,i*5+6,1,OrderNum);m_Word.CellsMerge(m_Word.m_wdTable,i*5+2,2,i*5+6,2,"單元號");m_Word.CellsMerge(m_Word.m_wdTable,i*5+2,3,i*5+6,3,"x,y,z");m_Word.SetTableText(m_Word.m_wdTable,i*5+2,4,"第一次預壓",12,FALSE,"宋體",1);m_Word.SetTableText(m_Word.m_wdTable,i*5+3,4,"第二次預壓",12,FALSE,"宋體",1);m_Word.SetTableText(m_Word.m_wdTable,i*5+4,4,"第三次預壓",12,FALSE,"宋體",1);m_Word.SetTableText(m_Word.m_wdTable,i*5+5,4,"第一次澆筑",12,FALSE,"宋體",1);m_Word.SetTableText(m_Word.m_wdTable,i*5+6,4,"第二次澆筑",12,FALSE,"宋體",1);if(i<ValCount){for(;j<ValCount+tempCount;){if(tempLastCVal==GetCVal[j]){m_Word.SetTableText(m_Word.m_wdTable,i*5+2,2,tempLastCVal,12,FALSE,"宋體",1);m_Word.SetTableText(m_Word.m_wdTable,i*5+2,3,GetXYZ(atoi(tempLastCVal),m,n,r),12,FALSE,"宋體",1);if(GetDVal[j]=="第一次預壓")m_Word.SetTableText(m_Word.m_wdTable,i*5+2,5,GetJVal[j],12,FALSE,"宋體",1);else if(GetDVal[j]=="第二次預壓")m_Word.SetTableText(m_Word.m_wdTable,i*5+3,5,GetJVal[j],12,FALSE,"宋體",1);else if(GetDVal[j]=="第三次預壓")m_Word.SetTableText(m_Word.m_wdTable,i*5+4,5,GetJVal[j],12,FALSE,"宋體",1);else if(GetDVal[j]=="第一次澆筑")m_Word.SetTableText(m_Word.m_wdTable,i*5+5,5,GetJVal[j],12,FALSE,"宋體",1);else if(GetDVal[j]=="第二次澆筑")m_Word.SetTableText(m_Word.m_wdTable,i*5+6,5,GetJVal[j],12,FALSE,"宋體",1);else{};j++;}else{tempLastCVal=GetCVal[j];break;}}}else{OrderNum.Format("%d",L1_L6[(i-ValCount)/6][(i-ValCount)%6]);m_Word.SetTableText(m_Word.m_wdTable,i*5+2,2,OrderNum,12,FALSE,"宋體",1);m_Word.SetTableText(m_Word.m_wdTable,i*5+2,3,GetXYZ(atoi(OrderNum),m,n,r),12,FALSE,"宋體",1);}}m_Word.SetColWidth(m_Word.m_wdTable,1,8.5);m_Word.SetColWidth(m_Word.m_wdTable,2,12.9);m_Word.SetColWidth(m_Word.m_wdTable,3,12.9);m_Word.SetColWidth(m_Word.m_wdTable,4,15.2);if(m_Word.SaveDocumentAs(dlg.GetPathName())){AfxMessageBox("導出成功!");}elseAfxMessageBox("導出失敗!");m_Word.CloseApp();} } 值得一提的是,測試word過程中發現office2010與office2007存在不兼容問題,經查證發現不兼容點位于_Document類中的SaveAs2函數中,office2007的_Document中并不包含該函數,而是SavaAs函數,因此修改官方類來保證兩函數均存在于_Document中,函數如下:

void _Document::SaveAs2(VARIANT* FileName, VARIANT* FileFormat,VARIANT* LockComments,VARIANT* Password, VARIANT* AddToRecentFiles, VARIANT* WritePassword, VARIANT* ReadOnlyRecommended,VARIANT* EmbedTrueTypeFonts, VARIANT* SaveNativePictureFormat,VARIANT* SaveFormsData, VARIANT* SaveAsAOCELetter,VARIANT* Encoding,VARIANT* InsertLineBreaks, VARIANT* AllowSubstitutions,VARIANT* LineEnding, VARIANT* AddBiDiMarks,VARIANT* CompatibilityMode) {static BYTE parms[] = VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT;InvokeHelper(0x238, DISPATCH_METHOD, VT_EMPTY, NULL, parms,FileName, FileFormat, LockComments, Password, AddToRecentFiles, WritePassword, ReadOnlyRecommended,EmbedTrueTypeFonts, SaveNativePictureFormat, SaveFormsData, SaveAsAOCELetter, Encoding, InsertLineBreaks, AllowSubstitutions,LineEnding, AddBiDiMarks, CompatibilityMode); }void _Document::SaveAs( VARIANT* FileName,VARIANT* FileFormat,VARIANT* LockComments,VARIANT* Password,VARIANT* AddToRecentFiles,VARIANT* WritePassword,VARIANT* ReadOnlyRecommended,VARIANT* EmbedTrueTypeFonts,VARIANT* SaveNativePictureFormat, VARIANT* SaveFormsData, VARIANT* SaveAsAOCELetter,VARIANT* Encoding,VARIANT* InsertLineBreaks,VARIANT* AllowSubstitutions,VARIANT* LineEnding, VARIANT* AddBiDiMarks) {static BYTE parms[] = VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT;InvokeHelper(0x178, DISPATCH_METHOD, VT_EMPTY, NULL, parms,FileName, FileFormat, LockComments, Password, AddToRecentFiles, WritePassword, ReadOnlyRecommended,EmbedTrueTypeFonts, SaveNativePictureFormat, SaveFormsData,SaveAsAOCELetter, Encoding, InsertLineBreaks, AllowSubstitutions, LineEnding, AddBiDiMarks); }
添加完畢后發現office2010與office2007均可使用SaveAs函數,只是SaveAs2較SaveAs多了一個參數,必然多了一個功能,因此扔保留兩個函數,不久將來待2007完全淘汰,以保證該修改官方類扔可繼續使用。

網上找的第三方封裝類WordOffice經過本人補充自己所需功能后code如下:

WordOffice.h

#include "msword.h" #include <atlbase.h>class CWordOffice { //private: public:_ApplicationW m_wdApp;Documents m_wdDocs;_Document m_wdDoc;Selection m_wdSel;RangeW m_wdRange;InlineShapes m_wdInlineShapes; InlineShape m_wdInlineShape;_Font m_wdFont;Paragraph m_wdParagraph;Paragraphs m_wdParagraphs;Cell m_wdCell;Cells m_wdCells;Table m_wdTable;Tables m_wdTables;Border m_wdBorder;Borders m_wdBorders;CWordOffice();virtual ~CWordOffice();public:void SetColWidth(Table m_Table,int Col,float Percent);LPDISPATCH InsertTable(int Row,int Col);void CellsMerge(Table m_Table, int SX, int SY, int EX, int EY,CString TextStr);void AddParagraph(CString szText,float FontSize,BOOL IfBold,CString FontName,int AlignFlag,float FirstLineSpace);void SetTableText(Table m_Table,int RowNum,int ColNum,CString szText,float FontSize,BOOL IfBold,CString FontName,int AlignFlag);//操作//**********************創建新文檔*******************************************BOOL CreateApp(); //創建一個新的WORD應用程序BOOL CreateDocuments(); //創建一個新的Word文檔集合BOOL CreateDocument(); //創建一個新的Word文檔BOOL Create(); //創建新的WORD應用程序并創建一個新的文檔void ShowApp(); //顯示WORD文檔void HideApp(); //隱藏word文檔//**********************打開文檔*********************************************BOOL OpenDocument(CString fileName);//打開已經存在的文檔。BOOL Open(CString fileName); //創建新的WORD應用程序并打開一個已經存在的文檔。BOOL SetActiveDocument(short i); //設置當前激活的文檔。//**********************保存文檔*********************************************BOOL SaveDocument(); //文檔是以打開形式,保存。BOOL SaveDocumentAs(CString fileName);//文檔以創建形式,保存。BOOL CloseDocument();void CloseApp(); //**********************文本書寫操作*****************************************void WriteText(CString szText); //當前光標處寫文本void WriteNewLineText(CString szText, int nLineCount = 1); //換N行寫字void WriteEndLine(CString szText); //文檔結尾處寫文本void WriteEndLine(CString szText,float FontSize,BOOL IfBold,CString FontName);void WholeStory(); //全選文檔內容void Copy(); //復制文本內容到剪貼板void InsertFile(CString fileName); //將本地的文件全部內容寫入到當前文檔的光標處。//**********************圖片插入操作*****************************************void InsertShapes(CString fileName);//在當前光標的位置插入圖片//**********************超鏈接插入操作*****************************************void InsertHyperlink(CString fileLink);//超級鏈接地址,可以是相對路徑。 }; WordOffice.cpp

#include "WordOffice.h"CWordOffice::CWordOffice() {} CWordOffice::~CWordOffice() {COleVariant vTrue((short)TRUE), vFalse((short)FALSE),vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);m_wdApp.Quit(vFalse, // SaveChanges.vTrue, // OriginalFormat.vFalse // RouteDocument.);//釋放內存申請資源m_wdFont.ReleaseDispatch();m_wdParagraph.ReleaseDispatch();m_wdParagraphs.ReleaseDispatch();m_wdCell.ReleaseDispatch();m_wdCells.ReleaseDispatch();m_wdTable.ReleaseDispatch();m_wdTables.ReleaseDispatch();m_wdBorder.ReleaseDispatch();m_wdBorders.ReleaseDispatch();//m_wdPagesetup.ReleaseDispatch();m_wdInlineShape.ReleaseDispatch();m_wdInlineShapes.ReleaseDispatch();//m_wdTb.ReleaseDispatch();m_wdRange.ReleaseDispatch();m_wdSel.ReleaseDispatch();//m_wdFt.ReleaseDispatch();m_wdDoc.ReleaseDispatch();m_wdDocs.ReleaseDispatch();m_wdApp.ReleaseDispatch(); }//操作 BOOL CWordOffice::CreateApp() {if (FALSE == m_wdApp.CreateDispatch("Word.Application")){AfxMessageBox("Application創建失敗,請確保安裝了word 2000或以上版本!", MB_OK|MB_ICONWARNING);return FALSE;}return TRUE; }BOOL CWordOffice::CreateDocuments() {if (FALSE == CreateApp()) {return FALSE;}m_wdDocs.AttachDispatch(m_wdApp.GetDocuments());if (!m_wdDocs.m_lpDispatch) {AfxMessageBox("Documents創建失敗!", MB_OK|MB_ICONWARNING);return FALSE;}return TRUE; }BOOL CWordOffice::CreateDocument() {if (!m_wdDocs.m_lpDispatch) {AfxMessageBox("Documents為空!", MB_OK|MB_ICONWARNING);return FALSE;}COleVariant varTrue(short(1),VT_BOOL),vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);CComVariant Template(_T("")); //沒有使用WORD的文檔模板CComVariant NewTemplate(false),DocumentType(0),Visible;m_wdDocs.Add(&Template,&NewTemplate,&DocumentType,&Visible); //得到document變量m_wdDoc = m_wdApp.GetActiveDocument();if (!m_wdDoc.m_lpDispatch) {AfxMessageBox("Document獲取失敗!", MB_OK|MB_ICONWARNING);return FALSE;}//得到selection變量m_wdSel = m_wdApp.GetSelection();if (!m_wdSel.m_lpDispatch) {AfxMessageBox("Select獲取失敗!", MB_OK|MB_ICONWARNING);return FALSE;}//得到RangeW變量m_wdRange = m_wdDoc.RangeW(vOptional,vOptional);if(!m_wdRange.m_lpDispatch){AfxMessageBox("RangeW獲取失敗!", MB_OK|MB_ICONWARNING);return FALSE;}return TRUE; }BOOL CWordOffice::Create() {if (FALSE == CreateDocuments()) {return FALSE;}return CreateDocument(); }void CWordOffice::ShowApp() {m_wdApp.SetVisible(TRUE); }void CWordOffice::HideApp() {m_wdApp.SetVisible(FALSE); }BOOL CWordOffice::OpenDocument(CString fileName) {if (!m_wdDocs.m_lpDispatch) {AfxMessageBox("Documents為空!", MB_OK|MB_ICONWARNING);return FALSE;}COleVariant vTrue((short)TRUE), vFalse((short)FALSE),vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR),vZ((short)0);COleVariant vFileName(_T(fileName));//得到document變量m_wdDoc.AttachDispatch(m_wdDocs.Open(vFileName, // FileNamevTrue, // Confirm Conversion.vFalse, // ReadOnly.vFalse, // AddToRecentFiles.vOptional, // PasswordDocument.vOptional, // PasswordTemplate.vOptional, // Revert.vOptional, // WritePasswordDocument.vOptional, // WritePasswordTemplate.vOptional, // Format. // Last argument for Word 97vOptional, // Encoding // New for Word 2000/2002vOptional, // Visible//如下4個是word2003需要的參數。本版本是word2000。vOptional, // OpenAndRepairvZ, // DocumentDirection wdDocumentDirection LeftToRightvOptional, // NoEncodingDialogvOptional) // Close Open parameters); // Close AttachDispatchif (!m_wdDoc.m_lpDispatch) {AfxMessageBox("Document獲取失敗!", MB_OK|MB_ICONWARNING);return FALSE;}//得到selection變量m_wdSel = m_wdApp.GetSelection();if (!m_wdSel.m_lpDispatch) {AfxMessageBox("Select獲取失敗!", MB_OK|MB_ICONWARNING);return FALSE;}//得到全部DOC的RangeW變量m_wdRange = m_wdDoc.RangeW(vOptional,vOptional);if(!m_wdRange.m_lpDispatch){AfxMessageBox("RangeW獲取失敗!", MB_OK|MB_ICONWARNING);return FALSE;}return TRUE; }BOOL CWordOffice::Open(CString fileName) {if (FALSE == CreateDocuments()) {return FALSE;}return OpenDocument(fileName); }BOOL CWordOffice::SetActiveDocument(short i) {COleVariant vIndex(_T(i)),vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);m_wdDoc.AttachDispatch(m_wdDocs.Item(vIndex));m_wdDoc.Activate();if (!m_wdDoc.m_lpDispatch) {AfxMessageBox("Document獲取失敗!", MB_OK|MB_ICONWARNING);return FALSE;}//得到selection變量m_wdSel = m_wdApp.GetSelection();if (!m_wdSel.m_lpDispatch) {AfxMessageBox("Select獲取失敗!", MB_OK|MB_ICONWARNING);return FALSE;}//得到全部DOC的RangeW變量m_wdRange = m_wdDoc.RangeW(vOptional,vOptional);if(!m_wdRange.m_lpDispatch){AfxMessageBox("RangeW獲取失敗!", MB_OK|MB_ICONWARNING);return FALSE;}HideApp();return TRUE; }BOOL CWordOffice::SaveDocument() {if (!m_wdDoc.m_lpDispatch) {AfxMessageBox("Document獲取失敗!", MB_OK|MB_ICONWARNING);return FALSE;}m_wdDoc.Save();return TRUE; }BOOL CWordOffice::SaveDocumentAs(CString fileName) {if (!m_wdDoc.m_lpDispatch) {AfxMessageBox("Document獲取失敗!", MB_OK|MB_ICONWARNING);return FALSE;}COleVariant vTrue((short)TRUE), vFalse((short)FALSE),vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);COleVariant vFileName(_T(fileName));m_wdDoc.SaveAs(//vFileName, //VARIANT* FileNamevOptional, //VARIANT* FileFormatvOptional, //VARIANT* LockCommentsvOptional, //VARIANT* PasswordvOptional, //VARIANT* AddToRecentFilesvOptional, //VARIANT* WritePasswordvOptional, //VARIANT* ReadOnlyRecommendedvOptional, //VARIANT* EmbedTrueTypeFontsvOptional, //VARIANT* SaveNativePictureFormatvOptional, //VARIANT* SaveFormsDatavOptional, //VARIANT* SaveAsAOCELettervOptional,vOptional,vOptional,vOptional,//vOptional,vOptional);return TRUE; }BOOL CWordOffice::CloseDocument() {COleVariant vTrue((short)TRUE), vFalse((short)FALSE),vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);m_wdDoc.Close(vFalse, // SaveChanges.vTrue, // OriginalFormat.vFalse // RouteDocument.);m_wdDoc.AttachDispatch(m_wdApp.GetActiveDocument());if (!m_wdDoc.m_lpDispatch) {AfxMessageBox("Document獲取失敗!", MB_OK|MB_ICONWARNING);return FALSE;}//得到selection變量m_wdSel = m_wdApp.GetSelection();if (!m_wdSel.m_lpDispatch) {AfxMessageBox("Select獲取失敗!", MB_OK|MB_ICONWARNING);return FALSE;}//得到全部DOC的RangeW變量m_wdRange = m_wdDoc.RangeW(vOptional,vOptional);if(!m_wdRange.m_lpDispatch){AfxMessageBox("RangeW獲取失敗!", MB_OK|MB_ICONWARNING);return FALSE;}return TRUE; }void CWordOffice::CloseApp() {COleVariant vTrue((short)TRUE), vFalse((short)FALSE),vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);m_wdDoc.Save();m_wdApp.Quit(vFalse, // SaveChanges.vTrue, // OriginalFormat.vFalse // RouteDocument.);//釋放內存申請資源m_wdInlineShape.ReleaseDispatch();m_wdInlineShapes.ReleaseDispatch();//m_wdTb.ReleaseDispatch();m_wdRange.ReleaseDispatch();m_wdSel.ReleaseDispatch();//m_wdFt.ReleaseDispatch();m_wdDoc.ReleaseDispatch();m_wdDocs.ReleaseDispatch();m_wdApp.ReleaseDispatch(); }void CWordOffice::WriteText(CString szText) {m_wdSel.TypeText(szText); } /*void CWordOffice::WriteText(CString szText,CString FontVal,int FontSize,BOOL IfBold,) {m_wdSel.TypeText(szText); }*/void CWordOffice::WriteNewLineText(CString szText, int nLineCount /* = 1 */) {int i;if (nLineCount <= 0){nLineCount = 0;}for (i = 0; i < nLineCount; i++){m_wdSel.TypeParagraph();}WriteText(szText); }void CWordOffice::WriteEndLine(CString szText) {m_wdRange.InsertAfter(szText); }void CWordOffice::WriteEndLine(CString szText,float FontSize,BOOL IfBold,CString FontName) {m_wdRange.InsertAfter(szText);m_wdFont = m_wdRange.GetFont();m_wdFont.SetSize(FontSize);m_wdFont.SetBold(IfBold);m_wdFont.SetName(FontName);m_wdRange.SetFont(m_wdFont);}void CWordOffice::WholeStory() {m_wdRange.WholeStory(); }void CWordOffice::Copy() {m_wdRange.CopyAsPicture(); }void CWordOffice::InsertFile(CString fileName) {COleVariant vFileName(fileName),vTrue((short)TRUE),vFalse((short)FALSE),vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR),vNull(_T(""));m_wdSel.InsertFile(fileName,vNull,vFalse,vFalse,vFalse); }void CWordOffice::InsertShapes(CString fileName) {COleVariant vTrue((short)TRUE), vFalse((short)FALSE),vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);m_wdInlineShapes=m_wdSel.GetInlineShapes();m_wdInlineShape=m_wdInlineShapes.AddPicture(fileName,vFalse,vTrue,vOptional); }void CWordOffice::InsertHyperlink(CString fileLink) {COleVariant vAddress(_T(fileLink)),vSubAddress(_T(""));RangeW aRange = m_wdSel.GetRange();Hyperlinks vHyperlinks(aRange.GetHyperlinks());vHyperlinks.Add(aRange, //Object,必需。轉換為超鏈接的文本或圖形。vAddress, //Variant 類型,可選。指定的鏈接的地址。此地址可以是電子郵件地址、Internet 地址或文件名。請注意,Microsoft Word 不檢查該地址的正確性。vSubAddress, //Variant 類型,可選。目標文件內的位置名,如書簽、已命名的區域或幻燈片編號。vAddress, //Variant 類型,可選。當鼠標指針放在指定的超鏈接上時顯示的可用作“屏幕提示”的文本。默認值為 Address。vAddress, //Variant 類型,可選。指定的超鏈接的顯示文本。此參數的值將取代由 Anchor 指定的文本或圖形。vSubAddress //Variant 類型,可選。要在其中打開指定的超鏈接的框架或窗口的名字。); vHyperlinks.ReleaseDispatch(); }LPDISPATCH CWordOffice::InsertTable(int Row, int Col) {COleVariant vTrue((short)TRUE), vFalse((short)FALSE),vOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);m_wdRange = m_wdSel.GetRange();m_wdTables = m_wdDoc.GetTables();m_wdTable=m_wdTables.Add(m_wdRange,Row,Col,vOptional,vOptional);m_wdBorders=m_wdTable.GetBorders();m_wdBorders.SetEnable(1);m_wdSel.EndKey(COleVariant((short)6),COleVariant((short)0));return m_wdTable;}void CWordOffice::AddParagraph(CString szText,float FontSize,BOOL IfBold,CString FontName,int AlignFlag,float FirstLineSpace) {m_wdParagraphs=m_wdDoc.GetParagraphs();m_wdParagraph=m_wdParagraphs.GetLast();m_wdParagraph.SetAlignment(AlignFlag);m_wdParagraph.SetCharacterUnitFirstLineIndent(FirstLineSpace);m_wdFont = m_wdSel.GetFont();m_wdFont.SetSize(FontSize);m_wdFont.SetName(FontName);m_wdFont.SetBold(IfBold);m_wdSel.TypeText(szText);m_wdSel.EndKey(COleVariant((short)6),COleVariant((short)0)); }void CWordOffice::SetTableText(Table m_Table,int RowNum,int ColNum,CString szText,float FontSize,BOOL IfBold,CString FontName,int AlignFlag) {Cell m_Cell;RangeW m_RangeW;_Font m_Font;m_Cell.AttachDispatch(m_Table.Cell(RowNum,ColNum));m_RangeW.AttachDispatch(m_Cell.GetRange());m_RangeW.SetText(szText);m_Font.AttachDispatch(m_RangeW.GetFont());m_Font.SetSize(FontSize);m_RangeW.Select();_ParagraphFormat m_ParagraphFormat = ((Selection)(m_wdApp.GetSelection())).GetParagraphFormat();m_ParagraphFormat.SetAlignment(AlignFlag);((Selection)(m_wdApp.GetSelection())).SetParagraphFormat(m_ParagraphFormat);((Cells)((Selection)(m_wdApp.GetSelection())).GetCells()).SetVerticalAlignment(1);m_Font.SetName(FontName);m_Font.SetBold(IfBold);m_RangeW.SetFont(m_Font);m_Cell.ReleaseDispatch();m_RangeW.ReleaseDispatch();m_wdSel.EndKey(COleVariant((short)6),COleVariant((short)0));return ;}void CWordOffice::CellsMerge(Table m_Table, int SX, int SY, int EX, int EY,CString TextStr) {Cell m_Cell;m_Cell.AttachDispatch(m_Table.Cell(SX,SY));m_Cell.Merge(m_Table.Cell(EX,EY));m_Cell.ReleaseDispatch();SetTableText(m_Table,SX,SY,TextStr,12,FALSE,"宋體",1); }void CWordOffice::SetColWidth(Table m_Table, int Col, float Percent) {((Column)(((Columns)(m_Table.GetColumns())).Item(Col))).SetPreferredWidthType(2);((Column)(((Columns)(m_Table.GetColumns())).Item(Col))).SetPreferredWidth(Percent); }


總結

以上是生活随笔為你收集整理的VC操作word和excel文件,查询与读写[依赖office环境]的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

正在播放国产精品 | 99人久久精品视频最新地址 | 久久精品免费观看 | 高清av在线免费观看 | 亚洲另类视频在线 | 美女视频黄是免费的 | www.色五月.com | 久久伊人91| 夜色资源站wwwcom | 精品一区二区在线播放 | 精品一区精品二区高清 | 精品国自产在线观看 | 国产精品毛片一区视频 | 婷婷播播网 | av 一区二区三区 | 国产色啪 | 婷婷综合网 | 青青河边草观看完整版高清 | 国产成人精品999 | 国产精品久久久久久久久久久久午夜 | 国产原创在线视频 | 久久精品专区 | 成年人免费观看国产 | 久久不卡日韩美女 | 中文字幕一区二区三区乱码在线 | 青青河边草免费直播 | 麻豆视频在线播放 | 久久久久亚洲国产 | 欧美黑吊大战白妞欧美 | av福利电影 | 97在线观看免费视频 | 免费看av在线 | 亚州精品在线视频 | 91香蕉视频在线 | 色人久久 | a久久久久| 三上悠亚一区二区在线观看 | 亚洲一区美女视频在线观看免费 | 成年免费在线视频 | 91精品视频免费观看 | 人人揉人人揉人人揉人人揉97 | 欧美少妇18p | 91丨九色丨国产在线 | 四虎国产精品免费 | 911久久| 中文视频在线 | 成人香蕉视频 | 国产区精品在线观看 | 亚洲免费在线看 | 精品久久久久久综合日本 | 亚洲精品乱码久久久久久久久久 | 超碰在线97观看 | 婷婷视频在线 | 久草精品电影 | 狠狠操欧美 | 天堂av最新网址 | 一区二区视频电影在线观看 | 在线观看黄色av | 免费日韩一区二区 | 在线观看亚洲视频 | 在线a亚洲视频播放在线观看 | 97成人在线视频 | 黄污视频网站 | 91黄色视屏 | 中文字幕在线资源 | 国产高清在线a视频大全 | 午夜av一区 | 美女视频一区 | 成人福利在线观看 | 国产精品久久二区 | 亚洲精品午夜久久久 | 99精品国产一区二区三区不卡 | 国产91九色视频 | 欧美日产在线观看 | 激情综合五月婷婷 | 国产一级在线播放 | 免费黄色在线网址 | 中文字幕在线视频一区二区 | 免费在线观看污 | 免费在线观看黄色网 | 国产免费久久精品 | 国产精品久久久久久麻豆一区 | 色综合天天在线 | zzijzzij亚洲日本少妇熟睡 | 欧美日韩在线视频观看 | 91禁在线看 | 中文字幕一区二区三区视频 | 成人小视频在线免费观看 | 日韩亚洲在线视频 | 亚洲国产一区在线观看 | 深爱五月网 | 亚洲国产片 | 人人添人人 | 永久黄网站色视频免费观看w | 日韩专区在线播放 | 亚洲国产人午在线一二区 | 黄色av免费看 | 国产91亚洲精品 | 国产色妞影院wwwxxx | 黄色天堂在线观看 | 国产精品 999| 欧美专区日韩专区 | 字幕网资源站中文字幕 | av观看久久久 | 亚洲精品综合一二三区在线观看 | 久久www免费人成看片高清 | 日韩专区在线观看 | 亚洲精品国产综合99久久夜夜嗨 | 久久电影网站中文字幕 | 一区二区精品在线 | 久久视频二区 | 色网站免费在线观看 | 国产精品一区在线观看你懂的 | 中文字幕在线观看网址 | 国产精品一区二区在线观看 | 国内精品视频在线播放 | 韩国一区二区av | 日韩91av | 在线观看av不卡 | av免费电影网站 | 精品久久一级片 | 国产69久久久欧美一级 | av黄色免费网站 | 天天舔天天射天天操 | 丁香花在线观看免费完整版视频 | 国产自在线 | 免费观看一级视频 | 在线观看欧美成人 | 成 人 黄 色 片 在线播放 | 日韩二区三区 | 久日视频 | 久久8精品 | 久久尤物电影视频在线观看 | 911在线| 中文字幕在线观看视频一区 | 国产精品初高中精品久久 | 五月婷av | 色资源中文字幕 | 精品国产成人av | 网站在线观看日韩 | 欧美久久久久久久久久久 | 中文字幕免费播放 | 丁香久久 | 伊人官网 | 午夜精品一区二区三区免费 | 国产成人精品一区二区三区在线观看 | 日韩精品一区在线播放 | 中文字幕一区二区三区在线观看 | 亚洲一级黄色 | 欧美色图p | 欧美精品做受xxx性少妇 | 亚洲免费视频在线观看 | 日本中文字幕在线 | 精品久久国产一区 | 久久国产经典视频 | 国产网站在线免费观看 | 国产精品一区二 | 午夜精品久久久久久 | 亚洲成人国产 | 久久久久在线视频 | 在线看的av网站 | 国产精品久久久精品 | 黄色大片国产 | 久久婷婷久久 | 色多多视频在线观看 | 国产精品麻豆一区二区三区 | 婷婷伊人综合亚洲综合网 | 国产91精品一区二区麻豆网站 | 久久国产片 | 在线免费av网| 色88久久 | 美女视频永久黄网站免费观看国产 | 三级黄免费看 | 国产精品专区在线 | 婷婷av网| 91在线视频导航 | 久久精品免费电影 | 91在线精品播放 | 成人小视频在线观看免费 | 日韩精品一区二区三区免费观看 | 九九热精品视频在线播放 | 中文字幕在线字幕中文 | 在线v片免费观看视频 | 一区二区三区四区五区在线 | 9999毛片 | 久色 网| av东方在线 | 亚洲情婷婷 | 久久国产精品久久精品国产演员表 | www.国产在线观看 | 日韩精品中文字幕有码 | 美女视频是黄的免费观看 | 中文字幕在线观看2018 | 国产日韩精品一区二区在线观看播放 | 天天操天天干天天干 | 婷婷色网| 五月激情五月激情 | 久久综合狠狠综合久久综合88 | 亚洲综合在线五月 | 中文字幕 二区 | 在线播放 一区 | 国产精品久久久久久模特 | 欧美精品久久天天躁 | 久久久片 | 国产亚洲成人网 | 国产色拍拍拍拍在线精品 | 久热色超碰| 一区二区视频在线免费观看 | 天天天插 | 国产福利在线不卡 | 黄色tv视频 | 综合色在线观看 | 色香网| 欧美 日韩 国产 成人 在线 | 国产成人一区二 | 精品国产三级a∨在线欧美 免费一级片在线观看 | 日韩大片在线免费观看 | 国产精品热视频 | 欧美性免费 | 国内成人精品2018免费看 | 久草精品在线观看 | 国产黄色一级片在线 | 黄色一级大片免费看 | 国产视频1 | 免费观看完整版无人区 | 国产成在线观看免费视频 | 人人插超碰 | 精品在线你懂的 | 天天操天天干天天摸 | 欧美一区二区三区激情视频 | 亚洲最大成人免费网站 | 日韩中文字幕电影 | 九九99视频| 狠狠躁夜夜躁人人爽视频 | 日韩欧美在线视频一区二区 | 成人免费大片黄在线播放 | 久久免费中文视频 | 精品色综合| 国产群p视频 | 欧美性久久久 | 欧美精品午夜 | 国产成人在线观看免费 | 亚洲综合情 | 91免费试看 | 天天操天天艹 | 91精品婷婷国产综合久久蝌蚪 | 国产专区视频在线观看 | 中文字幕av免费 | 美女一二三区 | 99国产精品 | 狠狠狠狠狠狠天天爱 | 天天亚洲| 久久久视频在线 | a v在线视频| 视频在线观看91 | www.久艹 | 黄色国产区 | 日本在线观看一区二区 | 青青草国产精品视频 | 波多野结衣一区 | 五月天久久精品 | 国产日韩精品欧美 | 91热精品| 射射射av| 国产精品亚洲a | 久久草在线免费 | 久久精品a | 欧美精品乱码久久久久久按摩 | 狠狠久久| 久久dvd| 日韩久久精品一区二区 | 精品高清美女精品国产区 | 亚洲国产成人久久 | 国产在线观看地址 | 色福利网站 | 在线免费观看成人 | 五月婷婷六月丁香激情 | 美女黄频在线观看 | 天天操天天爱天天爽 | 成人在线电影观看 | 国产精品久久视频 | 黄色最新网址 | 国产视频在线播放 | 国产福利在线免费观看 | 日韩久久精品一区二区三区 | 国产一级二级三级在线观看 | 99免费| 欧美激情精品久久久久久 | 婷婷新五月 | 久久电影色 | 最新极品jizzhd欧美 | 亚洲成人av电影在线 | 91一区啪爱嗯打偷拍欧美 | 综合婷婷久久 | 91.dizhi永久地址最新 | 国产黄色大片 | 日韩精品久久久 | 久热电影 | 日韩精品一区二区三区免费观看 | 四虎在线免费 | 丁香久久激情 | av高清一区二区三区 | 久久99精品国产91久久来源 | 日日弄天天弄美女bbbb | 国外成人在线视频网站 | 国产精品第三页 | 天天干中文字幕 | 亚洲午夜精品久久久久久久久 | 国产精品一区二区三区视频免费 | 国产精品久久久久久久久久久久 | 久草网站在线观看 | 91黄色影视 | 欧美精品乱码99久久影院 | 91高清免费观看 | 成人永久在线 | 91精品国产网站 | 久久久国产毛片 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 国产 中文 日韩 欧美 | 最近中文字幕第一页 | 国产中文字幕亚洲 | 国产高清精 | 91视频大全 | 精品国产一区二区三区久久久蜜月 | 亚洲精品美女久久久久网站 | 国产精品成人aaaaa网站 | 日本精品久久久久影院 | 在线免费观看视频一区 | 国产午夜免费视频 | 久久精品高清 | 91麻豆福利 | 精品国产一区二区三区四 | 久久国产成人午夜av影院潦草 | 国产黄色精品 | 麻豆免费观看视频 | 狠狠色噜噜狠狠 | 国产黄色精品在线 | 99久久精品一区二区成人 | 337p日本欧洲亚洲大胆裸体艺术 | 中文字幕成人网 | 91视频在线免费看 | 亚洲国产精久久久久久久 | 狠狠躁夜夜躁人人爽超碰91 | 久久久久综合 | 成人免费视频网站在线观看 | 国产区欧美 | 日韩视频中文 | 国产1区2| 国产精品成人免费精品自在线观看 | 少妇性色午夜淫片aaaze | 亚洲精品美女久久久久网站 | 五月天激情视频 | 精品免费视频123区 午夜久久成人 | 日韩精品久久中文字幕 | 9797在线看片亚洲精品 | 国产欧美三级 | 中文字幕视频免费观看 | 日韩av成人在线观看 | 国产精品久久久久久久久久久久久久 | 在线观看国产日韩欧美 | 久久久久国产免费免费 | 久久综合狠狠 | 日日操天天爽 | 国产一区二区高清视频 | 成人av直播| www.午夜| 国产一级片网站 | 午夜精品一区二区三区在线 | av在线直接看 | 98超碰在线观看 | 亚洲成人av免费 | 国产在线观 | 97超碰人人澡人人 | 国产成人精品久久二区二区 | 丁香六月天 | 中文在线资源 | www.五月婷| 欧美狠狠操 | 亚洲毛片视频 | 国产精品白虎 | 日本久久久久久久久久 | 天堂在线一区二区三区 | 欧美激情视频一二三区 | 毛片一级免费一级 | 国产大片黄色 | 成年人免费av网站 | 国产精品免费人成网站 | 日日成人网 | 91丨九色丨91啦蝌蚪老版 | 国产品久精国精产拍 | 日韩电影一区二区在线观看 | 国产亚洲精品免费 | 天天干夜夜爱 | 国产一区国产二区在线观看 | 日韩动漫免费观看高清完整版在线观看 | 亚洲国产精品一区二区久久hs | 免费看一及片 | 日韩免费网站 | 国产91综合一区在线观看 | 97看片| 成人av久久| 精品字幕 | 99re国产 | 91亚洲夫妻 | 精品国产一二区 | 91香蕉嫩草 | 99久久www| 一区二区三区四区精品 | av一区二区三区在线观看 | 国产精品久久一区二区三区不卡 | 摸bbb搡bbb搡bbbb | 日韩电影中文字幕在线观看 | 日本一区二区高清不卡 | 91精品一区二区三区蜜臀 | 国产精品毛片久久 | 手机色站| 久艹视频在线观看 | 欧美色精品天天在线观看视频 | 99热手机在线观看 | 亚洲午夜av久久乱码 | 性色va | 五月婷婷在线观看 | 久久视频免费在线 | 精品美女久久 | 国内精品久久久久久久 | www久久久久 | 国产九九热 | 国产精品你懂的在线观看 | 99久久999久久久精玫瑰 | 黄色毛片视频 | 国产成人福利在线观看 | 91av超碰 | 欧美日韩视频一区二区三区 | 久久精品中文字幕少妇 | 99久久精品费精品 | 在线免费观看麻豆视频 | av日韩中文 | 国产精品久久久久久久久久 | 91av电影网| 日本天天色 | 精品中文字幕视频 | 亚洲国产精品va在线看黑人动漫 | 激情综合网五月婷婷 | 91精品日韩| 美女视频黄的免费的 | 99中文字幕在线观看 | 亚洲黄色在线观看 | 一区二精品 | 午夜国产福利视频 | 日本资源中文字幕在线 | 日日夜夜天天射 | 91色影院| 天天做夜夜做 | 少妇视频一区 | 狠狠色狠狠色综合系列 | 国产精品福利在线播放 | 亚洲视频在线免费观看 | 免费人做人爱www的视 | 亚洲作爱视频 | 精品资源在线 | 久草综合在线观看 | 在线亚洲人成电影网站色www | 色偷偷88888欧美精品久久久 | 亚洲成人在线免费 | 欧美日韩一区二区三区在线免费观看 | 久久久黄色av | 五月婷婷婷婷婷 | 久草综合视频 | 成人h视频在线播放 | 久久久96 | 麻豆精品视频 | 国产亚洲一级高清 | 天天操天天谢 | 久久免费视频这里只有精品 | 国产黄在线看 | 免费看的黄色网 | 日韩av快播电影网 | 久久精品视频中文字幕 | 中字幕视频在线永久在线观看免费 | 三级在线视频播放 | 国产精品99久久久久久人免费 | 日本一区二区三区免费看 | 国产成人免费观看 | 91大神dom调教在线观看 | 国产精品日韩在线播放 | 久热爱 | 色美女在线 | 91九色视频在线 | 欧美91精品国产自产 | 国产精品欧美精品 | 亚洲视频专区在线 | 五月天国产精品 | 在线看日韩 | 狠狠色丁香久久婷婷综 | 日韩在线免费视频 | 久久久久高清毛片一级 | 亚洲午夜精品久久久 | a√天堂资源 | 精品国产一区二区在线 | 中文字幕免费播放 | 中文字幕一区二区三区四区视频 | 色97在线 | 亚洲精品高清视频在线观看 | 久久中文字幕在线视频 | 天天色影院 | 中国精品少妇 | 91精品视频在线播放 | www.狠狠干| 五月天婷婷在线播放 | 午夜99| 美女在线观看网站 | av超碰在线| 国产精品色婷婷 | 欧美性猛片, | 国内精品视频在线 | 亚洲撸撸 | 丁香婷婷深情五月亚洲 | 99热手机在线观看 | 久久精品国产成人精品 | 国产精品99久久久久久大便 | 天天操天 | 色婷婷电影 | 97夜夜澡人人爽人人免费 | 欧美一区成人 | 人人插人人玩 | 大片网站久久 | 久草视频视频在线播放 | 国产精品久久久久久久av电影 | 国产不卡免费 | 久久综合亚洲鲁鲁五月久久 | 国产黄色高清 | 国产一级在线观看 | 久久精品国产99国产 | 久久久麻豆视频 | 国产精品亚洲精品 | 婷婷色中文字幕 | 五月香婷| 国产91精品欧美 | 五月婷婷播播 | 日日夜夜免费精品视频 | 色婷婷av一区二 | av观看久久久 | 日韩r级在线 | 视频在线观看一区 | 日韩免费观看一区二区三区 | 久久精品视频播放 | 午夜天天操 | 2024国产精品视频 | 久久综合五月天婷婷伊人 | 欧美日韩高清在线观看 | 久久久久久久久影院 | 97视频在线观看视频免费视频 | 日日夜夜骑 | 久久激情小视频 | 人人干人人搞 | 最近中文字幕高清字幕在线视频 | 91人人揉日日捏人人看 | 成人97人人超碰人人99 | 一区二区三区污 | a黄在线观看 | 91中文在线观看 | 欧美激情在线看 | 国产第一页在线播放 | 国产精品99久久免费黑人 | 91久久精| 国产精品自产拍在线观看蜜 | 成人午夜电影在线播放 | 久久久久久免费 | 国产精品久久久久久久婷婷 | 亚洲一级电影 | 亚洲最新av网站 | 激情伊人五月天久久综合 | 午夜色大片在线观看 | 欧美一级日韩免费不卡 | 久久婷五月 | 三级av免费 | 久久99精品一区二区三区三区 | 五月婷婷免费 | 亚洲午夜久久久久 | www黄色大片| 99热在线这里只有精品 | 久久久黄色av | 免费在线观看午夜视频 | 久久综合五月天 | 午夜免费视频网站 | 国产午夜视频在线观看 | 婷婷www| 亚洲高清av| 福利一区在线视频 | 免费情趣视频 | 天天操天天操天天干 | 热久久电影 | 日韩av快播电影网 | 亚洲免费a | 日韩免费中文 | 日日夜夜网 | 国产一在线精品一区在线观看 | 日韩免费小视频 | 亚洲国产精品成人综合 | 亚洲国产精品va在线 | 欧美一级特黄aaaaaa大片在线观看 | 在线免费观看麻豆视频 | 日韩二区在线播放 | 黄色一级免费网站 | 亚洲日本三级 | 久草视频精品 | 99精品欧美一区二区蜜桃免费 | 69久久99精品久久久久婷婷 | 在线视频第一页 | 在线观看视频97 | 免费中文字幕 | 亚洲伊人av| 午夜久久久精品 | 国产91aaa | 国产在线国偷精品产拍免费yy | 超碰97免费在线 | 狠狠地日| 国产一级片免费观看 | 丁香导航 | 亚洲欧美日韩一级 | 99视频精品 | 中文字幕日韩国产 | 亚洲精品自在在线观看 | 免费黄在线看 | 国产夫妻自拍av | 亚洲精品乱码久久久久久久久久 | 国内揄拍国内精品 | 国产精彩在线视频 | 九九爱免费视频 | 国产精品一区二区三区视频免费 | 欧美少妇的秘密 | www.福利视频 | 狠狠狠色丁香综合久久天下网 | 亚洲天堂网视频在线观看 | 亚洲精品乱码 | 亚洲综合欧美精品电影 | 色无五月 | 国产一级a毛片视频爆浆 | 黄色特一级片 | a级国产片 | 99热99re6国产在线播放 | 97视频在线观看成人 | 日韩高清不卡一区二区三区 | 日本h视频在线观看 | 久久夜视频| 激情综合亚洲 | 91福利区一区二区三区 | 一区二区三区手机在线观看 | 久久精品麻豆 | 免费能看的黄色片 | 午夜私人影院 | 狠狠操狠狠插 | 在线视频免费观看 | 久久黄色网址 | 国产99久久久国产精品免费看 | 免费a级大片 | 国产剧情在线一区 | 99 久久久久 | 97色综合 | 久久伊人91 | 久草在线免费资源 | 91传媒在线看 | 欧美一区二区视频97 | 亚洲一区二区91 | 日韩欧美视频免费观看 | 国产精品毛片一区视频播 | av免费在线观看网站 | 九九热在线精品 | 麻豆视频国产在线观看 | 天天操夜夜爱 | 最新日韩在线 | 国产色视频一区二区三区qq号 | 免费在线观看av网站 | 久久99视频免费观看 | 91麻豆精品国产 | 久久久鲁 | 九九视频免费在线观看 | 一本一道久久a久久综合蜜桃 | 亚洲涩涩涩| 一区二区不卡高清 | 色婷婷婷 | 最近久乱中文字幕 | 日韩精品在线看 | 免费高清看电视网站 | 久久久亚洲国产精品麻豆综合天堂 | 日韩精品免费一区二区三区 | 成人国产精品久久久久久亚洲 | 国产夫妻自拍av | 黄色h在线观看 | 国产精品一区二区三区电影 | 亚洲国产福利视频 | 97超碰站| 欧美另类交在线观看 | 天天射天天色天天干 | 日本婷婷色 | 久久精品一区二区国产 | 亚洲免费专区 | 国产午夜三级一区二区三桃花影视 | 99在线观看| 精品一区二区三区四区在线 | 在线观看韩国av | 久操久 | 97在线视频观看 | 欧美 日韩 国产 成人 在线 | 8090yy亚洲精品久久 | 有码中文字幕 | 久久国产成人午夜av影院宅 | 日韩专区 在线 | 国产大尺度视频 | 国产成人免费在线观看 | 最近高清中文字幕在线国语5 | 精品少妇一区二区三区在线 | 丁香电影小说免费视频观看 | 日韩一区二区免费在线观看 | 又黄又爽免费视频 | 五月天久久狠狠 | 欧洲精品亚洲精品 | 欧美精品一区二区三区四区在线 | 久久综合精品国产一区二区三区 | 日韩精品一区二区在线观看视频 | 少妇搡bbbb搡bbb搡69 | 日日操日日 | 亚洲少妇激情 | 日本久久久久久久久久 | 国产在线a | 精品亚洲国产视频 | 天天干天天操天天拍 | 国产又粗又硬又长又爽的视频 | 亚洲精品国产精品99久久 | 日韩在线视频不卡 | 91视频国产高清 | 成人免费一级片 | 日韩高清一二三区 | 中文字幕欧美日韩va免费视频 | 久久久久久久久综合 | 色婷婷av一区二 | 国产久草在线观看 | 免费在线观看成人小视频 | 免费视频资源 | 亚洲精品视频在线观看视频 | 亚洲精品永久免费视频 | 手机av在线网站 | 91免费的视频在线播放 | 青草视频在线看 | 亚洲视频电影在线 | 五月综合色 | 日本精品视频在线观看 | 久久免费av电影 | 综合色站导航 | 欧美巨大荫蒂茸毛毛人妖 | 五月天色丁香 | 狠狠地操 | 99在线精品免费视频九九视 | 欧美日韩性生活 | 中文字幕xxxx | 中文字幕一二三区 | 国产精品第一 | av免费在线观看网站 | 97热在线观看 | 中文字幕av免费在线观看 | 中文字幕 第二区 | 91久久久久久国产精品 | 亚洲 欧美日韩 国产 中文 | 成在线播放 | 毛片二区 | 草久久久久 | 久久超级碰视频 | 国产精品久久久久久婷婷天堂 | 91亚洲精品久久久蜜桃网站 | 午夜精品av | 中文字幕一区二区在线观看 | 美女黄濒| 天天添夜夜操 | 国产精品久久久久久久婷婷 | 日韩精品在线播放 | 亚洲精品国产精品乱码在线观看 | 高清av免费一区中文字幕 | 亚洲伦理中文字幕 | 亚洲精品一区二区精华 | 欧美国产大片 | 免费日韩视 | 99爱在线观看 | 免费成人黄色 | 中文在线免费观看 | 一区二区三区免费网站 | 国产精品久久久久久久99 | 日韩美女一级片 | 亚洲综合在 | 久久网址 | 视频一区二区在线 | 国产一区在线看 | 色婷婷色 | 五月婷婷激情 | 久草久 | 99成人免费视频 | 成年人天堂com | 中文字幕黄色网 | 婷婷六月激情 | 国内久久看 | 国产一及片 | 免费h在线观看 | 日b视频国产 | 国产高清精品在线 | 色视频网页 | 国产一区二区三区网站 | 国产91粉嫩白浆在线观看 | 激情开心色 | 精品国精品自拍自在线 | 国产理伦在线 | 国产美女在线免费观看 | 一级黄色av | 婷婷九九| 久久超碰在线 | 91最新视频在线观看 | 婷婷综合导航 | 狠狠色丁香婷婷综合久小说久 | 国产精品国产精品 | 在线观看国产www | 激情网在线观看 | 久久草av| 婷婷5月激情5月 | 欧美福利片在线观看 | 亚洲国产免费av | 91麻豆精品国产91久久久更新时间 | 香蕉在线视频观看 | 超碰在线91| 久久午夜视频 | 欧美国产91 | 午夜久久影院 | 色亚洲网 | 亚洲人精品午夜 | av黄色在线 | 日韩精品免费一区二区三区 | 97精品超碰一区二区三区 | 综合网婷婷 | 免费h漫在线观看 | 国产一级精品视频 | 婷五月天激情 | 欧美性粗大hdvideo | 久久久久久久久久免费视频 | 96亚洲精品久久 | 国产一区成人在线 | 国产xxxx性hd极品 | 99久久久免费视频 | 色橹橹欧美在线观看视频高清 | 久久综合婷婷国产二区高清 | 四虎免费在线观看 | 处女av在线 | av短片在线观看 | 丰满少妇麻豆av | 成人福利在线 | 丝袜网站在线观看 | 最新99热 | 91香蕉视频 mp4 | 在线日韩av | 欧美性色19p | 欧美一二区视频 | 日韩精品一卡 | 91最新地址永久入口 | 亚洲特级毛片 | 久久久国产精品成人免费 | 国产v在线播放 | 欧美成人基地 | 国内久久 | 国产精品久久99综合免费观看尤物 | av夜夜操 | 欧美与欧洲交xxxx免费观看 | 久热爱| 亚洲高清资源 | 国产亚洲观看 | 天天亚洲综合 | 精品国产乱码久久 | 欧美日本不卡高清 | 在线观看日本高清mv视频 | 亚洲va欧美va | 欧美精品一级视频 | 精品麻豆 | 亚洲成人免费观看 | 天天操天天操天天操 | 久久精品—区二区三区 | 免费在线国产 | 欧美精品在线免费 | 中日韩在线 | 免费看一级特黄a大片 | av电影在线观看完整版一区二区 | 日日爽日日操 | av在线观 | 99久久精品免费看国产 | 中文字幕91 | 九九久久精品视频 | 在线免费视频 你懂得 | 国产精品麻豆三级一区视频 | 国产 日韩 在线 亚洲 字幕 中文 | 成年人免费观看在线视频 | 91在线视频观看免费 | 久久天堂网站 | 国产成人性色生活片 | 超碰国产在线播放 | 亚洲精品美女在线 | 97超碰在线播放 | 日韩三级在线观看 | 探花系列在线 | 国产一区二区午夜 | 在线久草视频 | 日本在线视频一区二区三区 | 日韩伦理一区二区三区av在线 | 懂色av一区二区在线播放 | 日女人电影 | 亚洲电影黄色 | av一级一片 | 亚洲另类xxxx | 日韩免费二区 | 99精品久久久久 | 日韩有码专区 | 99精品视频在线观看 | 国产免费大片 | 久久综合色婷婷 | 国产精品成久久久久三级 | 成人中文字幕av | 亚洲va在线va天堂 | 婷婷丁香av | 亚洲自拍偷拍色图 | 日本精品视频一区 | 六月婷婷网 | 99 色| www.香蕉视频 | 天天噜天天色 | 在线观看日本高清mv视频 | 国产无遮挡猛进猛出免费软件 | 国产精品系列在线观看 | 国产一级黄| 日韩狠狠操 | 少妇做爰k8经典 | 黄色av一区二区三区 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 久久久成人精品 | 午夜精品久久久久久久久久久 | 国产免费三级在线观看 | 麻豆精品视频在线观看免费 | 麻豆超碰 | 欧美激情视频三区 | 国产精品12345 | 青草视频在线 | 久久国产二区 | 久久国产区 | 午夜精品久久久久久久久久久久久久 | 日韩免费视频在线观看 | 亚洲va欧美va| 日韩欧美第二页 | 五月婷婷婷婷婷 | 午夜视频免费播放 | 亚洲精品影院在线观看 | 色资源网在线观看 | 日韩电影在线一区二区 | 中文字幕欧美日韩va免费视频 | 六月丁香社区 | av在观看 | 三上悠亚在线免费 | 天天操天天干天天玩 | 国产一区二区在线观看视频 | 国产 视频 久久 | 伊人精品在线 | www.99av| 国产一区二区精 | 日韩在线高清视频 | 国产视 | 日韩大片在线看 | 天天干天天色2020 | 伊人网综合在线观看 | 久久99国产精品自在自在app | 六月丁香婷婷久久 | 中文亚洲欧美日韩 | 国产精品99蜜臀久久不卡二区 | 在线成人一区二区 | 国产成人在线一区 | 91高清完整版在线观看 | 99热国内精品 | 久久全国免费视频 | 九九热免费在线视频 | 97免费在线观看 | 成人免费视频免费观看 | 97国产大学生情侣白嫩酒店 | 欧美在线视频一区二区三区 | 国产成人久久精品77777综合 | 96视频在线 | 日韩免费一二三区 | 久久在线免费视频 | 日韩成年视频 | 日韩中文字幕电影 | 久久免费精品国产 | 黄色片视频免费 | 中文字幕av在线电影 | 午夜电影 电影 | 欧美大jb| 久久字幕 | 国产精品久久99综合免费观看尤物 | 久久综合偷偷噜噜噜色 | 97综合在线 |