C#生成复杂格式的WORD

来源:互联网 发布:店铺推广软件 编辑:程序博客网 时间:2024/05/17 22:53

要添加COM引用,Microfoft Word Object Library

要加入using Microsoft.Office.Interop.Word;

private void TTest()
    {
        string message = "";
        try
        {
            Object Nothing = System.Reflection.Missing.Value;
            Directory.CreateDirectory("C:/CNSI"); //创建文件所在目录
            string name = "CNSI_" + DateTime.Now.ToShortDateString() + ".doc";
            object filename = "C://CNSI//" + name; //文件保存路径
            //创建Word文档
            Application WordApp = new ApplicationClass();
            Document WordDoc = WordApp.Documents.Add(ref Nothing, ref Nothing, ref Nothing, ref Nothing);

            WordApp.Selection.ParagraphFormat.LineSpacing = 23f;//设置文档的行间距

 

 

            //移动焦点并换行
            object count = 14;
            object WdLine = WdUnits.wdLine;//换一行;
            WordApp.Selection.MoveDown(ref WdLine, ref count, ref Nothing);//移动焦点
            WordApp.Selection.TypeParagraph();//插入段落
            WordApp.Selection.TypeParagraph();//插入段落

            WordDoc.Paragraphs.First.Range.Text = "暂住人口信息表";
            WordDoc.Paragraphs.First.Range.Font.Name = "黑体";
            WordDoc.Paragraphs.First.Range.Bold = 2;
            WordDoc.Paragraphs.First.Range.Font.Size = 20;
            WordDoc.Paragraphs.First.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;


            //文档中创建表格
            Microsoft.Office.Interop.Word.Table newTable =WordDoc.Tables.Add(WordApp.Selection.Range, 20, 7, ref Nothing, refNothing);
            //设置表格样式
            newTable.Borders.OutsideLineStyle = WdLineStyle.wdLineStyleSingle;
            newTable.Borders.InsideLineStyle = WdLineStyle.wdLineStyleSingle;
            newTable.Columns[1].Width = 40f;
            newTable.Columns[2].Width = 95f;
            newTable.Columns[3].Width = 60f;
            newTable.Columns[4].Width = 85f;
            newTable.Columns[5].Width = 60f;
            newTable.Columns[6].Width = 65f;
            newTable.Columns[7].Width = 50f;


            //填充表格内容
            newTable.Cell(1, 1).Range.Text = "基本信息";
            newTable.Cell(1, 1).Range.Bold = 2;

            //合并单元格
            newTable.Cell(1, 1).Merge(newTable.Cell(8, 1));
            WordApp.Selection.Cells.VerticalAlignment = WdCellVerticalAlignment.wdCellAlignVerticalCenter;//垂直居中
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;//水平居中

            newTable.Cell(1, 2).Range.Text = "姓名";
            newTable.Cell(1, 2).Range.Bold = 2;
            newTable.Cell(1, 2).Select();
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;

            newTable.Cell(1, 4).Range.Text = "性别";
            newTable.Cell(1, 4).Range.Bold = 2;
            newTable.Cell(1, 4).Select();
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;

            newTable.Cell(1, 6).Range.Text = "照片";
            newTable.Cell(1, 6).Range.Bold = 2;
            newTable.Cell(1, 6).Merge(newTable.Cell(1, 7));
            newTable.Cell(1, 6).Select();
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;


            //2
            newTable.Cell(2, 2).Range.Text = "别名";
            newTable.Cell(2, 2).Range.Bold = 2;
            newTable.Cell(2, 2).Select();
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;

            newTable.Cell(2, 4).Range.Text = "民族";
            newTable.Cell(2, 4).Range.Bold = 2;
            newTable.Cell(2, 4).Select();
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;

            //3
            newTable.Cell(3, 2).Range.Text = "身份证号";
            newTable.Cell(3, 2).Range.Bold = 2;
            newTable.Cell(3, 2).Select();
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;

            //4
            newTable.Cell(4, 2).Range.Text = "联系方式";
            newTable.Cell(4, 2).Range.Bold = 2;
            newTable.Cell(4, 2).Select();
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;

 


            newTable.Cell(2, 6).Merge(newTable.Cell(2, 7));
            newTable.Cell(3, 6).Merge(newTable.Cell(3, 7));
            newTable.Cell(4, 6).Merge(newTable.Cell(4, 7));
            newTable.Cell(5, 6).Merge(newTable.Cell(5, 7));
            newTable.Cell(2, 6).Merge(newTable.Cell(5, 6));

            newTable.Cell(3, 3).Merge(newTable.Cell(3, 5));
            newTable.Cell(4, 3).Merge(newTable.Cell(4, 5));

            newTable.Cell(5, 2).Range.Text = "出生日期";
            newTable.Cell(5, 2).Range.Bold = 2;
            newTable.Cell(5, 2).Select();
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;

            newTable.Cell(5, 4).Range.Text = "来本地时间";
            newTable.Cell(5, 4).Range.Bold = 2;
            newTable.Cell(5, 4).Select();
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;

            newTable.Cell(6, 2).Range.Text = "常住户口地址";
            newTable.Cell(6, 2).Range.Bold = 2;
            newTable.Cell(6, 2).Select();
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;

            newTable.Cell(7, 2).Range.Text = "暂住地址";
            newTable.Cell(7, 2).Range.Bold = 2;
            newTable.Cell(7, 2).Select();
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;

            newTable.Cell(8, 2).Range.Text = "现服务处所";
            newTable.Cell(8, 2).Range.Bold = 2;
            newTable.Cell(8, 2).Select();
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;

            newTable.Cell(6, 3).Merge(newTable.Cell(6, 7));
            newTable.Cell(7, 3).Merge(newTable.Cell(7, 7));
            newTable.Cell(8, 3).Merge(newTable.Cell(8, 7));


            newTable.Cell(9, 1).Range.Text = "公安局信息";
            newTable.Cell(9, 1).Range.Bold = 2;
            newTable.Cell(9, 1).Merge(newTable.Cell(14, 1));
            newTable.Cell(9, 1).Select();
            WordApp.Selection.Cells.VerticalAlignment = WdCellVerticalAlignment.wdCellAlignVerticalCenter;//垂直居中
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;//水平居中

            newTable.Cell(9, 2).Range.Text = "身高";
            newTable.Cell(9, 2).Range.Bold = 2;
            newTable.Cell(9, 2).Select();
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;

            newTable.Cell(9, 4).Range.Text = "文化程序";
            newTable.Cell(9, 4).Range.Bold = 2;
            newTable.Cell(9, 4).Select();
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;

            newTable.Cell(9, 6).Range.Text = "政治面貌";
            newTable.Cell(9, 6).Range.Bold = 2;
            newTable.Cell(9, 6).Select();
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;

            newTable.Cell(10, 2).Range.Text = "婚姻状态";
            newTable.Cell(10, 2).Range.Bold = 2;
            newTable.Cell(10, 2).Select();
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;

            newTable.Cell(10, 4).Range.Text = "职业";
            newTable.Cell(10, 4).Range.Bold = 2;
            newTable.Cell(10, 4).Select();
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;

            newTable.Cell(10, 6).Range.Text = "现从事职业";
            newTable.Cell(10, 6).Range.Bold = 2;
            newTable.Cell(10, 6).Select();
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;

            newTable.Cell(12, 2).Range.Text = "服务处所负责人";
            newTable.Cell(12, 2).Range.Bold = 2;
            newTable.Cell(12, 2).Select();
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;

            newTable.Cell(12, 4).Range.Text = "暂住证签发日期";
            newTable.Cell(12, 4).Range.Bold = 2;
            newTable.Cell(12, 4).Select();
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;

            newTable.Cell(12, 6).Range.Text = "有效期";
            newTable.Cell(12, 6).Range.Bold = 2;
            newTable.Cell(12, 6).Select();
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;


            newTable.Cell(11, 2).Range.Text = "暂住事由";
            newTable.Cell(11, 2).Range.Bold = 2;
            newTable.Cell(11, 2).Select();
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;

            newTable.Cell(11, 3).Merge(newTable.Cell(11, 7));

            newTable.Cell(13, 2).Range.Text = "注解原因";
            newTable.Cell(13, 2).Range.Bold = 2;
            newTable.Cell(13, 2).Select();
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;

            newTable.Cell(14, 2).Range.Text = "函调情况";
            newTable.Cell(14, 2).Range.Bold = 2;
            newTable.Cell(14, 2).Select();
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;

            newTable.Cell(13, 6).Range.Text = "注销日期";
            newTable.Cell(13, 6).Range.Bold = 2;
            newTable.Cell(13, 6).Select();
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;

            newTable.Cell(14, 6).Range.Text = "连接标识";
            newTable.Cell(14, 6).Range.Bold = 2;
            newTable.Cell(14, 6).Select();
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;

            newTable.Cell(13, 3).Merge(newTable.Cell(13, 5));
            newTable.Cell(14, 3).Merge(newTable.Cell(14, 5));

            newTable.Cell(15, 1).Range.Text = "携带15周岁及以下人口";
            newTable.Cell(15, 1).Range.Bold = 2;
            newTable.Cell(15, 1).Merge(newTable.Cell(19, 1));
            newTable.Cell(15, 1).Select();
            WordApp.Selection.Cells.VerticalAlignment = WdCellVerticalAlignment.wdCellAlignVerticalCenter;//垂直居中
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;//水平居中

            newTable.Cell(15, 2).Range.Text = "关系";
            newTable.Cell(15, 2).Range.Bold = 2;
            newTable.Cell(15, 2).Select();
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;

            newTable.Cell(15, 3).Range.Text = "姓名";
            newTable.Cell(15, 3).Range.Bold = 2;
            newTable.Cell(15, 3).Select();
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;

            newTable.Cell(15, 4).Range.Text = "性别";
            newTable.Cell(15, 4).Range.Bold = 2;
            newTable.Cell(15, 4).Select();
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;

            newTable.Cell(15, 5).Range.Text = "出生日期";
            newTable.Cell(15, 5).Range.Bold = 2;
            newTable.Cell(15, 5).Select();
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;

            newTable.Cell(15, 6).Range.Text = "出生日期";
            newTable.Cell(15, 6).Range.Bold = 2;
            newTable.Cell(15, 6).Select();
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;

            newTable.Cell(20, 1).Range.Text = "备注";
            newTable.Cell(20, 1).Range.Bold = 2;
            newTable.Cell(20, 1).Select();
            object bzhight = 80;
            newTable.Cell(20, 1).SetHeight(ref bzhight, WdRowHeightRule.wdRowHeightAtLeast);
            WordApp.Selection.Cells.VerticalAlignment = WdCellVerticalAlignment.wdCellAlignVerticalCenter;//垂直居中
            WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;//水平居中
            newTable.Cell(20, 2).Merge(newTable.Cell(20, 7));

 

 

 

            //文件保存
            WordDoc.SaveAs(ref filename, ref Nothing, ref Nothing, refNothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, refNothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, refNothing, ref Nothing, ref Nothing);
            WordDoc.Close(ref Nothing, ref Nothing, ref Nothing);
            WordApp.Quit(ref Nothing, ref Nothing, ref Nothing);
            message = name + "文档生成成功,以保存到C:CNSI下";
        }
        catch
        {
            message = "文件导出异常!";
        }