请问有谁用c#操作过word的域?

金茧 发布于 2012/07/03 16:29
阅读 1K+
收藏 0
C#
一种做报表的方式是,首先创建word模版,然后用程序来更新已经定义在word里面的域。就相当于将word中定义的域替换为程序中的变量值?请问有谁做过这种东西?可否给点代码提示?谢谢!
加载中
0
0
瑞新
瑞新
前提:
导入COM库:Microsoft word 11.0 Object Library.
引用里面就增加了:



创建新Word
             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  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);

导入模板
             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);


.添加新表
             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);

.表插入行
             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);

.单元格合并
             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 ));

.单元格分离
             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);

            
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);

通过段落控制插入
             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();
返回顶部
顶部