C++操作Word学习笔记(一)

【当前博文转载自:http://www.cppblog.com/codeart/archive/2010/08/31/125430.aspx

c++操作word接口

注意事项:1多用Range,少用Selection,因为Word中,Selection对象只有一个。
【1】开启word
C++操作Word学习笔记(一) _ApplicationPtr word_app;
C++操作Word学习笔记(一)HRESULT hr 
=  word_app.CreateInstance( " Word.Application " , NULL); 
【2】新建一个文档
C++操作Word学习笔记(一) COleVariant vTrue(( short )TRUE),vFalse(( short )FALSE),vOpt(( long )DISP_E_PARAMNOTFOUND, VT_ERROR);
C++操作Word学习笔记(一)DocumentsPtr docs;
C++操作Word学习笔记(一)_DocumentPtr oDoc;
C++操作Word学习笔记(一)docs 
=  word_app -> GetDocuments();
C++操作Word学习笔记(一)doc 
=  docs -> Add(vOpt, vOpt, vOpt, vOpt);  
【3】设置文档的页面布局
C++操作Word学习笔记(一) PageSetupPtr page_setup  =  doc -> GetPageSetup();
C++操作Word学习笔记(一)page_setup
-> PutTopMargin( 0 );
C++操作Word学习笔记(一)page_setup
-> PutBottomMargin( 0 );
C++操作Word学习笔记(一)page_setup
-> PutRightMargin( 0 );
C++操作Word学习笔记(一)page_setup
-> PutLeftMargin( 0 );
【4】插入文本
C++操作Word学习笔记(一) SelectionPtr selection;
C++操作Word学习笔记(一)selection 
=  word_app -> GetSelection();
C++操作Word学习笔记(一)_ParagraphFormatPtr parafmt 
=  selection -> GetParagraphFormat();
C++操作Word学习笔记(一)parafmt
-> PutLineSpacingRule(wdLineSpaceExactly);
C++操作Word学习笔记(一)parafmt
-> PutLineSpacing( 50 );
C++操作Word学习笔记(一)_FontPtr font;
C++操作Word学习笔记(一)font 
=  oSel -> GetFont();
C++操作Word学习笔记(一)font
-> PutBold( 1 );
C++操作Word学习笔记(一)font
-> PutColor(wdColorGreen);
C++操作Word学习笔记(一)font
-> PutSize( 20 );
C++操作Word学习笔记(一)font
-> PutName(_T( " 宋体 " ));
C++操作Word学习笔记(一)selection
-> TypeText( " ABC " );
C++操作Word学习笔记(一)oSel
-> TypeParagraph();
C++操作Word学习笔记(一)oSel
-> TypeText( " 12345678901234567890 " );
C++操作Word学习笔记(一)oSel
-> TypeParagraph();
【5】插入文本框
C++操作Word学习笔记(一) ShapesPtr shapes  =  doc -> GetShapes();
C++操作Word学习笔记(一)ShapePtr textbox 
=   shapspp -> AddTextbox(Office::msoTextOrientationHorizontal,  1 1 100 100 );
【6】文本框中插入文本
 1 C++操作Word学习笔记(一) ShapesPtr shapes  =  doc -> GetShapes();
 2 C++操作Word学习笔记(一)ShapePtr textbox  =   shapspp -> AddTextbox(Office::msoTextOrientationHorizontal,  1 1 100 100 );
 3 C++操作Word学习笔记(一)TextFramePtr textframe  =  textbox -> GetTextFrame();
 4 C++操作Word学习笔记(一)RangePtr range  =  textframe -> GetTextRange();
 5 C++操作Word学习笔记(一) long  insert_before_count  =  range -> Characters -> GetCount();
 6 C++操作Word学习笔记(一)range -> InsertAfter( " TEXT " );
 7 C++操作Word学习笔记(一) if  (insert_before_count  !=   1 )
 8 C++操作Word学习笔记(一)    range -> MoveStart(COleVariant(( long )Word::wdCharacter), COleVariant(insert_before_count - 1 ));
 9 C++操作Word学习笔记(一) if (range  !=   0 )
10 C++操作Word学习笔记(一)C++操作Word学习笔记(一) C++操作Word学习笔记(一) {
11C++操作Word学习笔记(一)    _FontPtr font = range->GetFont();
12C++操作Word学习笔记(一)    font->PutBold(isBold);
13C++操作Word学习笔记(一)    font->PutItalic(isItalic);
14C++操作Word学习笔记(一)    font->PutColor((Word::WdColor)FontColor());
15C++操作Word学习笔记(一)    font->PutSize(FontSize);
16C++操作Word学习笔记(一)    font->PutName(FontType().c_str());
17C++操作Word学习笔记(一)}
【7】设置文本框的属性
1 C++操作Word学习笔记(一) textbox -> GetTextFrame() -> PutAutoSize(Office::msoAutoShape);
2 C++操作Word学习笔记(一)textbox -> GetTextFrame() -> PutMarginBottom( 0 );
3 C++操作Word学习笔记(一)textbox -> GetTextFrame() -> PutMarginTop( 0 );
4 C++操作Word学习笔记(一)textbox -> GetTextFrame() -> PutMarginLeft( 0 );
5 C++操作Word学习笔记(一)textbox -> GetTextFrame() -> PutMarginRight( 0 );
6 C++操作Word学习笔记(一)textbox -> GetLine() -> PutVisible(Office::msoFalse);
7 C++操作Word学习笔记(一)textbox -> GetFill() -> PutTransparency( 1 );
【8】插入图片,这里需要注意,必须得先用InlineShape,这样可以把图片插入到指定的页中,不然,所有的图片只在第一页。
 1 C++操作Word学习笔记(一) ShapesPtr shapes  =  m_WordDoc -> GetShapes();
 2 C++操作Word学习笔记(一)InlineShapesPtr inline_shapes  =  selection_doc -> GetRange() -> GetInlineShapes();
 3 C++操作Word学习笔记(一)InlineShapePtr inline_shape  =  inline_shapes -> AddPicture(“picture_path”, COleVariant(( long ) 0 ), COleVariant(( long ) 1 ));
 4 C++操作Word学习笔记(一)ShapePtr shape  =  inline_shape -> ConvertToShape();
 5 C++操作Word学习笔记(一)shape -> PutWidth(width);
 6 C++操作Word学习笔记(一)shape -> PutHeight(hehight());
 7 C++操作Word学习笔记(一)shape -> PutTop(Y);
 8 C++操作Word学习笔记(一)shape -> PutLeft(X);
 9 C++操作Word学习笔记(一) if (shape -> GetType()  ==  Office::msoPicture)
10 C++操作Word学习笔记(一)C++操作Word学习笔记(一) C++操作Word学习笔记(一) {
11C++操作Word学习笔记(一)    Word::WrapFormatPtr wrapp = shape->GetWrapFormat();
12C++操作Word学习笔记(一)    wrapp->PutType(Word::wdWrapBehind);
13C++操作Word学习笔记(一)}

14 C++操作Word学习笔记(一)
【9】插入直线
1 C++操作Word学习笔记(一) ShapesPtr shapes  =  doc -> GetShapes();
2 C++操作Word学习笔记(一)Word::ShapePtr line  =  shapes -> AddLine(x1,y1, x2,y2);
3 C++操作Word学习笔记(一) if  (line -> GetType()  ==  Office::msoLine)
4 C++操作Word学习笔记(一)C++操作Word学习笔记(一) C++操作Word学习笔记(一) {
5C++操作Word学习笔记(一)    Word::LineFormatPtr LineFmt = line->GetLine();
6C++操作Word学习笔记(一)    LineFmt->PutWeight(lr->weight_);
7C++操作Word学习笔记(一)}
【10】插入分隔符
C++操作Word学习笔记(一) selection -> InsertBreak(COleVariant(( long )wdColumnBreak));
C++操作Word学习笔记(一)selection
-> InsertBreak(COleVariant(( long )wdSectionBreakContinuous));
C++操作Word学习笔记(一)selection
-> InsertBreak(COleVariant(( long )wdPageBreak));

【11】设置栏目个数和栏目的宽度
这里一定要注意add函数的逻辑
1 C++操作Word学习笔记(一) SectionsPtr word_sections  =  doc -> GetSections();
2 C++操作Word学习笔记(一) long  num  =  word_sections -> GetCount();
3 C++操作Word学习笔记(一)SectionPtr word_section  =  word_sections -> Item(num - 1 );
4 C++操作Word学习笔记(一)PageSetupPtr page_setup  =  word_section -> GetPageSetup();
5 C++操作Word学习笔记(一)TextColumnsPtr text_cols  =  page_setup > GetTextColumns();
6 C++操作Word学习笔记(一)text_cols -> PutEvenlySpaced( 0 );
7 C++操作Word学习笔记(一)text_cols -> Add(COleVariant(col_width), COleVariant(( long ) 0 ), COleVariant(( long ) false ));
【12】插入表格
 1 C++操作Word学习笔记(一) TablesPtr tables  =  oSel -> GetTables();    
 2 C++操作Word学习笔记(一)TablePtr table  =  tables -> Add(oSel -> GetRange(),  2 5 );
 3 C++操作Word学习笔记(一)    
 4 C++操作Word学习笔记(一)BordersPtr bords  =  table -> GetBorders();
 5 C++操作Word学习笔记(一)bords -> PutOutsideLineStyle(wdLineStyleSingle);
 6 C++操作Word学习笔记(一)bords -> PutInsideLineStyle(wdLineStyleSingle);
 7 C++操作Word学习笔记(一) for  ( int  i  =   1 ; i <= 2 ; i ++ )
 8 C++操作Word学习笔记(一)C++操作Word学习笔记(一) C++操作Word学习笔记(一) {
 9C++操作Word学习笔记(一)    for (int j = 1; j<=5; j++)
10C++操作Word学习笔记(一)C++操作Word学习笔记(一)    C++操作Word学习笔记(一){
11C++操作Word学习笔记(一)        table->Cell(i,j)->GetRange()->PutText("20");
12C++操作Word学习笔记(一)    }

13C++操作Word学习笔记(一)}

14 C++操作Word学习笔记(一)
15 C++操作Word学习笔记(一)CellPtr cell  =  table -> Cell( 1 , 1 );
16 C++操作Word学习笔记(一)cell -> Merge(table -> Cell( 1 , 2 ));
【13】保存文档并退出
1 C++操作Word学习笔记(一) COleVariant vTrue(( short )TRUE),vFalse(( short )FALSE),vOpt(( long )DISP_E_PARAMNOTFOUND, VT_ERROR);
2 C++操作Word学习笔记(一)_DocumentPtr active_doc; 
3 C++操作Word学习笔记(一)active_doc  =  word_app -> GetActiveDocument();
4 C++操作Word学习笔记(一)active_doc -> SaveAs(COleVariant( " D:\\doc1.doc " ), 
5 C++操作Word学习笔记(一)                   COleVariant(( short ) 0 ),
6 C++操作Word学习笔记(一)                   vFalse, COleVariant( "" ), vTrue, COleVariant( "" ),
7 C++操作Word学习笔记(一)                   vFalse, vFalse, vFalse, vFalse, vFalse);
8 C++操作Word学习笔记(一)word_app -> Quit(vOpt, vOpt, vOpt);

在word优秀的构架中还有许许多多的接口,上面只是举例实现一个普通的文档,希望对大家有用。

 

你可能感兴趣的:(CPP与Word)