09
2019
01

c# word 操作系列之C# 根据Word模版生成Word文件

添加com Microsoft word 11.0 Object Library 引用

09
2019
01

c# word 操作系列之Word代码实现

参考资料:

http://www.cnblogs.com/wngwz/archive/2004/08/19/34678.html

https://www.cnblogs.com/xh6300/p/5915717.html

09
2019
01

c# word 操作系列之Paragraph对象

public void ManipulateRangeText() 
{
    // Retrieve contents of first and second paragraphs
    string  str1 = ThisDocument.Paragraphs[1].Range.Text;
    string  str2 = ThisDocument.Paragraphs[2].Range.Text;
    
// 两个自然段相互交换
    Word.Range rng1 = ThisDocument.Paragraphs[1].Range;
    rng1.Text = str2;
 
    Word.Range rng2 = ThisDocument.Paragraphs[2].Range;
    rng2.Text = str1;
 
    // 显示结果
    rng1.Select();
    MessageBox.Show(rng1.Text, "ManipulateRangeText");
    rng2.Select();
MessageBox.Show(rng2.Text, "ManipulateRangeText");
    Object unit = Word.WdUnits.wdCharacter;
    Object count = -1;
    rng1.MoveEnd(ref unit, ref count);
    // Write new text for paragraph 1.
rng1.Text = "new content for paragraph 1.";
 
rng2.Text = "new content for paragraph 2.";
    // Pause to display the results.
    rng1.Select();
    MessageBox.Show(rng1.Text, "ManipulateRangeText");
    rng2.Select();
    MessageBox.Show(rng2.Text, "ManipulateRangeText");
 
unit = Word.WdUnits.wdCharacter;
   count = 1;
   rng1.MoveEnd(ref unit, ref count);
   // Note that in C#, you must specify 
  // both parameters--it's up to you 
  // to calculate the length of the range.
  unit = Word.WdUnits.wdCharacter;
  count = rng2.Characters.Count;
  rng2.Delete(ref unit, ref count);
  // C#
  rng1.Text = str1;
  // C#
  rng1.InsertAfter(str2);
  rng1.Select();
}


09
2019
01

c# word 操作系列之Range对象

Range对象也代表一个区域。与使用Selection相比较,Range的优势在于

09
2019
01

c# word 操作系列之Selection 对象

Selection对象代表当前选择的area。在word应用程序中,假如你要让一段字符变成黑体,你必须首先选择该段文字,然后应用样式。在代码中也是同样的道理,你要首先定义selection的区域然后进行操作。你可以使用Selection对象在文档中进行选择,格式化,操作,添加文本等。

Selection对象是始终存在的,如果当前没有选择任何东西,那么它代表一个insertion point。因此,在操作Seleciton之前知道它包含的内容是非常重要的。

Tips:    Selection对象与Range对象有很多成员是类似的,它们之间的区别是Selection对象指的是现实在图形界面的区域,而Range对象代表的区域是不可见的(当然通过调用方法可以使其可见)

09
2019
01

c# word 操作系列之Close 关闭word文档

Close 关闭word文档

09
2019
01

c# word 操作系列之Save 保存word文档

//Save 保存word文档
// 保存所有文档
Object noPrompt = true;
Object originalFormat = Type.Missing;
ThisApplication.Documents.Save(ref noPrompt, ref originalFormat);
 
// C#保存当前文档
ThisApplication.ActiveDocument.Save();
// 保存指定名称的文档
Object file = "MyNewDocument.doc";
ThisApplication.Documents.get_Item(ref file).Save();

 SaveAs 另存为

09
2019
01

c# word 操作系列之Open 打开word文档

Open 打开word文档

09
2019
01

c# word 操作系列之打开,关闭与新建文档

Add           新建word文档

09
2019
01

c# word 操作系列之Word书签使用

public void AddDocModel()
        {
 
            killWinWordProcess();
            wordApp = new ApplicationClass();
            wordApp.DisplayAlerts = WdAlertLevel.wdAlertsNone;
            wordApp.Visible = false;
            object missing = System.Reflection.Missing.Value;
            object templateName = Application.StartupPath + @"\Report";//最终的word文档需要写入的位置
            object ModelName = Application.StartupPath + @"\Report\ReportModel_Stand.doc";//word模板的位置
            object count = 1;
            object WdLine = Microsoft.Office.Interop.Word.WdUnits.wdLine;//换一行;
            wordDoc = wordApp.Documents.Open(ref ModelName, ref missing, ref missing,
               ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
               ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
               ref missing);//打开word模板
 
            //在书签处插入文字
            object oStart = "PatName";//word中的书签名 
            Range range = wordDoc.Bookmarks.get_Item(ref oStart).Range;//表格插入位置 
            range.Text = "这里是您要输入的内容";//在书签处插入文字内容
 
            //在书签处插入表格
            oStart = "PatInfo";//word中的书签名 
            range = wordDoc.Bookmarks.get_Item(ref oStart).Range;//表格插入位置      
            MSWord.Table tab_Pat = wordDoc.Tables.Add(range, 2, 4, ref missing, ref missing);//开辟一个2行4列的表格
            tab_Pat.Range.Font.Size = 10.5F;
            tab_Pat.Range.Font.Bold = 0;
           
            tab_Pat.Columns[1].Width = 50;
            tab_Pat.Columns[2].Width = 65;
            tab_Pat.Columns[3].Width = 40;
            tab_Pat.Columns[4].Width = 40;
           
            tab_Pat.Cell(1, 1).Range.Text = "病历号";
            tab_Pat.Cell(1, 2).Range.Text = "PatientNO";
            tab_Pat.Cell(1, 3).Range.Text = "身高";
            tab_Pat.Cell(1, 4).Range.Text = "Height";
 
            tab_Pat.Cell(2, 1).Range.Text = "姓名";
            tab_Pat.Cell(2, 2).Range.Text ="PatientName";
            tab_Pat.Cell(2, 3).Range.Text = "体重";
            tab_Pat.Cell(2, 4).Range.Text = "Weight";
 
 
            //保存word
            object format = WdSaveFormat.wdFormatDocument;//保存格式 
            wordDoc.SaveAs(ref templateName, ref format, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
            //关闭wordDoc,wordApp对象              
            object SaveChanges = WdSaveOptions.wdSaveChanges;
            object OriginalFormat = WdOriginalFormat.wdOriginalDocumentFormat;
            object RouteDocument = false;
            wordDoc.Close(ref SaveChanges, ref OriginalFormat, ref RouteDocument);
            wordApp.Quit(ref SaveChanges, ref OriginalFormat, ref RouteDocument);
        }
 
 
// 杀掉winword.exe进程          
        public void killWinWordProcess()
        {
            System.Diagnostics.Process[] processes = System.Diagnostics.Process.GetProcessesByName("WINWORD"); 
            foreach (System.Diagnostics.Process process in processes) 
            {
                bool b = process.MainWindowTitle == ""; 
                if (process.MainWindowTitle == "") 
                {
                    process.Kill(); 
                } 
            }
        }

最困扰我们的欲望,其一是爱情,其二是性。当我们所渴望的真的变成现实的时候,我们会发现,原来它并非那么华丽,有时还让我们觉得充满了极强的欺骗性。