C#导出成WORD文档

/// <summary>

/// 导出WORD文档

/// </summary>

/// <param name="SaveWordName">用于接受SaveFileDialog传过来的保存文件的名称</param>

/// <param name="MyDGV">要导出的表</param>

private void ExportWord(string SaveWordName, DataGridView MyDGV)

{

try

{

//新建文档

Word.Application newapp = new Word.Application();

Word.Document newdoc;

object nothing = System.Reflection.Missing.Value; //用于作为函数的默认参数

newdoc = newapp.Documents.Add(ref nothing, ref nothing, ref nothing, ref nothing); //生成一个word文档

newapp.Visible = true; //是否显示word程序界面

//页面设置

newdoc.PageSetup.PaperSize = Word.WdPaperSize.wdPaperA4;

newdoc.PageSetup.Orientation = Word.WdOrientation.wdOrientPortrait;

newdoc.PageSetup.TopMargin = 57.0f;

newdoc.PageSetup.BottomMargin = 57.0f;

newdoc.PageSetup.LeftMargin = 57.0f;

newdoc.PageSetup.RightMargin = 57.0f;

newdoc.PageSetup.HeaderDistance = 30.0f; //页眉位置

//设置页眉

//newapp.ActiveWindow.View.Type = Word.WdViewType.wdOutlineView; //视图样式

//newapp.ActiveWindow.View.SeekView = Word.WdSeekView.wdSeekPrimaryHeader; //进入页眉设置,其中页眉边距在页面设置中已完成

//newapp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight;

//插入页眉图片

//string headerfile = "x:\\xxxx.jpg";

////this.outpicture(headerfile, Properties.Resources.header);

//Word.InlineShape shape1 = newapp.ActiveWindow.ActivePane.Selection.InlineShapes.AddPicture(headerfile, ref nothing, ref nothing, ref nothing);

//shape1.Height = 30;

//shape1.Width = 80;

//newapp.ActiveWindow.ActivePane.Selection.InsertAfter("青蓝医院");

//去掉页眉的那条横线

//newapp.ActiveWindow.ActivePane.Selection.ParagraphFormat.Borders[Microsoft.Office.Interop.Word.WdBorderType.wdBorderBottom].LineStyle = Word.WdLineStyle.wdLineStyleNone;

//newapp.ActiveWindow.ActivePane.Selection.Borders[Microsoft.Office.Interop.Word.WdBorderType.wdBorderBottom].Visible = false;

//newapp.ActiveWindow.ActivePane.View.SeekView = Word.WdSeekView.wdSeekMainDocument; // 退出页眉设置

//添加页码

//Word.PageNumbers pns = newapp.Selection.Sections[1].Headers[Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterEvenPages].PageNumbers;

//pns.NumberStyle = Word.WdPageNumberStyle.wdPageNumberStyleNumberInDash;

//pns.HeadingLevelForChapter = 0;

//pns.IncludeChapterNumber = false;

//pns.ChapterPageSeparator = Word.WdSeparatorType.wdSeparatorHyphen;

//pns.RestartNumberingAtSection = false;

//pns.StartingNumber = 0;

//object pagenmbetal = Word.WdPageNumberAlignment.wdAlignPageNumberCenter;

//object first = true;

//newapp.Selection.Sections[1].Footers[Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterEvenPages].PageNumbers.Add(ref pagenmbetal, ref first);

//文字设置(Selection表示当前选择集,如果当前没有选择对象,则指对光标所在处进行设置)

newapp.Selection.Font.Size = 14;

newapp.Selection.Font.Bold = 0;

newapp.Selection.Font.Color = Word.WdColor.wdColorBlack;

newapp.Selection.Font.Name = "宋体";

//段落设置

newapp.Selection.ParagraphFormat.LineSpacingRule = Word.WdLineSpacing.wdLineSpaceExactly;

newapp.Selection.ParagraphFormat.LineSpacing = 20;

newapp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft;

newapp.Selection.ParagraphFormat.FirstLineIndent = 30;

//newdoc.Content.InsertAfter(PatientDataToFile.Properties.Resources.PreviewWords);

//插入图片

newapp.Selection.ParagraphFormat.LineSpacingRule = Word.WdLineSpacing.wdLineSpaceSingle;

newapp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;

object LinkToFile = false;

object SaveWithDocument = true;

object Anchor = newapp.Selection.Range;

if (picFilePath != "")

{

string picname = picFilePath;

newdoc.InlineShapes.AddPicture(picname, ref LinkToFile, ref SaveWithDocument, ref Anchor);

}

//newdoc.InlineShapes[1].Height = 200; //图片大小

//newdoc.InlineShapes[1].Width = 200;

newdoc.Content.InsertAfter("\n");

newapp.Selection.EndKey(ref nothing, ref nothing); //半光标移到文末

newapp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;

newapp.Selection.Font.Size = 10;

newapp.Selection.TypeText("图1\n");

newapp.Selection.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight;

//插入表格

Word.Table table = newdoc.Tables.Add(newapp.Selection.Range, MyDGV.Rows.Count, MyDGV.Columns.Count, ref nothing, ref nothing);

for (int i = 0; i < MyDGV.ColumnCount; i++)

{

table.Cell(1, i + 1).Range.Text = MyDGV.Columns[i].HeaderText; //表头

}

for (int i = 0; i < MyDGV.Rows.Count - 1; i++) //表中的数据

{

for (int j = 0; j < MyDGV.Columns.Count; j++)

{

string S;

if (MyDGV.Rows[i].Cells[j].Value == null)

{

S = "";

}

else

{

S = MyDGV.Rows[i].Cells[j].Value.ToString();

}

table.Cell(i + 2, j + 1).Range.Text = MyDGV.Rows[i].Cells[j].Value.ToString();

}

}

if (SaveWordName != "") //保存

{

try

{

newdoc.Saved = true;

newdoc.SaveAs(SaveWordName, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing,

ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing,

ref nothing, ref nothing);

}

catch (Exception ex)

{

MessageBox.Show("导出文件时出错,文件可能正被打开!\n" + ex.Message);

}

}

object saveOption = Word.WdSaveOptions.wdSaveChanges;

newdoc.Close(ref nothing, ref nothing, ref nothing);

newapp.Application.Quit(ref saveOption, ref nothing, ref nothing);

}

catch (Exception ex)

{

MessageBox.Show("出错:" + ex);

}

}