我试图在microsoft office Word中创建大约600个报告.文档中填充了数据库中的数据和本地驱动器上的图像.我已经想到,我可以在visual studio 2010中创建一个Word模板项目,并对模板进行编程,这样当您输入单个值(id-number)时,它会自动填写整个文档.
我很有信心这是可能的.唯一的问题是.如何遍历数据库中的所有条目,根据模板打开新文档并设置id-value?
for(int i = 0; i < idnumbers.Count(); i++)
{
Word.Application app = new Word.Application();
Word.Document doc = app.Documents.Add(@"C:\..\WordGenerator\bin\Debug\WordTemplate.dotx");
//input the id-number below: HOW??
doc.SaveAs(FileName: @"c:\temp\test.docx");
}
Run Code Online (Sandbox Code Playgroud)
应用程序应该只运行一次,生成报告,而且不一定要快.它必须易于开发.
这里的问题是,似乎在Word项目之外无法访问DocumentBase对象.替代Microsoft.Office.Interop.Word.Document没有像SelectContentControlsByTitle这样的功能,它允许我查找和设置我的ContentControls.而这正是我需要做的......
这就是我的代码现在将文本插入我的字段:Word.Application app = new Word.Application();
Word.Document doc = app.Documents.Add(@"C:\..\test.dotx");
foreach (Word.ContentControl cc in doc.SelectContentControlsByTitle("MyCCTitle"))
{
cc.Range.Text += "1234";
}
doc.SaveAs(FileName: @"c:\temp\test.docx");
Run Code Online (Sandbox Code Playgroud)
然后我的模板上的事件处理程序在BeforeSave上根据MyCCTitle标题对象中的文本填写文档.
我有一个WCF服务,有时必须返回一个错误.由于某种原因,对我的服务的调用开始超时,并出现以下错误:"在00:00之后等待回复时请求通道超时:59.8906201.增加传递给Request的调用的超时值或增加SendTimeout绑定的值.分配给此操作的时间可能是较长超时的一部分."
检查问题后,出现了一种模式:当服务10次返回故障时,超时开始.所以我创建了一个由以下实现的测试服务:
public string GetData(int value)
{
throw new FaultException("A testerror occured");
}
Run Code Online (Sandbox Code Playgroud)
还有一个测试客户:
protected void RunTestGetData()
{
using (TestServiceReference.Service1Client client
= new WSPerformanceTester.TestServiceReference.Service1Client())
{
try
{
client.GetData(1);
client.Close();
outputWriter.WriteLine(string.Format("Call run in thread {0}: GetData()", Thread.CurrentThread.ManagedThreadId));
outputWriter.Flush();
}
catch (Exception e)
{
client.Abort();
client.Close();
outputWriter.WriteLine(string.Format("Error occured in thread {0}: GetData(): {1}", Thread.CurrentThread.ManagedThreadId, e.Message));
outputWriter.Flush();
}
}
}
Run Code Online (Sandbox Code Playgroud)
只有在服务返回FaultException时才会发生这种情况.如果我抛出正常异常,服务可以在第10次调用后继续运行.显然,我想很好地包装我的异常,所以抛出正常异常并不是一个真正的选择.
为什么我会遇到这些超时异常?在此先感谢任何帮助..