求助!C#对word的操作,将datagrid的数据保存的word文档的模板中! 谢谢!谁有案例可否给小弟发一份,谢谢了. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 /// /// 打开Word文档,并且返回对象wDoc,wDoc/// /// 完整Word文件路径+名称 /// 返回的Word.Document wDoc对象/// 返回的Word.Application对象public static void CreateWordDocument(string FileName,ref Word.Document wDoc,ref Word.Application WApp){if(FileName == "") return;Word.Document thisDocument = null;Word.FormFields formFields = null;Word.Application thisApplication = new Word.ApplicationClass();thisApplication.Visible = false;thisApplication.Caption = "";thisApplication.Options.CheckSpellingAsYouType = false;thisApplication.Options.CheckGrammarAsYouType = false;Object filename = FileName;Object ConfirmConversions = false;Object ReadOnly = true;Object AddToRecentFiles = false;Object PasswordDocument = System.Type.Missing;Object PasswordTemplate = System.Type.Missing;Object Revert = System.Type.Missing;Object WritePasswordDocument = System.Type.Missing;Object WritePasswordTemplate = System.Type.Missing;Object Format = System.Type.Missing;Object Encoding = System.Type.Missing;Object Visible = System.Type.Missing;Object OpenAndRepair = System.Type.Missing;Object DocumentDirection = System.Type.Missing;Object NoEncodingDialog = System.Type.Missing;Object XMLTransform = System.Type.Missing;try{Word.Document wordDoc =thisApplication.Documents.Open(ref filename, ref ConfirmConversions,ref ReadOnly, ref AddToRecentFiles, ref PasswordDocument, ref PasswordTemplate,ref Revert,ref WritePasswordDocument, ref WritePasswordTemplate, ref Format,ref Encoding, ref Visible, ref OpenAndRepair, ref DocumentDirection,ref NoEncodingDialog,ref XMLTransform);thisDocument = wordDoc;wDoc = wordDoc;WApp = thisApplication;formFields = wordDoc.FormFields;}catch(Exception ex){MessageBox.Show(ex.Message);}} 保存wDoc.Application.ActiveDocument.Save() http://www.pconline.com.cn/pcedu/empolder/net/cs/0507/674430.html http://www.pconline.com.cn/pcedu/empolder/net/cs/0507/674430.html /// /// 打开Word文档,并且返回对象wDoc,wDoc /// /// 完整Word文件路径+名称 /// 返回的Word.Document wDoc对象 /// 返回的Word.Application对象 public static void CreateWordDocument(string FileName,ref Word.Document wDoc,ref Word.Application WApp) { if(FileName == "") return; Word.Document thisDocument = null; Word.FormFields formFields = null; Word.Application thisApplication = new Word.ApplicationClass(); thisApplication.Visible = true; thisApplication.Caption = ""; thisApplication.Options.CheckSpellingAsYouType = false; thisApplication.Options.CheckGrammarAsYouType = false; Object filename = FileName; Object ConfirmConversions = false; Object ReadOnly = true; Object AddToRecentFiles = false; Object PasswordDocument = System.Type.Missing; Object PasswordTemplate = System.Type.Missing; Object Revert = System.Type.Missing; Object WritePasswordDocument = System.Type.Missing; Object WritePasswordTemplate = System.Type.Missing; Object Format = System.Type.Missing; Object Encoding = System.Type.Missing; Object Visible = System.Type.Missing; Object OpenAndRepair = System.Type.Missing; Object DocumentDirection = System.Type.Missing; Object NoEncodingDialog = System.Type.Missing; Object XMLTransform = System.Type.Missing; try { Word.Document wordDoc = thisApplication.Documents.Open(ref filename, ref ConfirmConversions, ref ReadOnly, ref AddToRecentFiles, ref PasswordDocument, ref PasswordTemplate, ref Revert,ref WritePasswordDocument, ref WritePasswordTemplate, ref Format, ref Encoding, ref Visible, ref OpenAndRepair, ref DocumentDirection, ref NoEncodingDialog, ref XMLTransform ); thisDocument = wordDoc; wDoc = wordDoc; WApp = thisApplication; formFields = wordDoc.FormFields; } catch(Exception ex) { MessageBox.Show(ex.Message); } } #endregion 调用上面静态方法,打开目标文件并且把DataGrid中数据填充到对应Word标签中去 ///#region Word填充数据(For Example) /// /// Word填充数据 /// private void WordLoadData() { Word.Document wDoc=null; Word.Application wApp=null; sysFun.CreateWordDocument("E:\\监测报告(new).dot",ref wDoc,ref wApp); //对标签"C"进行填充 object bkmC="C"; if(wApp.ActiveDocument.Books.Exists("C") == true) { wApp.ActiveDocument.Books.get_Item (ref bkmC).Select(); } wApp.Selection.TypeText(this.txt1.Text); object bkmG = "TWaterTable3"; object unit; object count; //移动数 object extend; extend = Word.WdMovementType.wdExtend; unit = Word.WdUnits.wdCell; //把DataGrid中数据填充到标签TWaterTable3上 if(wApp.ActiveDocument.Books.Exists("TWaterTable3") == true) { wApp.ActiveDocument.Books.get_Item (ref bkmG).Select(); for(int i=0;i { if(i==0) { count=1; } else { count=0; } //需填充5列数据 wApp.Selection.Move(ref unit,ref count); wApp.Selection.TypeText(gridEX1.GetRow(i).Cells[0].Text); count=1; wApp.Selection.Move(ref unit,ref count); wApp.Selection.TypeText(gridEX1.GetRow(i).Cells[1].Text); wApp.Selection.Move(ref unit,ref count); wApp.Selection.TypeText(gridEX1.GetRow(i).Cells[2].Text); wApp.Selection.Move(ref unit,ref count); wApp.Selection.TypeText(gridEX1.GetRow(i).Cells[3].Text); wApp.Selection.Move(ref unit,ref count); wApp.Selection.TypeText(gridEX1.GetRow(i).Cells[4].Text); //换行 wApp.Selection.MoveRight(ref unit,ref count,ref extend); } } } #endregion 然后就OK了,在对标签表控制要注意列循环和换行. 急啊。水晶报表关于打印问题???? 菜鳥求助???C# OracleClient連接問題 多控件事件的焦点问题 高级循环,求高手,欢迎大家发言讨论 寻求 nhibernate 视频 datagridview里有让最后一列自动扩展到填满grid剩余部分的属性吗? VC和VB怎么调用C#的组件呀 请问c#能做IIS防盗链软件吗?是什么原理 请教一个WCF 绑定问题,谢谢 谁帮我解决用datagrid 实现数据库记录的增加、删除和存盘功能?100分 http请求返回内容解析 [100分求助]C#里怎么添加动态代码啊,代码是在一个文本框内生成的,怎么编译文本框内的代码啊?
/// 打开Word文档,并且返回对象wDoc,wDoc
///
/// 完整Word文件路径+名称
/// 返回的Word.Document wDoc对象
/// 返回的Word.Application对象
public static void CreateWordDocument(string FileName,ref Word.Document wDoc,ref Word.Application WApp)
{
if(FileName == "") return;
Word.Document thisDocument = null;
Word.FormFields formFields = null;
Word.Application thisApplication = new Word.ApplicationClass();
thisApplication.Visible = false;
thisApplication.Caption = "";
thisApplication.Options.CheckSpellingAsYouType = false;
thisApplication.Options.CheckGrammarAsYouType = false;Object filename = FileName;
Object ConfirmConversions = false;
Object ReadOnly = true;
Object AddToRecentFiles = false;Object PasswordDocument = System.Type.Missing;
Object PasswordTemplate = System.Type.Missing;
Object Revert = System.Type.Missing;
Object WritePasswordDocument = System.Type.Missing;
Object WritePasswordTemplate = System.Type.Missing;
Object Format = System.Type.Missing;
Object Encoding = System.Type.Missing;
Object Visible = System.Type.Missing;
Object OpenAndRepair = System.Type.Missing;
Object DocumentDirection = System.Type.Missing;
Object NoEncodingDialog = System.Type.Missing;
Object XMLTransform = System.Type.Missing;try
{
Word.Document wordDoc =
thisApplication.Documents.Open(ref filename, ref ConfirmConversions,
ref ReadOnly, ref AddToRecentFiles, ref PasswordDocument, ref PasswordTemplate,
ref Revert,ref WritePasswordDocument, ref WritePasswordTemplate, ref Format,
ref Encoding, ref Visible, ref OpenAndRepair, ref DocumentDirection,
ref NoEncodingDialog,ref XMLTransform);thisDocument = wordDoc;
wDoc = wordDoc;
WApp = thisApplication;
formFields = wordDoc.FormFields;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}}
/// 打开Word文档,并且返回对象wDoc,wDoc
///
/// 完整Word文件路径+名称
/// 返回的Word.Document wDoc对象
/// 返回的Word.Application对象
public static void CreateWordDocument(string FileName,ref Word.Document wDoc,ref Word.Application WApp)
{
if(FileName == "") return;
Word.Document thisDocument = null;
Word.FormFields formFields = null;
Word.Application thisApplication = new Word.ApplicationClass();
thisApplication.Visible = true;
thisApplication.Caption = "";
thisApplication.Options.CheckSpellingAsYouType = false;
thisApplication.Options.CheckGrammarAsYouType = false; Object filename = FileName;
Object ConfirmConversions = false;
Object ReadOnly = true;
Object AddToRecentFiles = false; Object PasswordDocument = System.Type.Missing;
Object PasswordTemplate = System.Type.Missing;
Object Revert = System.Type.Missing;
Object WritePasswordDocument = System.Type.Missing;
Object WritePasswordTemplate = System.Type.Missing;
Object Format = System.Type.Missing;
Object Encoding = System.Type.Missing;
Object Visible = System.Type.Missing;
Object OpenAndRepair = System.Type.Missing;
Object DocumentDirection = System.Type.Missing;
Object NoEncodingDialog = System.Type.Missing;
Object XMLTransform = System.Type.Missing; try
{
Word.Document wordDoc =
thisApplication.Documents.Open(ref filename, ref ConfirmConversions,
ref ReadOnly, ref AddToRecentFiles, ref PasswordDocument, ref PasswordTemplate,
ref Revert,ref WritePasswordDocument, ref WritePasswordTemplate, ref Format,
ref Encoding, ref Visible, ref OpenAndRepair, ref DocumentDirection,
ref NoEncodingDialog, ref XMLTransform ); thisDocument = wordDoc;
wDoc = wordDoc;
WApp = thisApplication;
formFields = wordDoc.FormFields;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
} }
#endregion
调用上面静态方法,打开目标文件并且把DataGrid中数据填充到对应Word标签中去
///#region Word填充数据(For Example)
///
/// Word填充数据
///
private void WordLoadData()
{
Word.Document wDoc=null;
Word.Application wApp=null;
sysFun.CreateWordDocument("E:\\监测报告(new).dot",ref wDoc,ref wApp); //对标签"C"进行填充
object bkmC="C";
if(wApp.ActiveDocument.Books.Exists("C") == true)
{
wApp.ActiveDocument.Books.get_Item
(ref bkmC).Select();
}
wApp.Selection.TypeText(this.txt1.Text);
object bkmG = "TWaterTable3";
object unit;
object count; //移动数
object extend;
extend = Word.WdMovementType.wdExtend;
unit = Word.WdUnits.wdCell;
//把DataGrid中数据填充到标签TWaterTable3上
if(wApp.ActiveDocument.Books.Exists("TWaterTable3") == true)
{
wApp.ActiveDocument.Books.get_Item
(ref bkmG).Select(); for(int i=0;i {
if(i==0)
{
count=1;
}
else
{
count=0;
}
//需填充5列数据
wApp.Selection.Move(ref unit,ref count);
wApp.Selection.TypeText(gridEX1.GetRow(i).Cells[0].Text);
count=1; wApp.Selection.Move(ref unit,ref count);
wApp.Selection.TypeText(gridEX1.GetRow(i).Cells[1].Text); wApp.Selection.Move(ref unit,ref count);
wApp.Selection.TypeText(gridEX1.GetRow(i).Cells[2].Text); wApp.Selection.Move(ref unit,ref count);
wApp.Selection.TypeText(gridEX1.GetRow(i).Cells[3].Text); wApp.Selection.Move(ref unit,ref count);
wApp.Selection.TypeText(gridEX1.GetRow(i).Cells[4].Text);
//换行
wApp.Selection.MoveRight(ref unit,ref count,ref extend);
}
}
}
#endregion
然后就OK了,在对标签表控制要注意列循环和换行.