ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 8438|回复: 2

请问C#自动生成word文件,请问怎么控制写入的位置呢?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-8-11 09:41 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册


   我用C#自动生成一个word文件,我的想法是按照先后的顺序
   先写 标题"title" 然后写一行字"first ",然后写入一个表格,在表格之后
   在写一段文字"next"。可是程序的结果和我想象不一样。
   结果是先是 "title" 然后 "first" "last"  然后才是那个表格.
  代码如下:

   //创建Word
   object Nothing=System.Reflection.Missing.Value;  
   //取得Word文件保存路径  
   object filename=@"c:\\testtable.doc";
   object unit; 
   object count; //移动数
   object extend; 
   object DefaultTableBehavior=Word.WdDefaultTableBehavior.wdWord9TableBehavior;
   object AutoFitBehavior=Word.WdAutoFitBehavior.wdAutoFitFixed;
       extend = Word.WdMovementType.wdExtend;
   unit = Word.WdUnits.wdLine;
   count=1;
  
   //创建一个名为WordApp的组件对象  
   Word.Application WordApp=new Word.ApplicationClass();  

   //创建一个名为WordDoc的文档对象  
   Word.Document WordDoc=WordApp.Documents.Add(ref Nothing,ref Nothing,ref Nothing,ref Nothing);  
     
   //标题头
   WordApp.Selection.Font.Bold=1;//StrToint((Word.WdConstants.wdToggle));
   WordApp.Selection.Font.Size=16;
   WordApp.Selection.Font.Name="隶书";
   WordApp.Selection.ParagraphFormat.Alignment=Word.WdParagraphAlignment.wdAlignParagraphCenter;
   WordApp.Selection.TypeText("title");
   WordApp.Selection.TypeParagraph();

   WordApp.Selection.TypeText("first");
   WordApp.Selection.TypeParagraph();
   
   //增加一表格
   int i,j;
   i=60;j=3;
   Word.Table table=WordDoc.Tables.Add(WordApp.Selection.Range,i,j,ref DefaultTableBehavior ,ref AutoFitBehavior);//行 列
   for (i=1;i<=60 ;i++ )
   {
    for(j=1;j<=3;j++)
     table.Cell(i,j).Range.Text=i.ToString()+j.ToString();

   }   
          
   WordApp.Selection.TypeParagraph();
   WordApp.Selection.TypeText("last");

   WordDoc.Paragraphs.Last.Range.Text="欢迎参加学习!";

TA的精华主题

TA的得分主题

发表于 2006-8-11 11:58 | 显示全部楼层

我用WORD VBA示例了一个,供参考:

Sub ExampleCtoWord()
    Dim myWordApp As New Word.Application, myDoc As Word.Document
    Dim myRange As Word.Range, myTable As Table, oCell As Word.Cell
    myWordApp.Visible = True
    Set myDoc = myWordApp.Documents.Add
    With myDoc
        Set myRange = .Range(.Content.End - 1, .Content.End - 1)
        With myRange
            .InsertAfter "title" & Chr(13)
            .Font.Size = 16
            .Font.Name = "隶书"
            .ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter
        End With
        Set myRange = .Range(.Content.End - 1, .Content.End - 1)
        myRange.InsertAfter "First" & Chr(13)
        Set myRange = .Range(.Content.End - 1, .Content.End - 1)
        Set myTable = .Tables.Add(myRange, 2, 5)
        With myTable
            For Each oCell In .Range.Cells
                oCell.Range.Text = "TEST"
            Next
        End With
        Set myRange = .Range(.Content.End - 1, .Content.End - 1)
        myRange.InsertAfter "Last" & Chr(13)
        .Content.InsertAfter "欢迎参加学习!"
    End With
End Sub

TA的精华主题

TA的得分主题

发表于 2006-8-11 17:20 | 显示全部楼层
可以事先做好一个Word文档,固定的内容先输进去,不固定的内容在其要输入的位置插入书签,保存为模板文件(.dot),编写程序时,新建word文档时指定以该模板新建,然后通过书签定位要输入文字的位置。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-16 20:45 , Processed in 0.036156 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表